annotate tests/test_resolver.py @ 84:ca57fef14d04

Formatter/resolver changes: - Formatting is done after resolving. - Resolving includes passing text through the template engine. - Using Jinja2 for templating now. - Added unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 03 Apr 2013 23:30:23 -0700
parents 65f83a9b42f1
children ebb12ff21cb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 from tests import WikkedTest, format_link, format_include
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 from wikked.page import Page
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 class ResolverTest(WikkedTest):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 def testPageInclude(self):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 self.wiki = self._getWikiFromStructure({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 'Foo.txt': "A test page.\n{{include: trans-desc}}\n",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 'Trans Desc.txt': "BLAH\n"
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 })
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 foo = Page(self.wiki, 'foo')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta())
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 "A test page.\n%s" % format_include('trans-desc'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 foo._getFormattedText())
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
16 self.assertEqual("A test page.\nBLAH", foo.text)
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 def testPageIncludeWithMeta(self):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 self.wiki = self._getWikiFromStructure({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 'Foo.txt': "A test page.\n{{include: trans-desc}}\n",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}"
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 })
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 foo = Page(self.wiki, 'foo')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 self.assertEqual([], foo._getLocalLinks())
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta())
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 "A test page.\n%s" % format_include('trans-desc'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 foo._getFormattedText())
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 self.assertEqual(
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
30 "A test page.\nBLAH: %s\n\n" % format_link('Somewhere', 'somewhere', True),
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 foo.text)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 self.assertEqual(['somewhere'], foo.links)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 def testPageIncludeWithNamedTemplating(self):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 self.wiki = self._getWikiFromStructure({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?"
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 })
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 foo = Page(self.wiki, 'foo')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 foo._getFormattedText())
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
44 self.assertEqual("A test page.\nHello Dave, would you like a drink?", foo.text)
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 def testPageIncludeWithNumberedTemplating(self):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 self.wiki = self._getWikiFromStructure({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 'Foo.txt': "A test page.\n{{include: greeting|Dave|Roger|Tom}}\n",
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
49 'Greeting.txt': "Hello {{__args[0]}}, {{__args[1]}} and {{__args[2]}}."
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 })
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 foo = Page(self.wiki, 'foo')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 "A test page.\n%s" % format_include('greeting', 'Dave|Roger|Tom'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 foo._getFormattedText())
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
55 self.assertEqual("A test page.\nHello Dave, Roger and Tom.", foo.text)
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
56
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
57 def testIncludeWithPageReferenceTemplating(self):
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
58 self.wiki =self._getWikiFromStructure({
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
59 'SelfRef.txt': "Here is {{read_url(__page.url, __page.title)}}!",
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
60 'Foo.txt': "Hello here.\n{{include: selfref}}\n"
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
61 })
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
62 foo = Page(self.wiki, 'foo')
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
63 self.assertEqual(
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
64 'Hello here.\nHere is <a class="wiki-link" data-wiki-url="foo">Foo</a>!',
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
65 foo.text
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
66 )
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 def testGivenOnlyInclude(self):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 self.wiki = self._getWikiFromStructure({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 'Base.txt': "The base page.\n{{include: Template 1}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 'Template 2.txt': "MORE TEMPLATE!"
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73 })
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 tpl1 = Page(self.wiki, 'template-1')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 "TEMPLATE!\n%s" % format_include('template-2', mod='+'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 tpl1._getFormattedText())
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
78 self.assertEqual("TEMPLATE!\n", tpl1.text)
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 base = Page(self.wiki, 'base')
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
80 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!", base.text)
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82 def testDoublePageIncludeWithMeta(self):
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 return
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 self.wiki = self._getWikiFromStructure({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 'Base.txt': "The base page.\n{{include: Template 1}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 'Wrong.txt': "{{include: Template 2}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87 'Template 1.txt': "{{foo: bar}}\n{{+category: blah}}\n{{+include: Template 2}}\n{{__secret1: ssh}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88 'Template 2.txt': "{{+category: yolo}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 'Query 1.txt': "{{query: category=yolo}}",
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
90 'Query 2.txt': "{{query: category=blah}}"
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91 })
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
92 base = Page(self.wiki, 'base')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
93 self.assertEqual({
84
ca57fef14d04 Formatter/resolver changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 83
diff changeset
94 'foo': ['bar'],
83
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95 'category': ['blah', 'yolo']
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
96 }, base.meta)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 tpl1 = Page(self.wiki, 'template-1')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98 self.assertEqual({
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99 'foo': ['bar'],
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100 '+category': ['blah'],
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101 '+include': ['template-2'],
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102 '__secret': ['ssh']
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103 }, tpl1.meta)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 "\n\n%s\n\n" % format_include('template-2'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 tpl1.text)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 q1 = Page(self.wiki, 'query-1')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', 'base'), format_link('Wrong', 'wrong')),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 q1.text)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 q2 = Page(self.wiki, 'query-2')
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 self.assertEqual(
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113 "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', 'base'),
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114 q2.text)
65f83a9b42f1 Added support for numbered template parameters.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115