Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1177)

Side by Side Diff: MoinMoin/items/_tests/test_Blog.py

Issue 6441151: Unit tests for Blog itemtype. (Closed)
Patch Set: add a helper function to publish entries Created 12 years, 8 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright: 2012 MoinMoin:PavelSviderski 1 # Copyright: 2012 MoinMoin:PavelSviderski
2 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details. 2 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
3 3
4 """ 4 """
5 MoinMoin - MoinMoin.items.blog Tests 5 MoinMoin - MoinMoin.items.blog Tests
6 """ 6 """
7 7
8 import re 8 import re
9 9
10 from flask import url_for 10 from flask import url_for
(...skipping 24 matching lines...) Expand all
35 contenttype = u'text/x.moin.wiki' 35 contenttype = u'text/x.moin.wiki'
36 data = u"This is the header item of this blog" 36 data = u"This is the header item of this blog"
37 meta = {CONTENTTYPE: contenttype, ITEMTYPE: ITEMTYPE_BLOG} 37 meta = {CONTENTTYPE: contenttype, ITEMTYPE: ITEMTYPE_BLOG}
38 comment = u'saved it' 38 comment = u'saved it'
39 entries = [{'name': name + u'/NewBlogEntryItem1', 'data': u"First blog entry "}, 39 entries = [{'name': name + u'/NewBlogEntryItem1', 'data': u"First blog entry "},
40 {'name': name + u'/NewBlogEntryItem2', 'data': u"Second blog entr y"}, 40 {'name': name + u'/NewBlogEntryItem2', 'data': u"Second blog entr y"},
41 {'name': name + u'/NewBlogEntryItem3', 'data': u"Third blog entry "}, 41 {'name': name + u'/NewBlogEntryItem3', 'data': u"Third blog entry "},
42 {'name': name + u'/NewBlogEntryItem4', 'data': u"Fourth blog entr y"}, ] 42 {'name': name + u'/NewBlogEntryItem4', 'data': u"Fourth blog entr y"}, ]
43 entry_meta = {CONTENTTYPE: contenttype, ITEMTYPE: ITEMTYPE_BLOG_ENTRY} 43 entry_meta = {CONTENTTYPE: contenttype, ITEMTYPE: ITEMTYPE_BLOG_ENTRY}
44 44
45 def _publish_entry(self, entry, ptime, acl=None):
46 meta = self.entry_meta.copy()
47 meta[PTIME] = ptime
48 if acl:
49 meta[ACL] = acl
50 update_item(entry['name'], meta, entry['data'])
51
45 def test_create(self): 52 def test_create(self):
46 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG) 53 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG)
47 item._save(self.meta, self.data, comment=self.comment) 54 item._save(self.meta, self.data, comment=self.comment)
48 # check save result 55 # check save result
49 item = Item.create(self.name) 56 item = Item.create(self.name)
50 assert isinstance(item, Blog) 57 assert isinstance(item, Blog)
51 assert item.itemtype == ITEMTYPE_BLOG 58 assert item.itemtype == ITEMTYPE_BLOG
52 assert item.meta[CONTENTTYPE] == self.contenttype 59 assert item.meta[CONTENTTYPE] == self.contenttype
53 60
54 def test_do_show_empty(self): 61 def test_do_show_empty(self):
55 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG) 62 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG)
56 item._save(self.meta, self.data, comment=self.comment) 63 item._save(self.meta, self.data, comment=self.comment)
57 # empty blog page without any entries 64 # empty blog page without any entries
58 data_tokens = [self.data, self.NO_ENTRIES_MSG, ] 65 data_tokens = [self.data, self.NO_ENTRIES_MSG, ]
59 self._test_view(self.name, data_tokens=data_tokens) 66 self._test_view(self.name, data_tokens=data_tokens)
60 67
61 def test_do_show_entries(self): 68 def test_do_show_entries(self):
62 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG) 69 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG)
63 item._save(self.meta, self.data, comment=self.comment) 70 item._save(self.meta, self.data, comment=self.comment)
64 # store some unpublished entries 71 # store some unpublished entries
65 for entry in self.entries: 72 for entry in self.entries:
66 item = Item.create(entry['name'], itemtype=ITEMTYPE_BLOG_ENTRY) 73 item = Item.create(entry['name'], itemtype=ITEMTYPE_BLOG_ENTRY)
67 item._save(self.entry_meta, entry['data'], comment=self.comment) 74 item._save(self.entry_meta, entry['data'], comment=self.comment)
68 # still empty blog 75 # still empty blog
69 data_tokens = [self.data, self.NO_ENTRIES_MSG, ] 76 data_tokens = [self.data, self.NO_ENTRIES_MSG, ]
70 self._test_view(self.name, data_tokens=data_tokens) 77 self._test_view(self.name, data_tokens=data_tokens)
71 # publish the first three entries 78 # publish the first three entries, ptime value is a UNIX timestamp
72 entry_meta = self.entry_meta.copy() 79 self._publish_entry(self.entries[0], ptime=1000)
73 entry_meta[PTIME] = 1000 # unix timestamp 80 self._publish_entry(self.entries[1], ptime=3000)
74 update_item(self.entries[0]['name'], entry_meta, self.entries[0]['data'] ) 81 self._publish_entry(self.entries[2], ptime=2000)
75 entry_meta[PTIME] = 3000
76 update_item(self.entries[1]['name'], entry_meta, self.entries[1]['data'] )
77 entry_meta[PTIME] = 2000
78 update_item(self.entries[2]['name'], entry_meta, self.entries[2]['data'] )
79 # the blog is not empty and the 4th entry is not published 82 # the blog is not empty and the 4th entry is not published
80 exclude_data_tokens = [self.NO_ENTRIES_MSG, self.entries[3]['data'], ] 83 exclude_data_tokens = [self.NO_ENTRIES_MSG, self.entries[3]['data'], ]
81 self._test_view(self.name, exclude_data_tokens=exclude_data_tokens) 84 self._test_view(self.name, exclude_data_tokens=exclude_data_tokens)
82 # blog entries are published in reverse order relative to their PTIMEs 85 # blog entries are published in reverse order relative to their PTIMEs
83 ordered_data = [self.data, 86 ordered_data = [self.data,
84 self.entries[1]['data'], 87 self.entries[1]['data'],
85 self.entries[2]['data'], 88 self.entries[2]['data'],
86 self.entries[0]['data'], ] 89 self.entries[0]['data'], ]
87 regex = re.compile(r'{0}.*{1}.*{2}.*{3}'.format(*ordered_data), re.DOTAL L) 90 regex = re.compile(r'{0}.*{1}.*{2}.*{3}'.format(*ordered_data), re.DOTAL L)
88 self._test_view(self.name, regex=regex) 91 self._test_view(self.name, regex=regex)
89 92
90 def test_entries_acls(self): 93 def test_entries_acls(self):
91 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG) 94 item = Item.create(self.name, itemtype=ITEMTYPE_BLOG)
92 item._save(self.meta, self.data, comment=self.comment) 95 item._save(self.meta, self.data, comment=self.comment)
93 # store some unpublished entries 96 # store some unpublished entries
94 for entry in self.entries: 97 for entry in self.entries:
95 item = Item.create(entry['name'], itemtype=ITEMTYPE_BLOG_ENTRY) 98 item = Item.create(entry['name'], itemtype=ITEMTYPE_BLOG_ENTRY)
96 item._save(self.entry_meta, entry['data'], comment=self.comment) 99 item._save(self.entry_meta, entry['data'], comment=self.comment)
97 # publish the first three entries with specific ACLs 100 # publish the first three entries with specific ACLs
98 entry_meta = self.entry_meta.copy() 101 # we are an "anonymous" user
99 entry_meta[PTIME] = 1000 # unix timestamp 102 self._publish_entry(self.entries[0], ptime=1000, acl=u"anonymous:read")
100 # we are "anonymous" 103 self._publish_entry(self.entries[1], ptime=3000, acl=u"anonymous:read")
101 entry_meta[ACL] = u"anonymous:read"
102 update_item(self.entries[0]['name'], entry_meta, self.entries[0]['data'] )
103 entry_meta[PTIME] = 3000
104 entry_meta[ACL] = u"anonymous:read"
105 update_item(self.entries[1]['name'], entry_meta, self.entries[1]['data'] )
106 entry_meta[PTIME] = 2000
107 # specify no rights on the 3rd entry 104 # specify no rights on the 3rd entry
108 entry_meta[ACL] = u"anonymous:" 105 self._publish_entry(self.entries[2], ptime=2000, acl=u"anonymous:")
109 update_item(self.entries[2]['name'], entry_meta, self.entries[2]['data'] )
110 # the blog is not empty and the 3rd entry is not displayed 106 # the blog is not empty and the 3rd entry is not displayed
111 exclude_data_tokens = [self.NO_ENTRIES_MSG, self.entries[2]['data'], ] 107 exclude_data_tokens = [self.NO_ENTRIES_MSG, self.entries[2]['data'], ]
112 self._test_view(self.name, exclude_data_tokens=exclude_data_tokens) 108 self._test_view(self.name, exclude_data_tokens=exclude_data_tokens)
113 ordered_data = [self.data, 109 ordered_data = [self.data,
Reimar Bauer 2012/08/17 22:32:15 here you set the order manually. where do you get
spy 2012/08/17 23:17:00 line 102-105: I publish three entries with specifi
114 self.entries[1]['data'], 110 self.entries[1]['data'],
115 self.entries[0]['data'], ] 111 self.entries[0]['data'], ]
116 regex = re.compile(r'{0}.*{1}.*{2}'.format(*ordered_data), re.DOTALL) 112 regex = re.compile(r'{0}.*{1}.*{2}'.format(*ordered_data), re.DOTALL)
117 self._test_view(self.name, regex=regex) 113 self._test_view(self.name, regex=regex)
118 114
119 115
120 class TestBlogEntry(TestView): 116 class TestBlogEntry(TestView):
121 blog_name = u'NewBlogItem' 117 blog_name = u'NewBlogItem'
122 contenttype = u'text/x.moin.wiki' 118 contenttype = u'text/x.moin.wiki'
123 blog_data = u"This is the header item of this blog" 119 blog_data = u"This is the header item of this blog"
(...skipping 18 matching lines...) Expand all
142 138
143 def test_do_show(self): 139 def test_do_show(self):
144 # create a blog item 140 # create a blog item
145 item = Item.create(self.blog_name, itemtype=ITEMTYPE_BLOG) 141 item = Item.create(self.blog_name, itemtype=ITEMTYPE_BLOG)
146 item._save(self.blog_meta, self.blog_data, comment=self.comment) 142 item._save(self.blog_meta, self.blog_data, comment=self.comment)
147 # create a blog entry item 143 # create a blog entry item
148 item = Item.create(self.entry_name, itemtype=ITEMTYPE_BLOG_ENTRY) 144 item = Item.create(self.entry_name, itemtype=ITEMTYPE_BLOG_ENTRY)
149 item._save(self.entry_meta, self.entry_data, comment=self.comment) 145 item._save(self.entry_meta, self.entry_data, comment=self.comment)
150 146
151 data_tokens = [self.blog_data, self.entry_data, ] 147 data_tokens = [self.blog_data, self.entry_data, ]
152 self._test_view(self.entry_name, data_tokens=data_tokens) 148 self._test_view(self.entry_name, data_tokens=data_tokens)
Reimar Bauer 2012/08/17 22:32:15 add the coverage_modules = ['the module which is c
spy 2012/08/17 23:17:00 py.test does not provide "-c" arg anymore, doesn't
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b