This repository has been archived by the owner on Jun 29, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
test_templatetags.py
89 lines (82 loc) · 3.29 KB
/
test_templatetags.py
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
from django.test import TestCase
from django.template import Template, Context, TemplateSyntaxError
from django.contrib.auth.models import AnonymousUser
from unittest.mock import MagicMock
from kawaz.core.personas.tests.factories import PersonaFactory
from ..models import Announcement
from .factories import AnnouncementFactory
class AnnouncementsTemplateTagTestCase(TestCase):
def setUp(self):
self.announcements = dict(
public=AnnouncementFactory(pub_state='public'),
protected=AnnouncementFactory(pub_state='protected'),
draft=AnnouncementFactory(pub_state='draft'),
)
self.users = dict(
adam=PersonaFactory(username='adam', role='adam'),
seele=PersonaFactory(username='seele', role='seele'),
nerv=PersonaFactory(username='nerv', role='nerv'),
children=PersonaFactory(username='children', role='children'),
wille=PersonaFactory(username='wille', role='wille'),
anonymous=AnonymousUser(),
)
def _render_template(self, username, lookup=''):
t = Template(
"{{% load announcements_tags %}}"
"{{% get_announcements {} as announcements %}}".format(
"'{}'".format(lookup) if lookup else ''
)
)
r = MagicMock()
r.user = self.users[username]
c = Context(dict(request=r))
r = t.render(c)
# get_announcements は何も描画しない
self.assertEqual(r.strip(), "")
return c['announcements']
def test_get_announcements_published(self):
"""get_announcements published はユーザーに対して公開された記事を返す"""
patterns = (
('adam', 2),
('seele', 2),
('nerv', 2),
('children', 2),
('wille', 1),
('anonymous', 1),
)
# with lookup
for username, nannouncements in patterns:
announcements = self._render_template(username, lookup='published')
self.assertEqual(announcements.count(), nannouncements)
# without lookup
for username, nannouncements in patterns:
announcements = self._render_template(username)
self.assertEqual(announcements.count(), nannouncements)
def test_get_announcements_draft(self):
"""get_announcements draft はユーザーが編集可能な下書きを返す"""
patterns = (
('adam', 1),
('seele', 1),
('nerv', 1),
('children', 0),
('wille', 0),
('anonymous', 0),
)
# with lookup
for username, nannouncements in patterns:
announcements = self._render_template(username, lookup='draft')
self.assertEqual(announcements.count(), nannouncements)
def test_get_announcements_unknown(self):
"""get_announcements unknown はエラーを出す"""
patterns = (
('adam', 1),
('seele', 1),
('nerv', 1),
('children', 0),
('wille', 0),
('anonymous', 0),
)
# with lookup
for username, nannouncements in patterns:
self.assertRaises(TemplateSyntaxError, self._render_template,
username, lookup='unknown')