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
141
142
143
144
145
146
147
148
149
150
# -*- 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 cms.test_utils.testcases import CMSTestCase
from cms.plugin_rendering import render_plugin
from cms.api import create_page, add_plugin, publish_page
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:
summary_field = cls._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',
template='page.html',
language='en', published=True,
reverse_id='home', in_navigation=True)
self.page = create_page(title='News page',
template='page.html', parent=home,
language='en', published=True, apphook='NewsApphook',
reverse_id='newspage', in_navigation=True)
self.placeholder = self.page.placeholders.get(slot='main')
self.plugin = add_plugin(
self.placeholder, 'NewsPlugin', 'en',
title = 'News',
numitems = 1,
with_pager = True,
page_link = None,)
self.plugin.save()
self.newsPlugin = NewsPlugin()
self.page = publish_page(self.page, self.super_user, 'en')
self.placeholder = self.page.placeholders.get(slot='main')
def test_01_cmsplugin_context(self):
context = self.get_context(self.page.get_absolute_url(), page=self.page)
self.newsPlugin.render(context, self.plugin, self.placeholder)
self.assertIn('newsset', context)
self.assertEqual(context['newsset'][0].pk, 7)
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_cmsplugin_disable_pager(self):
context = self.get_context(self.page.get_absolute_url(), page=self.page)
plugin = copy(self.plugin)
plugin.with_pager = False
self.newsPlugin.render(context, plugin, self.placeholder)
self.assertIn('newsset', context)
with self.assertRaises(AttributeError):
getattr(context['newsset'], 'has_previous')
with self.assertRaises(AttributeError):
getattr(context['newsset'], 'paginator')
def test_03_cmsplugin_numitems(self):
context = self.get_context(self.page.get_absolute_url(), page=self.page)
plugin = copy(self.plugin)
plugin.numitems = 2
self.newsPlugin.render(context, plugin, self.placeholder)
self.assertIn('newsset', context)
self.assertEqual(context['newsset'].paginator.num_pages, 2)
def test_04_cmsplugin_html(self):
context = self.get_context(self.page.get_absolute_url(), page=self.page)
self.newsPlugin.render(context, self.plugin, self.placeholder)
html = render_plugin(
context,
self.newsPlugin,
self.placeholder,
self.newsPlugin.render_template)
self.assertIn('<a href="/news-page/2020/01/01/news-7/">News 7</a>', html)
self.assertIn('<a class="next" href="?page=2">Next news</a>', html)
def test_05_app_view_detail_200(self):
"""
Test if generic day views return right informations.
"""
c = Client()
r = c.get('/news-page/2005/07/15/news-6/')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.context['news'].pk, 6)
def test_06_app_view_detail_404(self):
"""
Test if generic day views return a 404 with an URL with a date without
any news.
"""
c = Client()
r = c.get('/news-page/1985/07/02/my-birthday/')
self.assertEqual(r.status_code, 404)
def test_07_app_view_detail_404_not_published(self):
"""
Test if generic day views return a 404 with an URL with a not published
news
"""
c = Client()
r = c.get('/news-page/2014/02/22/news-2/')
self.assertEqual(r.status_code, 404)