Mercurial > wikked
comparison tests/test_page.py @ 82:9afe4a1dbd1e
Refactoring of core wiki classes:
- Use proper classes instead of dictionaries more often.
- Simplified `Page`'s public API.
- Page meta property values are now always stored in an array, even if there's
only one occurence for the given key.
- Updated unit-tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 19 Mar 2013 19:54:11 -0700 |
parents | 0b4f4c23770a |
children | 65f83a9b42f1 |
comparison
equal
deleted
inserted
replaced
81:05d0a7cd85e8 | 82:9afe4a1dbd1e |
---|---|
14 'foo.txt': 'A test page.' | 14 'foo.txt': 'A test page.' |
15 }) | 15 }) |
16 page = Page(self.wiki, 'foo') | 16 page = Page(self.wiki, 'foo') |
17 self.assertEqual('foo', page.url) | 17 self.assertEqual('foo', page.url) |
18 self.assertEqual('A test page.', page.raw_text) | 18 self.assertEqual('A test page.', page.raw_text) |
19 self.assertEqual('A test page.', page.formatted_text) | 19 self.assertEqual('A test page.', page._getFormattedText()) |
20 self.assertEqual('foo', page.title) | 20 self.assertEqual('foo', page.title) |
21 self.assertEqual('A test page.', page.text) | 21 self.assertEqual('A test page.', page.text) |
22 self.assertEqual({}, page.local_meta) | 22 self.assertEqual({}, page._getLocalMeta()) |
23 self.assertEqual([], page.local_links) | 23 self.assertEqual([], page._getLocalLinks()) |
24 | 24 |
25 def testPageMeta(self): | 25 def testPageMeta(self): |
26 self.wiki = self._getWikiFromStructure({ | 26 self.wiki = self._getWikiFromStructure({ |
27 'foo.txt': "A page with simple meta.\n{{bar: baz}}\n{{is_test: }}" | 27 'foo.txt': "A page with simple meta.\n{{bar: baz}}\n{{is_test: }}" |
28 }) | 28 }) |
29 page = Page(self.wiki, 'foo') | 29 page = Page(self.wiki, 'foo') |
30 self.assertEqual('foo', page.url) | 30 self.assertEqual('foo', page.url) |
31 self.assertEqual("A page with simple meta.\n{{bar: baz}}\n{{is_test: }}", page.raw_text) | 31 self.assertEqual("A page with simple meta.\n{{bar: baz}}\n{{is_test: }}", page.raw_text) |
32 self.assertEqual('A page with simple meta.\n\n', page.formatted_text) | 32 self.assertEqual('A page with simple meta.\n\n', page._getFormattedText()) |
33 self.assertEqual('foo', page.title) | 33 self.assertEqual('foo', page.title) |
34 self.assertEqual('A page with simple meta.\n\n', page.text) | 34 self.assertEqual('A page with simple meta.\n\n', page.text) |
35 self.assertEqual({'bar': 'baz', 'is_test': True}, page.local_meta) | 35 self.assertEqual({'bar': ['baz'], 'is_test': True}, page._getLocalMeta()) |
36 self.assertEqual([], page.local_links) | 36 self.assertEqual([], page._getLocalLinks()) |
37 | 37 |
38 def testPageTitleMeta(self): | 38 def testPageTitleMeta(self): |
39 self.wiki = self._getWikiFromStructure({ | 39 self.wiki = self._getWikiFromStructure({ |
40 'test_title.txt': "A page with a custom title.\n{{title: TEST-TITLE}}" | 40 'test_title.txt': "A page with a custom title.\n{{title: TEST-TITLE}}" |
41 }) | 41 }) |
42 page = Page(self.wiki, 'test_title') | 42 page = Page(self.wiki, 'test_title') |
43 self.assertEqual('test_title', page.url) | 43 self.assertEqual('test_title', page.url) |
44 self.assertEqual("A page with a custom title.\n{{title: TEST-TITLE}}", page.raw_text) | 44 self.assertEqual("A page with a custom title.\n{{title: TEST-TITLE}}", page.raw_text) |
45 self.assertEqual('A page with a custom title.\n', page.formatted_text) | 45 self.assertEqual('A page with a custom title.\n', page._getFormattedText()) |
46 self.assertEqual('TEST-TITLE', page.title) | 46 self.assertEqual('TEST-TITLE', page.title) |
47 self.assertEqual('A page with a custom title.\n', page.text) | 47 self.assertEqual('A page with a custom title.\n', page.text) |
48 self.assertEqual({'title': 'TEST-TITLE'}, page.local_meta) | 48 self.assertEqual({'title': ['TEST-TITLE']}, page._getLocalMeta()) |
49 self.assertEqual([], page.local_links) | 49 self.assertEqual([], page._getLocalLinks()) |
50 | 50 |
51 def testPageOutLinks(self): | 51 def testPageOutLinks(self): |
52 self.wiki = self._getWikiFromStructure({ | 52 self.wiki = self._getWikiFromStructure({ |
53 'test_links.txt': "Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", | 53 'test_links.txt': "Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", |
54 'sandbox.txt': "This is just a placeholder." | 54 'sandbox.txt': "This is just a placeholder." |
59 self.assertEqual("Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", page.raw_text) | 59 self.assertEqual("Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", page.raw_text) |
60 self.assertEqual( | 60 self.assertEqual( |
61 "Follow a link to the %s. Or to %s." % ( | 61 "Follow a link to the %s. Or to %s." % ( |
62 format_link('Sandbox', 'sandbox'), | 62 format_link('Sandbox', 'sandbox'), |
63 format_link('this page', 'other-sandbox', True)), | 63 format_link('this page', 'other-sandbox', True)), |
64 page.formatted_text) | 64 page.text) |
65 self.assertEqual(set(['sandbox', 'other-sandbox']), set(page.local_links)) | 65 self.assertEqual(set(['sandbox', 'other-sandbox']), set(page._getLocalLinks())) |
66 | 66 |
67 def testPageRelativeOutLinks(self): | 67 def testPageRelativeOutLinks(self): |
68 self.wiki = self._getWikiFromStructure({ | 68 self.wiki = self._getWikiFromStructure({ |
69 'first.txt': "Go to [[First Sibling]].", | 69 'first.txt': "Go to [[First Sibling]].", |
70 'first-sibling.txt': "Go back to [[First]], or to [[sub_dir/Second]].", | 70 'first-sibling.txt': "Go back to [[First]], or to [[sub_dir/Second]].", |
72 'second.txt': "Go back to [[../First]], or to [[Second Sibling]].", | 72 'second.txt': "Go back to [[../First]], or to [[Second Sibling]].", |
73 'second-sibling.txt': "Go back to [[Second]]." | 73 'second-sibling.txt': "Go back to [[Second]]." |
74 } | 74 } |
75 }) | 75 }) |
76 first = Page(self.wiki, 'first') | 76 first = Page(self.wiki, 'first') |
77 self.assertEqual(['first-sibling'], first.local_links) | 77 self.assertEqual(['first-sibling'], first._getLocalLinks()) |
78 first2 = Page(self.wiki, 'first-sibling') | 78 first2 = Page(self.wiki, 'first-sibling') |
79 self.assertEqual(['first', 'sub_dir/second'], first2.local_links) | 79 self.assertEqual(['first', 'sub_dir/second'], first2._getLocalLinks()) |
80 second = Page(self.wiki, 'sub_dir/second') | 80 second = Page(self.wiki, 'sub_dir/second') |
81 self.assertEqual(['first', 'sub_dir/second-sibling'], second.local_links) | 81 self.assertEqual(['first', 'sub_dir/second-sibling'], second._getLocalLinks()) |
82 second2 = Page(self.wiki, 'sub_dir/second-sibling') | 82 second2 = Page(self.wiki, 'sub_dir/second-sibling') |
83 self.assertEqual(['sub_dir/second'], second2.local_links) | 83 self.assertEqual(['sub_dir/second'], second2._getLocalLinks()) |
84 | 84 |
85 def testGenericUrl(self): | 85 def testGenericUrl(self): |
86 self.wiki = self._getWikiFromStructure({ | 86 self.wiki = self._getWikiFromStructure({ |
87 'foo.txt': "URL: [[url:/blah/boo/image.png]]" | 87 'foo.txt': "URL: [[url:/blah/boo/image.png]]" |
88 }) | 88 }) |
89 foo = Page(self.wiki, 'foo') | 89 foo = Page(self.wiki, 'foo') |
90 self.assertEqual("URL: /files/blah/boo/image.png", foo.formatted_text) | 90 self.assertEqual("URL: /files/blah/boo/image.png", foo._getFormattedText()) |
91 | 91 |
92 def testPageInclude(self): | 92 def testPageInclude(self): |
93 self.wiki = self._getWikiFromStructure({ | 93 self.wiki = self._getWikiFromStructure({ |
94 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | 94 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", |
95 'Trans Desc.txt': "BLAH\n" | 95 'Trans Desc.txt': "BLAH\n" |
96 }) | 96 }) |
97 foo = Page(self.wiki, 'foo') | 97 foo = Page(self.wiki, 'foo') |
98 self.assertEqual({'include': 'trans-desc'}, foo.local_meta) | 98 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) |
99 self.assertEqual( | 99 self.assertEqual( |
100 "A test page.\n%s" % format_include('trans-desc'), | 100 "A test page.\n%s" % format_include('trans-desc'), |
101 foo.formatted_text) | 101 foo._getFormattedText()) |
102 self.assertEqual("A test page.\nBLAH\n\n", foo.text) | 102 self.assertEqual("A test page.\nBLAH\n\n", foo.text) |
103 | 103 |
104 def testPageIncludeWithMeta(self): | 104 def testPageIncludeWithMeta(self): |
105 self.wiki = self._getWikiFromStructure({ | 105 self.wiki = self._getWikiFromStructure({ |
106 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | 106 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", |
107 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}" | 107 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}" |
108 }) | 108 }) |
109 foo = Page(self.wiki, 'foo') | 109 foo = Page(self.wiki, 'foo') |
110 self.assertEqual([], foo.local_links) | 110 self.assertEqual([], foo._getLocalLinks()) |
111 self.assertEqual({'include': 'trans-desc'}, foo.local_meta) | 111 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) |
112 self.assertEqual( | 112 self.assertEqual( |
113 "A test page.\n%s" % format_include('trans-desc'), | 113 "A test page.\n%s" % format_include('trans-desc'), |
114 foo.formatted_text) | 114 foo._getFormattedText()) |
115 self.assertEqual( | 115 self.assertEqual( |
116 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True), | 116 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True), |
117 foo.text) | 117 foo.text) |
118 self.assertEqual(['somewhere'], foo.all_links) | 118 self.assertEqual(['somewhere'], foo.links) |
119 self.assertEqual({'bar': '42', 'given': 'hope', 'include': 'trans-desc'}, foo.all_meta) | 119 self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta) |
120 | 120 |
121 def testPageIncludeWithTemplating(self): | 121 def testPageIncludeWithTemplating(self): |
122 self.wiki = self._getWikiFromStructure({ | 122 self.wiki = self._getWikiFromStructure({ |
123 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", | 123 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", |
124 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" | 124 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" |
125 }) | 125 }) |
126 foo = Page(self.wiki, 'foo') | 126 foo = Page(self.wiki, 'foo') |
127 self.assertEqual( | 127 self.assertEqual( |
128 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), | 128 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), |
129 foo.formatted_text) | 129 foo._getFormattedText()) |
130 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) | 130 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) |
131 | 131 |
132 def testGivenOnlyInclude(self): | 132 def testGivenOnlyInclude(self): |
133 self.wiki = self._getWikiFromStructure({ | 133 self.wiki = self._getWikiFromStructure({ |
134 'Base.txt': "The base page.\n{{include: Template 1}}", | 134 'Base.txt': "The base page.\n{{include: Template 1}}", |
136 'Template 2.txt': "MORE TEMPLATE!" | 136 'Template 2.txt': "MORE TEMPLATE!" |
137 }) | 137 }) |
138 tpl1 = Page(self.wiki, 'template-1') | 138 tpl1 = Page(self.wiki, 'template-1') |
139 self.assertEqual( | 139 self.assertEqual( |
140 "TEMPLATE!\n%s" % format_include('template-2', mod='+'), | 140 "TEMPLATE!\n%s" % format_include('template-2', mod='+'), |
141 tpl1.formatted_text) | 141 tpl1._getFormattedText()) |
142 self.assertEqual("TEMPLATE!\n\n", tpl1.text) | 142 self.assertEqual("TEMPLATE!\n\n", tpl1.text) |
143 base = Page(self.wiki, 'base') | 143 base = Page(self.wiki, 'base') |
144 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text) | 144 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text) |
145 | 145 |
146 def testDoublePageIncludeWithMeta(self): | 146 def testDoublePageIncludeWithMeta(self): |
153 'Query 1.txt': "{{query: category=yolo}}", | 153 'Query 1.txt': "{{query: category=yolo}}", |
154 'Query 2.txt': "{{query: category=blah}}" | 154 'Query 2.txt': "{{query: category=blah}}" |
155 }) | 155 }) |
156 base = Page(self.wiki, 'base') | 156 base = Page(self.wiki, 'base') |
157 self.assertEqual({ | 157 self.assertEqual({ |
158 'foo': 'bar', | 158 'foo': ['bar'], |
159 'category': ['blah', 'yolo'] | 159 'category': ['blah', 'yolo'] |
160 }, base.all_meta) | 160 }, base.meta) |
161 tpl1 = Page(self.wiki, 'template-1') | 161 tpl1 = Page(self.wiki, 'template-1') |
162 self.assertEqual({ | 162 self.assertEqual({ |
163 'foo': 'bar', | 163 'foo': ['bar'], |
164 '+category': 'blah', | 164 '+category': ['blah'], |
165 '+include': 'template-2', | 165 '+include': ['template-2'], |
166 '__secret': 'ssh' | 166 '__secret': ['ssh'] |
167 }, tpl1.all_meta) | 167 }, tpl1.meta) |
168 self.assertEqual( | 168 self.assertEqual( |
169 "\n\n%s\n\n" % format_include('template-2'), | 169 "\n\n%s\n\n" % format_include('template-2'), |
170 tpl1.text) | 170 tpl1.text) |
171 q1 = Page(self.wiki, 'query-1') | 171 q1 = Page(self.wiki, 'query-1') |
172 self.assertEqual( | 172 self.assertEqual( |