comparison 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
comparison
equal deleted inserted replaced
83:65f83a9b42f1 84:ca57fef14d04
11 foo = Page(self.wiki, 'foo') 11 foo = Page(self.wiki, 'foo')
12 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) 12 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta())
13 self.assertEqual( 13 self.assertEqual(
14 "A test page.\n%s" % format_include('trans-desc'), 14 "A test page.\n%s" % format_include('trans-desc'),
15 foo._getFormattedText()) 15 foo._getFormattedText())
16 self.assertEqual("A test page.\nBLAH\n\n", foo.text) 16 self.assertEqual("A test page.\nBLAH", foo.text)
17 17
18 def testPageIncludeWithMeta(self): 18 def testPageIncludeWithMeta(self):
19 self.wiki = self._getWikiFromStructure({ 19 self.wiki = self._getWikiFromStructure({
20 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", 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}}" 21 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}"
25 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) 25 self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta())
26 self.assertEqual( 26 self.assertEqual(
27 "A test page.\n%s" % format_include('trans-desc'), 27 "A test page.\n%s" % format_include('trans-desc'),
28 foo._getFormattedText()) 28 foo._getFormattedText())
29 self.assertEqual( 29 self.assertEqual(
30 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True), 30 "A test page.\nBLAH: %s\n\n" % format_link('Somewhere', 'somewhere', True),
31 foo.text) 31 foo.text)
32 self.assertEqual(['somewhere'], foo.links) 32 self.assertEqual(['somewhere'], foo.links)
33 self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta) 33 self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta)
34 34
35 def testPageIncludeWithNamedTemplating(self): 35 def testPageIncludeWithNamedTemplating(self):
39 }) 39 })
40 foo = Page(self.wiki, 'foo') 40 foo = Page(self.wiki, 'foo')
41 self.assertEqual( 41 self.assertEqual(
42 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), 42 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'),
43 foo._getFormattedText()) 43 foo._getFormattedText())
44 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) 44 self.assertEqual("A test page.\nHello Dave, would you like a drink?", foo.text)
45 45
46 def testPageIncludeWithNumberedTemplating(self): 46 def testPageIncludeWithNumberedTemplating(self):
47 self.wiki = self._getWikiFromStructure({ 47 self.wiki = self._getWikiFromStructure({
48 'Foo.txt': "A test page.\n{{include: greeting|Dave|Roger|Tom}}\n", 48 'Foo.txt': "A test page.\n{{include: greeting|Dave|Roger|Tom}}\n",
49 'Greeting.txt': "Hello {{1}}, {{2}} and {{3}}." 49 'Greeting.txt': "Hello {{__args[0]}}, {{__args[1]}} and {{__args[2]}}."
50 }) 50 })
51 foo = Page(self.wiki, 'foo') 51 foo = Page(self.wiki, 'foo')
52 self.assertEqual( 52 self.assertEqual(
53 "A test page.\n%s" % format_include('greeting', 'Dave|Roger|Tom'), 53 "A test page.\n%s" % format_include('greeting', 'Dave|Roger|Tom'),
54 foo._getFormattedText()) 54 foo._getFormattedText())
55 self.assertEqual("A test page.\nHello Dave, Roger and Tom.\n", foo.text) 55 self.assertEqual("A test page.\nHello Dave, Roger and Tom.", foo.text)
56
57 def testIncludeWithPageReferenceTemplating(self):
58 self.wiki =self._getWikiFromStructure({
59 'SelfRef.txt': "Here is {{read_url(__page.url, __page.title)}}!",
60 'Foo.txt': "Hello here.\n{{include: selfref}}\n"
61 })
62 foo = Page(self.wiki, 'foo')
63 self.assertEqual(
64 'Hello here.\nHere is <a class="wiki-link" data-wiki-url="foo">Foo</a>!',
65 foo.text
66 )
56 67
57 def testGivenOnlyInclude(self): 68 def testGivenOnlyInclude(self):
58 self.wiki = self._getWikiFromStructure({ 69 self.wiki = self._getWikiFromStructure({
59 'Base.txt': "The base page.\n{{include: Template 1}}", 70 'Base.txt': "The base page.\n{{include: Template 1}}",
60 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}", 71 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}",
62 }) 73 })
63 tpl1 = Page(self.wiki, 'template-1') 74 tpl1 = Page(self.wiki, 'template-1')
64 self.assertEqual( 75 self.assertEqual(
65 "TEMPLATE!\n%s" % format_include('template-2', mod='+'), 76 "TEMPLATE!\n%s" % format_include('template-2', mod='+'),
66 tpl1._getFormattedText()) 77 tpl1._getFormattedText())
67 self.assertEqual("TEMPLATE!\n\n", tpl1.text) 78 self.assertEqual("TEMPLATE!\n", tpl1.text)
68 base = Page(self.wiki, 'base') 79 base = Page(self.wiki, 'base')
69 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text) 80 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!", base.text)
70 81
71 def testDoublePageIncludeWithMeta(self): 82 def testDoublePageIncludeWithMeta(self):
72 return 83 return
73 self.wiki = self._getWikiFromStructure({ 84 self.wiki = self._getWikiFromStructure({
74 'Base.txt': "The base page.\n{{include: Template 1}}", 85 'Base.txt': "The base page.\n{{include: Template 1}}",
78 'Query 1.txt': "{{query: category=yolo}}", 89 'Query 1.txt': "{{query: category=yolo}}",
79 'Query 2.txt': "{{query: category=blah}}" 90 'Query 2.txt': "{{query: category=blah}}"
80 }) 91 })
81 base = Page(self.wiki, 'base') 92 base = Page(self.wiki, 'base')
82 self.assertEqual({ 93 self.assertEqual({
83 'foo': ['bar'], 94 'foo': ['bar'],
84 'category': ['blah', 'yolo'] 95 'category': ['blah', 'yolo']
85 }, base.meta) 96 }, base.meta)
86 tpl1 = Page(self.wiki, 'template-1') 97 tpl1 = Page(self.wiki, 'template-1')
87 self.assertEqual({ 98 self.assertEqual({
88 'foo': ['bar'], 99 'foo': ['bar'],