Mercurial > wikked
comparison tests/test_page.py @ 54:9dfbc2a40b71
Formatter changes:
- Refactored `PageResolver` with something that makes more sense.
- Fixed some bugs with advanced include/meta scenarios.
- Added more tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 02 Feb 2013 20:16:54 -0800 |
parents | c4e999f55ba9 |
children | 494f3c4660ed |
comparison
equal
deleted
inserted
replaced
53:c4e999f55ba9 | 54:9dfbc2a40b71 |
---|---|
1 from tests import WikkedTest | 1 from tests import WikkedTest, format_link, format_include |
2 from mock import MockFileSystem | 2 from mock import MockFileSystem |
3 from wikked.page import Page | 3 from wikked.page import Page |
4 | 4 |
5 | 5 |
6 class PageTest(WikkedTest): | 6 class PageTest(WikkedTest): |
58 }) | 58 }) |
59 self.assertTrue(self.wiki.pageExists('sandbox', from_db=False)) | 59 self.assertTrue(self.wiki.pageExists('sandbox', from_db=False)) |
60 page = Page(self.wiki, 'test_links') | 60 page = Page(self.wiki, 'test_links') |
61 self.assertEqual('test_links', page.url) | 61 self.assertEqual('test_links', page.url) |
62 self.assertEqual("Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", page.raw_text) | 62 self.assertEqual("Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", page.raw_text) |
63 self.assertEqual("Follow a link to the <a class=\"wiki-link\" data-wiki-url=\"sandbox\">Sandbox</a>. Or to <a class=\"wiki-link missing\" data-wiki-url=\"other-sandbox\">this page</a>.", page.formatted_text) | 63 self.assertEqual( |
64 "Follow a link to the %s. Or to %s." % ( | |
65 format_link('Sandbox', 'sandbox'), | |
66 format_link('this page', 'other-sandbox', True)), | |
67 page.formatted_text) | |
64 self.assertEqual(set(['sandbox', 'other-sandbox']), set(page.local_links)) | 68 self.assertEqual(set(['sandbox', 'other-sandbox']), set(page.local_links)) |
65 | 69 |
66 def testPageRelativeOutLinks(self): | 70 def testPageRelativeOutLinks(self): |
67 self.wiki = self._getWikiFromStructure({ | 71 self.wiki = self._getWikiFromStructure({ |
68 'first.txt': "Go to [[First Sibling]].", | 72 'first.txt': "Go to [[First Sibling]].", |
86 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | 90 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", |
87 'Trans Desc.txt': "BLAH\n" | 91 'Trans Desc.txt': "BLAH\n" |
88 }) | 92 }) |
89 foo = Page(self.wiki, 'foo') | 93 foo = Page(self.wiki, 'foo') |
90 self.assertEqual(['trans-desc'], foo.local_includes) | 94 self.assertEqual(['trans-desc'], foo.local_includes) |
91 self.assertEqual("A test page.\n<div class=\"wiki-include\" data-wiki-url=\"trans-desc\"></div>\n", foo.formatted_text) | 95 self.assertEqual( |
96 "A test page.\n%s" % format_include('trans-desc'), | |
97 foo.formatted_text) | |
92 self.assertEqual("A test page.\nBLAH\n\n", foo.text) | 98 self.assertEqual("A test page.\nBLAH\n\n", foo.text) |
93 | 99 |
94 def testPageIncludeWithMeta(self): | 100 def testPageIncludeWithMeta(self): |
95 self.wiki = self._getWikiFromStructure({ | 101 self.wiki = self._getWikiFromStructure({ |
96 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | 102 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", |
98 }) | 104 }) |
99 foo = Page(self.wiki, 'foo') | 105 foo = Page(self.wiki, 'foo') |
100 self.assertEqual(['trans-desc'], foo.local_includes) | 106 self.assertEqual(['trans-desc'], foo.local_includes) |
101 self.assertEqual([], foo.local_links) | 107 self.assertEqual([], foo.local_links) |
102 self.assertEqual({'include': 'trans-desc'}, foo.local_meta) | 108 self.assertEqual({'include': 'trans-desc'}, foo.local_meta) |
103 self.assertEqual("A test page.\n<div class=\"wiki-include\" data-wiki-url=\"trans-desc\"></div>\n", foo.formatted_text) | 109 self.assertEqual( |
104 self.assertEqual("A test page.\nBLAH: <a class=\"wiki-link missing\" data-wiki-url=\"somewhere\">Somewhere</a>\n\n\n\n", foo.text) | 110 "A test page.\n%s" % format_include('trans-desc'), |
111 foo.formatted_text) | |
112 self.assertEqual( | |
113 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True), | |
114 foo.text) | |
105 self.assertEqual(['trans-desc'], foo.all_includes) | 115 self.assertEqual(['trans-desc'], foo.all_includes) |
106 self.assertEqual(['somewhere'], foo.all_links) | 116 self.assertEqual(['somewhere'], foo.all_links) |
107 self.assertEqual({'bar': '42', 'given': 'hope', 'include': 'trans-desc'}, foo.all_meta) | 117 self.assertEqual({'bar': '42', 'given': 'hope', 'include': 'trans-desc'}, foo.all_meta) |
108 | 118 |
109 def testPageIncludeWithTemplating(self): | 119 def testPageIncludeWithTemplating(self): |
110 self.wiki = self._getWikiFromStructure({ | 120 self.wiki = self._getWikiFromStructure({ |
111 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", | 121 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", |
112 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" | 122 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" |
113 }) | 123 }) |
114 foo = Page(self.wiki, 'foo') | 124 foo = Page(self.wiki, 'foo') |
115 self.assertEqual("A test page.\n<div class=\"wiki-include\" data-wiki-url=\"greeting\">name=Dave|what=drink</div>\n", foo.formatted_text) | 125 self.assertEqual( |
126 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), | |
127 foo.formatted_text) | |
116 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) | 128 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) |
117 | 129 |
130 def testGivenOnlyInclude(self): | |
131 self.wiki = self._getWikiFromStructure({ | |
132 'Base.txt': "The base page.\n{{include: Template 1}}", | |
133 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}", | |
134 'Template 2.txt': "MORE TEMPLATE!" | |
135 }) | |
136 tpl1 = Page(self.wiki, 'template-1') | |
137 self.assertEqual( | |
138 "TEMPLATE!\n%s" % format_include('template-2', mod='+'), | |
139 tpl1.formatted_text) | |
140 self.assertEqual("TEMPLATE!\n\n", tpl1.text) | |
141 base = Page(self.wiki, 'base') | |
142 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text) | |
143 | |
144 def testDoublePageIncludeWithMeta(self): | |
145 return | |
146 self.wiki = self._getWikiFromStructure({ | |
147 'Base.txt': "The base page.\n{{include: Template 1}}", | |
148 'Wrong.txt': "{{include: Template 2}}", | |
149 'Template 1.txt': "{{foo: bar}}\n{{+category: blah}}\n{{+include: Template 2}}\n{{__secret1: ssh}}", | |
150 'Template 2.txt': "{{+category: yolo}}", | |
151 'Query 1.txt': "{{query: category=yolo}}", | |
152 'Query 2.txt': "{{query: category=blah}}" | |
153 }) | |
154 base = Page(self.wiki, 'base') | |
155 self.assertEqual({ | |
156 'foo': 'bar', | |
157 'category': ['blah', 'yolo'] | |
158 }, base.all_meta) | |
159 tpl1 = Page(self.wiki, 'template-1') | |
160 self.assertEqual({ | |
161 'foo': 'bar', | |
162 '+category': 'blah', | |
163 '+include': 'template-2', | |
164 '__secret': 'ssh' | |
165 }, tpl1.all_meta) | |
166 self.assertEqual( | |
167 "\n\n%s\n\n" % format_include('template-2'), | |
168 tpl1.text) | |
169 q1 = Page(self.wiki, 'query-1') | |
170 self.assertEqual( | |
171 "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', 'base'), format_link('Wrong', 'wrong')), | |
172 q1.text) | |
173 q2 = Page(self.wiki, 'query-2') | |
174 self.assertEqual( | |
175 "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', 'base'), | |
176 q2.text) | |
177 |