Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from copy import copy
from django.test import TestCase, Client
from django.contrib.auth.models import User
from django.core.paginator import EmptyPage
from django.utils.translation import activate
from cms.test_utils.testcases import CMSTestCase
from cms.plugin_rendering import render_plugin
from cms.api import create_page, add_plugin, publish_page, create_title
from djangocms_text_ckeditor.fields import HTMLField
from .models import News, NewsComplete, NewsExtended, NewsPlugin as NewsPluginModel
from .cms_plugins import NewsPlugin
class NewsboxAbstractModelsTests(TestCase):
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_summary_as_html_field(self):
"""
Test if newsbox_summary field is HTMLField
"""
newsClasses = [
News, NewsComplete, NewsExtended,
]
for cls in newsClasses:
try:
transmodel = cls.translations.related.model
summary_field = transmodel._meta.get_field('newsbox_summary')
except:
self.fail('%s is not properly configured' % cls)
self.assertIsInstance(summary_field,HTMLField)
class NewsboxPageIntegrationTests(CMSTestCase):
fixtures = ['tests_data.json',]
def setUp(self):
self.super_user = User(username="test", is_staff=True, is_active=True, is_superuser=True)
self.super_user.set_password("test")
self.super_user.save()
home = create_page(title='Home', slug='home',
template='page.html',
language='en', published=True,
reverse_id='home', in_navigation=True)
create_title('fr', 'Accueil', home, slug='accueil')
home.publish('en')
home.publish('fr')
self.page = create_page(title='News page', slug='news-page',
template='page.html', parent=home,
language='en', published=True, apphook='NewsApphook',
reverse_id='newspage', in_navigation=True)
create_title('fr', 'page Actualités', self.page, slug='page-actualites')
self.placeholder = self.page.placeholders.get(slot='main')
self.plugin_en = add_plugin(
self.placeholder, 'NewsPlugin', 'en',
title = 'News',
numitems = 1,
with_pager = True,
page_link = None,)
self.plugin_en.save()
self.plugin_fr = add_plugin(
self.placeholder, 'NewsPlugin', 'fr',
title = 'Actualités',
numitems = 1,
with_pager = True,
page_link = None,)
self.plugin_fr.save()
self.page.publish('en')
self.page.publish('fr')
self.page.reload()
self.newsPlugin = NewsPlugin()
self.placeholder = self.page.placeholders.get(slot='main')
def test_01_cmsplugin_context(self):
expected_results = {'en':'News 7', 'fr':'Actualité 7',}
for lang in expected_results:
activate(lang)
context = self.get_context(
self.page.get_absolute_url(), page=self.page)
self.newsPlugin.render(
context,
getattr(self, 'plugin_%s' % lang),
self.placeholder)
self.assertIn('newsset', context)
self.assertEqual(context['newsset'][0].pk, 7)
self.assertEqual(
context['newsset'][0].newsbox_title,
expected_results[lang])
self.assertEqual(context['newsset'].number, 1)
self.assertEqual(context['newsset'].paginator.num_pages, 4)
self.assertFalse(context['newsset'].has_previous())
self.assertTrue(context['newsset'].has_next())
self.assertRaises(EmptyPage, context['newsset'].previous_page_number)
self.assertEqual(context['newsset'].next_page_number(), 2)
def test_02_wrong_language_404(self):
c = Client()
r_en = c.get('/en/news-page/2020/01/01/news-7/')
r_fr = c.get('/fr/page-actualites/2020/01/01/actualite-7/')
r_en_and_fr = c.get('/en/news-page/2020/01/01/actualite-7/')
self.assertEqual(r_en.status_code, 200)
self.assertEqual(r_fr.status_code, 200)
self.assertEqual(r_en_and_fr.status_code, 404)
def test_03_get_absolute_url(self):
news7 = News.objects.get(pk=7)
expected_results = {
'en':'/en/news-page/2020/01/01/news-7/',
'fr':'/fr/page-actualites/2020/01/01/actualite-7/',}
for lang in expected_results:
activate(lang)
self.assertEqual(news7.get_absolute_url(), expected_results[lang])