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