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