You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

257 lines
8.2 KiB

import datetime
from django.core.urlresolvers import reverse, NoReverseMatch
from django.test import TestCase
from expobanner.models import Paid, Banner
from stats_collector.models import ObjectStats
from theme.models import Tag, Theme
from ..models import Conference, Speaker, Statistic, TimeTable
from city.models import City
from country.models import Country
from events.models import TargetAudience
class ConferenceTest(TestCase):
def setUp(self):
self.conference = Conference.objects.create(
name='New Conference',
data_begin=datetime.datetime.now(),
data_end=datetime.timedelta(24)+datetime.datetime.now(),
country=Country.objects.all()[0],
city=City.objects.all()[0],
url='new-conference',
services=b'0001000'
)
def test_a_conference_create(self):
conference_count = Conference.objects.all().count()
Conference.objects.create(
name='New Conference',
data_begin=datetime.datetime.now(),
data_end=datetime.timedelta(24)+datetime.datetime.now(),
country=Country.objects.all()[0],
city=City.objects.all()[0]
)
new_conference_count = Conference.objects.all().count()
self.assertEqual(conference_count + 1, new_conference_count)
def test_save_conference_info(self):
name = 'New Conference'
datetime_now = datetime.datetime.now()
data_begin = datetime_now
data_end = datetime.timedelta(24) + datetime_now
country = Country.objects.all()[0]
city = City.objects.all()[0]
new_conference = Conference.objects.create(
name=name,
data_begin=data_begin,
data_end=data_end,
country=country,
city=city
)
self.assertEqual(name, new_conference.name)
self.assertEqual(data_begin, new_conference.data_begin)
self.assertEqual(data_end, new_conference.data_end)
self.assertEqual(country, new_conference.country)
self.assertEqual(city, new_conference.city)
def test_method_unicode(self):
self.assertEqual(
str(self.conference),
self.conference.lazy_translation_getter(
'name', unicode(self.conference.pk))
)
def test_method_get_news_url(self):
self.assertEqual(
self.conference.get_news_url(),
reverse('news_conference', kwargs={'slug': self.conference.url})
)
def test_method_get_audience(self):
self.assertFalse(self.conference.get_audience())
self.conference.audience.add(
TargetAudience.objects.create(title='All'))
audience = TargetAudience.objects.filter(title='All')[0]
self.assertIn(audience, self.conference.get_audience())
def test_method_get_calendar_url(self):
self.assertEqual(
self.conference.get_calendar_url(),
reverse('conference_add_calendar', args=[self.conference.id])
)
def test_method_get_visit_url(self):
self.assertEqual(
self.conference.get_visit_url(),
reverse(
'events:event_visit',
args=['conference', self.conference.id]
)
)
def test_method_tags(self):
self.assertFalse(self.conference.tags())
theme = Theme.objects.create(
name='Theme name', main_title='Theme title'
)
tag = Tag.objects.create(
name='Tag name', main_title='Tag title', theme=theme
)
self.conference.tag.add(tag)
self.assertIn(tag, self.conference.tags())
def test_method_get_index_text(self):
self.assertIn(
self.conference.name,
self.conference.get_index_text()
)
title = 'Conf Title'
self.conference.main_title = title
self.conference.save()
self.assertIn(title, self.conference.get_index_text())
theme_name = 'Theme name'
theme = Theme.objects.create(
name=theme_name, main_title='Theme title'
)
tag_name = 'Tag name'
tag = Tag.objects.create(
name=tag_name, main_title='Tag title', theme=theme
)
self.conference.tag.add(tag)
self.assertIn(tag_name, self.conference.get_index_text())
self.conference.theme.add(theme)
self.assertIn(theme_name, self.conference.get_index_text())
def test_method_upload_photo_url(self):
self.assertEqual(
reverse('conference_upload_photo', args=[self.conference.id]),
self.conference.upload_photo_url()
)
def test_method_clicks(self):
with self.assertRaises(AttributeError):
self.conference.clicks()
ticket_url = 'ticket_url/'
ticket = Banner.objects.create_for_paid(
self.conference, ticket_url, 'tickets')
official_url = 'official_url/'
official = Banner.objects.create_for_paid(
self.conference, official_url, 'official')
paid = Paid.objects.create(
tickets=ticket, official=official, catalog=ticket)
self.conference.paid_new = paid
self.conference.save()
self.assertEqual(self.conference.clicks(), 0)
self.client.get(ticket.get_click_link())
self.assertEqual(self.conference.clicks(), 1)
self.client.get(official.get_click_link())
self.assertEqual(self.conference.clicks(), 2)
def test_method_get_paid_change_url(self):
try:
self.conference.get_paid_change_url()
except NoReverseMatch:
pass
ticket = Banner.objects.create_for_paid(
self.conference, 'ticket_url', 'tickets')
official = Banner.objects.create_for_paid(
self.conference, 'official_url', 'official')
paid = Paid.objects.create(
tickets=ticket, official=official, catalog=official)
self.conference.paid_new = paid
self.conference.save()
self.assertEqual(
self.conference.get_paid_change_url(),
reverse('confbanner-update_paid',
args=[self.conference.paid_new.id])
)
def test_method_get_objectstat_views(self):
self.assertEqual(
self.conference.get_objectstat_views(),
sum(ObjectStats.objects.filter(
conference=self.conference).values_list('value', flat=True))
)
class SpeakerTest(TestCase):
def test_create_speaker(self):
speacers = Speaker.objects.all().count()
Speaker.objects.create(fullname='Hgangu Piter')
speacers_plus_one = Speaker.objects.all().count()
self.assertEqual(speacers + 1, speacers_plus_one)
def test_method_unicode(self):
fullname = 'Hgangu Piter'
speaker = Speaker.objects.create(fullname=fullname)
self.assertEqual(str(speaker), fullname)
class StatisticTest(TestCase):
def test_create_statistic(self):
stats = Statistic.objects.all().count()
conf = Conference.objects.create(
name='New Conference',
data_begin=datetime.datetime.now(),
data_end=datetime.timedelta(24)+datetime.datetime.now(),
country=Country.objects.all()[0],
city=City.objects.all()[0]
)
Statistic.objects.create(
conference=conf,
year=datetime.datetime.now().year,
countries='Monaco'
)
stats_plus_one = Statistic.objects.all().count()
self.assertEqual(stats + 1, stats_plus_one)
class TimeTableTest(TestCase):
def test_create_timetable(self):
tables = TimeTable.objects.all().count()
conf = Conference.objects.create(
name='New Conference',
data_begin=datetime.datetime.now(),
data_end=datetime.timedelta(24) + datetime.datetime.now(),
country=Country.objects.all()[0],
city=City.objects.all()[0]
)
TimeTable.objects.create(
conference=conf,
begin=datetime.datetime.now(),
end=datetime.timedelta(24) + datetime.datetime.now(),
name='All times'
)
tables_plus_one = TimeTable.objects.all().count()
self.assertEqual(
tables + 1, tables_plus_one
)