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

# -*- 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)