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