comparison tests/test_resolver.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
children ca57fef14d04
comparison
equal deleted inserted replaced
82:9afe4a1dbd1e 83:65f83a9b42f1
1 from tests import WikkedTest, format_link, format_include
2 from wikked.page import Page
3
4
5 class ResolverTest(WikkedTest):
6 def testPageInclude(self):
7 self.wiki = self._getWikiFromStructure({
8 'Foo.txt': "A test page.\n{{include: trans-desc}}\n",
9 'Trans Desc.txt': "BLAH\n"
10 })
11 foo = Page(self.wiki, 'foo')
12 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta())
13 self.assertEqual(
14 "A test page.\n%s" % format_include('trans-desc'),
15 foo._getFormattedText())
16 self.assertEqual("A test page.\nBLAH\n\n", foo.text)
17
18 def testPageIncludeWithMeta(self):
19 self.wiki = self._getWikiFromStructure({
20 'Foo.txt': "A test page.\n{{include: trans-desc}}\n",
21 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}"
22 })
23 foo = Page(self.wiki, 'foo')
24 self.assertEqual([], foo._getLocalLinks())
25 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta())
26 self.assertEqual(
27 "A test page.\n%s" % format_include('trans-desc'),
28 foo._getFormattedText())
29 self.assertEqual(
30 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True),
31 foo.text)
32 self.assertEqual(['somewhere'], foo.links)
33 self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta)
34
35 def testPageIncludeWithNamedTemplating(self):
36 self.wiki = self._getWikiFromStructure({
37 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n",
38 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?"
39 })
40 foo = Page(self.wiki, 'foo')
41 self.assertEqual(
42 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'),
43 foo._getFormattedText())
44 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text)
45
46 def testPageIncludeWithNumberedTemplating(self):
47 self.wiki = self._getWikiFromStructure({
48 'Foo.txt': "A test page.\n{{include: greeting|Dave|Roger|Tom}}\n",
49 'Greeting.txt': "Hello {{1}}, {{2}} and {{3}}."
50 })
51 foo = Page(self.wiki, 'foo')
52 self.assertEqual(
53 "A test page.\n%s" % format_include('greeting', 'Dave|Roger|Tom'),
54 foo._getFormattedText())
55 self.assertEqual("A test page.\nHello Dave, Roger and Tom.\n", foo.text)
56
57 def testGivenOnlyInclude(self):
58 self.wiki = self._getWikiFromStructure({
59 'Base.txt': "The base page.\n{{include: Template 1}}",
60 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}",
61 'Template 2.txt': "MORE TEMPLATE!"
62 })
63 tpl1 = Page(self.wiki, 'template-1')
64 self.assertEqual(
65 "TEMPLATE!\n%s" % format_include('template-2', mod='+'),
66 tpl1._getFormattedText())
67 self.assertEqual("TEMPLATE!\n\n", tpl1.text)
68 base = Page(self.wiki, 'base')
69 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text)
70
71 def testDoublePageIncludeWithMeta(self):
72 return
73 self.wiki = self._getWikiFromStructure({
74 'Base.txt': "The base page.\n{{include: Template 1}}",
75 'Wrong.txt': "{{include: Template 2}}",
76 'Template 1.txt': "{{foo: bar}}\n{{+category: blah}}\n{{+include: Template 2}}\n{{__secret1: ssh}}",
77 'Template 2.txt': "{{+category: yolo}}",
78 'Query 1.txt': "{{query: category=yolo}}",
79 'Query 2.txt': "{{query: category=blah}}"
80 })
81 base = Page(self.wiki, 'base')
82 self.assertEqual({
83 'foo': ['bar'],
84 'category': ['blah', 'yolo']
85 }, base.meta)
86 tpl1 = Page(self.wiki, 'template-1')
87 self.assertEqual({
88 'foo': ['bar'],
89 '+category': ['blah'],
90 '+include': ['template-2'],
91 '__secret': ['ssh']
92 }, tpl1.meta)
93 self.assertEqual(
94 "\n\n%s\n\n" % format_include('template-2'),
95 tpl1.text)
96 q1 = Page(self.wiki, 'query-1')
97 self.assertEqual(
98 "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', 'base'), format_link('Wrong', 'wrong')),
99 q1.text)
100 q2 = Page(self.wiki, 'query-2')
101 self.assertEqual(
102 "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', 'base'),
103 q2.text)
104