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)