Newer
Older
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.test import TestCase, Client
from django.core.paginator import EmptyPage
from django.utils.translation import activate
from utils import create_tests_data, delete_tests_data
from .models import News, NewsComplete, NewsExtended
class NewsboxI18NModelsTests(TestCase):
def setUp(self):
create_tests_data('myapp_i18n')
def tearDown(self):
delete_tests_data('myapp_i18n')
# fixtures = ['tests_data.json', ]
def test_01_manager_published(self):
"""
Test if we only get really published news via the manager
"""
newsClasses = [
News, NewsComplete, NewsExtended
]
for cls in newsClasses:
returned_ids = list(cls.objects.published().values_list(
'id', flat=True).order_by('id'))
self.assertEqual((cls.__name__, returned_ids),
(cls.__name__, [1, 4, 6, 7, ]))
def test_02_extra_translated_fields(self):
news = NewsExtended.objects.get(pk=1)
self.assertEqual(list(news.get_available_languages()), ['en', 'fr'])
news_fr = NewsExtended.objects.language('fr').get(pk=1)
news_en = NewsExtended.objects.language('en').get(pk=1)
self.assertEqual(
'Contenu additionnel de l\'actualité 1')
self.assertEqual(
'Extra content of the news 1')
self.assertEqual(news_en.general_field, news_fr.general_field)
def test_03_view_archive_200(self):
"""
Test if generic archive view return right informations.
"""
c = Client()
r = c.get('/en/myapp_i18n/news/')
self.assertEqual(r.status_code, 200)
self.assertIn('newsset', r.context)
self.assertEqual(r.context['newsset'][0].pk, 7)
self.assertEqual(r.context['newsset'].number, 1)
self.assertEqual(r.context['newsset'].paginator.num_pages, 4)
self.assertFalse(r.context['newsset'].has_previous())
self.assertTrue(r.context['newsset'].has_next())
self.assertRaises(EmptyPage, r.context['newsset'].previous_page_number)
self.assertEqual(r.context['newsset'].next_page_number(), 2)
def test_04_view_detail_200(self):
"""
Test if generic day views return right informations.
"""
c = Client()
r = c.get('/en/myapp_i18n/news/2005/07/15/news-6/')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.context['news'].pk, 6)
def test_05_view_detail_404_wrong_date(self):
Test if generic day views return a 404 with an URL with an invalide date
r = c.get('/en/myapp_i18n/news/1984/04/01/news-6/')
def test_06_view_detail_404_wrong_slug(self):
Test if generic day views return a 404 with an URL with an invalid slug
r = c.get('/en/myapp_i18n/news/2005/07/15/my-birthday/')
def test_07_view_detail_404_not_published(self):
"""
Test if generic day views return a 404 with an URL with a not published
news
"""
r = c.get('/en/myapp_i18n/news/2005/07/15/news-2/')
self.assertEqual(r.status_code, 404)
def test_08_get_absolute_url(self):
news6 = News.objects.get(pk=6)
expected_results = {'en': '/en/myapp_i18n/news/2005/07/15/news-6/',
'fr': '/fr/myapp_i18n/news/2005/07/15/actualite-6/', }
for lang in expected_results:
activate(lang)
self.assertEqual(news6.get_absolute_url(), expected_results[lang])
def test_09_view_detail_translated(self):
r_en = c.get('/en/myapp_i18n/news/2005/07/15/news-6/')
r_fr = c.get('/fr/myapp_i18n/news/2005/07/15/actualite-6/')
self.assertEqual(r_fr.context['news'].pk, r_en.context['news'].pk)
self.assertEqual(r_fr.context['news'].newsbox_title, 'Actualité 6')
self.assertEqual(r_en.context['news'].newsbox_title, 'News 6')