Mercurial > wikked
view tests/test_resolver.py @ 100:fd6eccb24882
Refactoring to get rid of `slugify` callbacks.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 25 May 2013 22:35:23 -0700 |
parents | ca57fef14d04 |
children | ebb12ff21cb2 |
line wrap: on
line source
from tests import WikkedTest, format_link, format_include from wikked.page import Page class ResolverTest(WikkedTest): def testPageInclude(self): self.wiki = self._getWikiFromStructure({ 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", 'Trans Desc.txt': "BLAH\n" }) foo = Page(self.wiki, 'foo') self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) self.assertEqual( "A test page.\n%s" % format_include('trans-desc'), foo._getFormattedText()) self.assertEqual("A test page.\nBLAH", foo.text) def testPageIncludeWithMeta(self): self.wiki = self._getWikiFromStructure({ 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}" }) foo = Page(self.wiki, 'foo') self.assertEqual([], foo._getLocalLinks()) self.assertEqual({'include': ['trans-desc']}, foo._getLocalMeta()) self.assertEqual( "A test page.\n%s" % format_include('trans-desc'), foo._getFormattedText()) self.assertEqual( "A test page.\nBLAH: %s\n\n" % format_link('Somewhere', 'somewhere', True), foo.text) self.assertEqual(['somewhere'], foo.links) self.assertEqual({'bar': ['42'], 'given': ['hope'], 'include': ['trans-desc']}, foo.meta) def testPageIncludeWithNamedTemplating(self): self.wiki = self._getWikiFromStructure({ 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" }) foo = Page(self.wiki, 'foo') self.assertEqual( "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), foo._getFormattedText()) self.assertEqual("A test page.\nHello Dave, would you like a drink?", foo.text) def testPageIncludeWithNumberedTemplating(self): self.wiki = self._getWikiFromStructure({ 'Foo.txt': "A test page.\n{{include: greeting|Dave|Roger|Tom}}\n", 'Greeting.txt': "Hello {{__args[0]}}, {{__args[1]}} and {{__args[2]}}." }) foo = Page(self.wiki, 'foo') self.assertEqual( "A test page.\n%s" % format_include('greeting', 'Dave|Roger|Tom'), foo._getFormattedText()) self.assertEqual("A test page.\nHello Dave, Roger and Tom.", foo.text) def testIncludeWithPageReferenceTemplating(self): self.wiki =self._getWikiFromStructure({ 'SelfRef.txt': "Here is {{read_url(__page.url, __page.title)}}!", 'Foo.txt': "Hello here.\n{{include: selfref}}\n" }) foo = Page(self.wiki, 'foo') self.assertEqual( 'Hello here.\nHere is <a class="wiki-link" data-wiki-url="foo">Foo</a>!', foo.text ) def testGivenOnlyInclude(self): self.wiki = self._getWikiFromStructure({ 'Base.txt': "The base page.\n{{include: Template 1}}", 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}", 'Template 2.txt': "MORE TEMPLATE!" }) tpl1 = Page(self.wiki, 'template-1') self.assertEqual( "TEMPLATE!\n%s" % format_include('template-2', mod='+'), tpl1._getFormattedText()) self.assertEqual("TEMPLATE!\n", tpl1.text) base = Page(self.wiki, 'base') self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!", base.text) def testDoublePageIncludeWithMeta(self): return self.wiki = self._getWikiFromStructure({ 'Base.txt': "The base page.\n{{include: Template 1}}", 'Wrong.txt': "{{include: Template 2}}", 'Template 1.txt': "{{foo: bar}}\n{{+category: blah}}\n{{+include: Template 2}}\n{{__secret1: ssh}}", 'Template 2.txt': "{{+category: yolo}}", 'Query 1.txt': "{{query: category=yolo}}", 'Query 2.txt': "{{query: category=blah}}" }) base = Page(self.wiki, 'base') self.assertEqual({ 'foo': ['bar'], 'category': ['blah', 'yolo'] }, base.meta) tpl1 = Page(self.wiki, 'template-1') self.assertEqual({ 'foo': ['bar'], '+category': ['blah'], '+include': ['template-2'], '__secret': ['ssh'] }, tpl1.meta) self.assertEqual( "\n\n%s\n\n" % format_include('template-2'), tpl1.text) q1 = Page(self.wiki, 'query-1') self.assertEqual( "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', 'base'), format_link('Wrong', 'wrong')), q1.text) q2 = Page(self.wiki, 'query-2') self.assertEqual( "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', 'base'), q2.text)