Mercurial > wikked
diff tests/test_resolver.py @ 464:1dc6a0a74da3
wiki: Improve consistency of absolute/relative links.
- Make links from endpoint pages go to the same endpoint by default.
- Add support for `:` (empty) endpoint to link outside of endpoints.
- Add unit tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 06 Oct 2018 19:40:52 -0700 |
parents | 666a9d0981bb |
children |
line wrap: on
line diff
--- a/tests/test_resolver.py Sat Oct 06 19:37:23 2018 -0700 +++ b/tests/test_resolver.py Sat Oct 06 19:40:52 2018 -0700 @@ -1,3 +1,4 @@ +# flake8: noqa from tests import WikkedTest, format_link, format_include @@ -83,36 +84,210 @@ self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!", base.text) def testDoublePageIncludeWithMeta(self): - return wiki = self._getWikiFromStructure({ 'Base.txt': "The base page.\n{{include: Template 1}}", - 'Wrong.txt': "{{include: Template 2}}", + 'Other.txt': "The other page.\n{{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 = wiki.getPage('/Base') self.assertEqual({ 'foo': ['bar'], - 'category': ['blah', 'yolo'] + 'category': ['blah', 'yolo'], + 'include': ['Template 1', 'Template 2'] }, base.getMeta()) + + other = wiki.getPage('/Other') + self.assertEqual({ + 'category': ['yolo'], + 'include': ['Template 2'] + }, other.getMeta()) + tpl1 = wiki.getPage('/Template 1') self.assertEqual({ 'foo': ['bar'], - '+category': ['blah'], - '+include': ['Template 1'], - '__secret': ['ssh'] + '+category': ['blah', 'yolo'], + '+include': ['Template 2'], + '__secret1': ['ssh'] }, tpl1.getMeta()) + self.assertEqual( - "\n\n%s\n\n" % format_include('/Template 2'), + "\n\n\n", #"\n\n%s\n\n" % format_include('/Template 2'), tpl1.text) - q1 = wiki.getPage('query-1') + q1 = wiki.getPage('/Query 1') self.assertEqual( - "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', '/Base'), format_link('Wrong', '/Wrong')), + "\n* %s\n* %s\n\n" % (format_link('Base', '/Base'), format_link('Other', '/Other')), q1.text) - q2 = wiki.getPage('query-2') + q2 = wiki.getPage('/Query 2') self.assertEqual( - "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', '/Base'), + "\n* %s\n\n" % format_link('Base', '/Base'), q2.text) + def testLink1(self): + wiki = self._getWikiFromStructure({ + 'Source.txt': "A link: [[Other]]", + 'Other.txt': "" + }) + + source = wiki.getPage('/Source') + self.assertEqual("A link: %s" % format_link('Other', '/Other'), + source.text) + + def testLink2(self): + wiki = self._getWikiFromStructure({ + 'Folder/Source.txt': "A link: [[Other]]", + 'Folder/Other.txt': "" + }) + + source = wiki.getPage('/Folder/Source') + self.assertEqual("A link: %s" % format_link('Other', '/Folder/Other'), + source.text) + + def testLink3(self): + wiki = self._getWikiFromStructure({ + 'Source.txt': "[[Folder/Other]]", + 'Folder/Other.txt': "" + }) + + source = wiki.getPage('/Source') + self.assertEqual(format_link('Other', '/Folder/Other'), + source.text) + + def testLink4(self): + wiki = self._getWikiFromStructure({ + 'Folder/Source.txt': "[[More/Other]]", + 'Folder/More/Other.txt': "" + }) + + source = wiki.getPage('/Folder/Source') + self.assertEqual(format_link('Other', '/Folder/More/Other'), + source.text) + + def testRelativeLink1(self): + wiki = self._getWikiFromStructure({ + 'Source.txt': "[[./Other]]", + 'Source/Other.txt': "" + }) + + source = wiki.getPage('/Source') + self.assertEqual(format_link('Other', '/Source/Other'), + source.text) + + def testRelativeLink2(self): + wiki = self._getWikiFromStructure({ + 'Folder/Source.txt': "[[./Other]]", + 'Folder/Source/Other.txt': "" + }) + + source = wiki.getPage('/Folder/Source') + self.assertEqual(format_link('Other', '/Folder/Source/Other'), + source.text) + + def testRelativeLink3(self): + wiki = self._getWikiFromStructure({ + 'Folder/Source.txt': "[[../Other]]", + 'Other.txt': "" + }) + + source = wiki.getPage('/Folder/Source') + self.assertEqual(format_link('Other', '/Other'), source.text) + + def testRelativeLink4(self): + wiki = self._getWikiFromStructure({ + 'Folder/More/Source.txt': "[[../Other]]", + 'Folder/Other.txt': "" + }) + + source = wiki.getPage('/Folder/More/Source') + self.assertEqual(format_link('Other', '/Folder/Other'), source.text) + + def testEndpointLink1(self): + wiki = self._getWikiFromStructure({ + 'Source.txt': "[[blah:Other]]", + '_meta/blah/Other.txt': "" + }) + + source = wiki.getPage('/Source') + self.assertEqual(format_link('Other', '/Other', endpoint='blah'), + source.text) + + def testEndpointLink2(self): + wiki = self._getWikiFromStructure({ + 'Folder/Source.txt': "[[blah:/Other]]", + '_meta/blah/Other.txt': "" + }) + + source = wiki.getPage('/Folder/Source') + self.assertEqual(format_link('Other', '/Other', endpoint='blah'), + source.text) + + def testEndpointLink3(self): + wiki = self._getWikiFromStructure({ + 'Source.txt': "[[blah:/Folder/Other]]", + '_meta/blah/Folder/Other.txt': "" + }) + + source = wiki.getPage('/Source') + self.assertEqual(format_link('Other', '/Folder/Other', endpoint='blah'), + source.text) + + def testEndpointLink4(self): + wiki = self._getWikiFromStructure({ + 'Folder/Source.txt': "[[blah:Other]]", + '_meta/blah/Folder/Other.txt': "" + }) + + source = wiki.getPage('/Folder/Source') + self.assertEqual(format_link('Other', '/Folder/Other', endpoint='blah'), + source.text) + + def testEndpointLink5(self): + wiki = self._getWikiFromStructure({ + '_meta/foo/Folder/Source.txt': "[[blah:Other]]", + '_meta/blah/Folder/Other.txt': "" + }) + + source = wiki.getPage('foo:/Folder/Source') + self.assertEqual(format_link('Other', '/Folder/Other', endpoint='blah'), + source.text) + + def testEndpointLink6(self): + wiki = self._getWikiFromStructure({ + '_meta/blah/Folder/Source.txt': "[[Other]]", + '_meta/blah/Folder/Other.txt': "" + }) + + source = wiki.getPage('blah:/Folder/Source') + self.assertEqual(format_link('Other', '/Folder/Other', endpoint='blah'), + source.text) + + def testEndpointLink7(self): + wiki = self._getWikiFromStructure({ + '_meta/blah/Source.txt': "[[Folder/Other]]", + '_meta/blah/Folder/Other.txt': "" + }) + + source = wiki.getPage('blah:/Source') + self.assertEqual(format_link('Other', '/Folder/Other', endpoint='blah'), + source.text) + + def testEndpointLink8(self): + wiki = self._getWikiFromStructure({ + '_meta/blah/Source.txt': "[[:/Other]]", + 'Other.txt': "" + }) + + source = wiki.getPage('blah:/Source') + self.assertEqual(format_link('Other', '/Other'), source.text) + + def testEndpointLink9(self): + wiki = self._getWikiFromStructure({ + '_meta/blah/Folder/Source.txt': "[[:Other]]", + 'Folder/Other.txt': "" + }) + + source = wiki.getPage('blah:/Folder/Source') + self.assertEqual(format_link('Other', '/Folder/Other'), source.text)