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.
100 lines
3.3 KiB
100 lines
3.3 KiB
# -*- coding: utf-8 -*-
|
|
from city.models import City
|
|
from country.models import Country
|
|
from django.core.urlresolvers import reverse
|
|
from django.test import TestCase
|
|
from django.utils.translation import ugettext as _
|
|
from functions.views_help import get_side_items
|
|
|
|
|
|
class ConferenceByTest(object):
|
|
"""Функционал 'абстрактного' класса ConferenceBy"""
|
|
def setUp(self):
|
|
self.response = self.client.get(self.url)
|
|
|
|
def test_template(self):
|
|
self.assertTemplateUsed(
|
|
self.response,
|
|
'client/conference/conference_by.html'
|
|
)
|
|
|
|
def test_is_available(self):
|
|
self.assertEqual(self.response.status_code, 200)
|
|
|
|
def test_titles(self):
|
|
self.assertContains(self.response, self.title1)
|
|
self.assertContains(self.response, self.title2)
|
|
|
|
def test_link(self):
|
|
link = '/conference/%s' % (self.catalog, )
|
|
self.assertContains(self.response, link)
|
|
|
|
def test_queryset(self):
|
|
obj_list = self.response.context[-1].get('object_list')
|
|
for obj in obj_list:
|
|
self.assertContains(
|
|
self.response, obj.name
|
|
)
|
|
self.assertContains(
|
|
self.response, obj.url
|
|
)
|
|
|
|
class CanFilterAndSidePopular(object):
|
|
"""Функционал can_filter and side_popular in get_context_data"""
|
|
def test_can_filter(self):
|
|
text = 'ВЫБРАТЬ ПО КРИТЕРИЯМ:'
|
|
can_filter = self.response.context[-1].get('can_filter', None)
|
|
if can_filter is False:
|
|
self.assertNotContains(self.response, text)
|
|
elif can_filter is True:
|
|
self.assertContains(self.response, text)
|
|
|
|
def test_side_popular(self):
|
|
side_popular = get_side_items('conf', self.model)
|
|
for popular in side_popular:
|
|
self.assertContains(self.response, popular.get('url'))
|
|
self.assertContains(self.response, popular.get('name'))
|
|
|
|
|
|
class ConferenceByCountryTest(ConferenceByTest, CanFilterAndSidePopular, TestCase):
|
|
url = reverse('conference_country')
|
|
title1 = _(u'По странам')
|
|
title2 = _(u'Коференции мира по странам')
|
|
catalog = 'country/'
|
|
model = Country
|
|
|
|
|
|
class ConferenceByThemeTest(ConferenceByTest, TestCase):
|
|
url = reverse('conference_theme')
|
|
title1 = _(u'По тематикам')
|
|
title2 = _(u'Коференции мира по тематикам')
|
|
catalog = 'theme/'
|
|
|
|
|
|
class ConferenceByTagTest(ConferenceByTest, TestCase):
|
|
url = reverse('conference_tag')
|
|
title1 = _(u'По тегам')
|
|
title2 = _(u'Коференции мира по тегам')
|
|
catalog = 'tag/'
|
|
|
|
|
|
class ConferenceByCityTest(ConferenceByTest, CanFilterAndSidePopular, TestCase):
|
|
url = reverse('conference_city')
|
|
title1 = _(u'По городам')
|
|
title2 = _(u'Коференции мира по городам')
|
|
catalog = 'city/'
|
|
model = City
|
|
|
|
|
|
class ConferenceCatalogTest(object):
|
|
def test_template(self):
|
|
self.assertTemplateUsed(
|
|
self.response,
|
|
'client/conference/catalog.html'
|
|
)
|
|
|
|
|
|
# class ConferenceCountryCatalogTest(ConferenceCatalogTest, TestCase):
|
|
# def setUp(self):
|
|
# url = reverse('conference_country_catalog', args=[])
|
|
# self.response = self.client.get(url)
|
|
|