Mercurial > wikked
comparison tests/test_page.py @ 83:65f83a9b42f1
Added support for numbered template parameters.
Moved resolver code into its own file.
Added unit tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 24 Mar 2013 22:06:50 -0700 |
parents | 9afe4a1dbd1e |
children | ca57fef14d04 |
comparison
equal
deleted
inserted
replaced
82:9afe4a1dbd1e | 83:65f83a9b42f1 |
---|---|
1 from tests import WikkedTest, format_link, format_include | 1 from tests import WikkedTest, format_link |
2 from mock import MockFileSystem | |
3 from wikked.page import Page | 2 from wikked.page import Page |
4 | 3 |
5 | 4 |
6 class PageTest(WikkedTest): | 5 class PageTest(WikkedTest): |
7 def _getWikiFromStructure(self, structure): | |
8 wiki = self.getWiki(use_db=False, fs_factory=lambda cfg: MockFileSystem(structure)) | |
9 wiki.start() | |
10 return wiki | |
11 | |
12 def testSimplePage(self): | 6 def testSimplePage(self): |
13 self.wiki = self._getWikiFromStructure({ | 7 self.wiki = self._getWikiFromStructure({ |
14 'foo.txt': 'A test page.' | 8 'foo.txt': 'A test page.' |
15 }) | 9 }) |
16 page = Page(self.wiki, 'foo') | 10 page = Page(self.wiki, 'foo') |
87 'foo.txt': "URL: [[url:/blah/boo/image.png]]" | 81 'foo.txt': "URL: [[url:/blah/boo/image.png]]" |
88 }) | 82 }) |
89 foo = Page(self.wiki, 'foo') | 83 foo = Page(self.wiki, 'foo') |
90 self.assertEqual("URL: /files/blah/boo/image.png", foo._getFormattedText()) | 84 self.assertEqual("URL: /files/blah/boo/image.png", foo._getFormattedText()) |
91 | 85 |
92 def testPageInclude(self): | |
93 self.wiki = self._getWikiFromStructure({ | |
94 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | |
95 'Trans Desc.txt': "BLAH\n" | |
96 }) | |
97 foo = Page(self.wiki, 'foo') | |
98 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) | |
99 self.assertEqual( | |
100 "A test page.\n%s" % format_include('trans-desc'), | |
101 foo._getFormattedText()) | |
102 self.assertEqual("A test page.\nBLAH\n\n", foo.text) | |
103 | |
104 def testPageIncludeWithMeta(self): | |
105 self.wiki = self._getWikiFromStructure({ | |
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}}" | |
108 }) | |
109 foo = Page(self.wiki, 'foo') | |
110 self.assertEqual([], foo._getLocalLinks()) | |
111 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) | |
112 self.assertEqual( | |
113 "A test page.\n%s" % format_include('trans-desc'), | |
114 foo._getFormattedText()) | |
115 self.assertEqual( | |
116 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True), | |
117 foo.text) | |
118 self.assertEqual(['somewhere'], foo.links) | |
119 self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta) | |
120 | |
121 def testPageIncludeWithTemplating(self): | |
122 self.wiki = self._getWikiFromStructure({ | |
123 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", | |
124 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" | |
125 }) | |
126 foo = Page(self.wiki, 'foo') | |
127 self.assertEqual( | |
128 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), | |
129 foo._getFormattedText()) | |
130 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) | |
131 | |
132 def testGivenOnlyInclude(self): | |
133 self.wiki = self._getWikiFromStructure({ | |
134 'Base.txt': "The base page.\n{{include: Template 1}}", | |
135 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}", | |
136 'Template 2.txt': "MORE TEMPLATE!" | |
137 }) | |
138 tpl1 = Page(self.wiki, 'template-1') | |
139 self.assertEqual( | |
140 "TEMPLATE!\n%s" % format_include('template-2', mod='+'), | |
141 tpl1._getFormattedText()) | |
142 self.assertEqual("TEMPLATE!\n\n", tpl1.text) | |
143 base = Page(self.wiki, 'base') | |
144 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text) | |
145 | |
146 def testDoublePageIncludeWithMeta(self): | |
147 return | |
148 self.wiki = self._getWikiFromStructure({ | |
149 'Base.txt': "The base page.\n{{include: Template 1}}", | |
150 'Wrong.txt': "{{include: Template 2}}", | |
151 'Template 1.txt': "{{foo: bar}}\n{{+category: blah}}\n{{+include: Template 2}}\n{{__secret1: ssh}}", | |
152 'Template 2.txt': "{{+category: yolo}}", | |
153 'Query 1.txt': "{{query: category=yolo}}", | |
154 'Query 2.txt': "{{query: category=blah}}" | |
155 }) | |
156 base = Page(self.wiki, 'base') | |
157 self.assertEqual({ | |
158 'foo': ['bar'], | |
159 'category': ['blah', 'yolo'] | |
160 }, base.meta) | |
161 tpl1 = Page(self.wiki, 'template-1') | |
162 self.assertEqual({ | |
163 'foo': ['bar'], | |
164 '+category': ['blah'], | |
165 '+include': ['template-2'], | |
166 '__secret': ['ssh'] | |
167 }, tpl1.meta) | |
168 self.assertEqual( | |
169 "\n\n%s\n\n" % format_include('template-2'), | |
170 tpl1.text) | |
171 q1 = Page(self.wiki, 'query-1') | |
172 self.assertEqual( | |
173 "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', 'base'), format_link('Wrong', 'wrong')), | |
174 q1.text) | |
175 q2 = Page(self.wiki, 'query-2') | |
176 self.assertEqual( | |
177 "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', 'base'), | |
178 q2.text) | |
179 |