diff tests/test_uriutil.py @ 484:d4321317beae

internal: Correctly split sub URIs. Add unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 22 Jul 2015 00:07:25 -0700
parents 422052d2e978
children 4284c673bb91
line wrap: on
line diff
--- a/tests/test_uriutil.py	Tue Jul 21 22:42:47 2015 -0700
+++ b/tests/test_uriutil.py	Wed Jul 22 00:07:25 2015 -0700
@@ -27,21 +27,68 @@
 
 
 @pytest.mark.parametrize('uri, expected, pretty_urls', [
-    ('foo/bar', ('foo/bar', 1), True),
-    ('foo/bar/2', ('foo/bar', 2), True),
-    ('foo/bar.ext', ('foo/bar.ext', 1), True),
-    ('foo/bar.ext/2', ('foo/bar.ext', 2), True),
-    ('foo/bar.html', ('foo/bar.html', 1), False),
-    ('foo/bar/2.html', ('foo/bar.html', 2), False),
-    ('foo/bar.ext', ('foo/bar.ext', 1), False),
-    ('foo/bar/2.ext', ('foo/bar.ext', 2), False)
+    ('/', ('/', 1), True),
+    ('/2', ('/', 2), True),
+    ('/foo/bar', ('/foo/bar', 1), True),
+    ('/foo/bar/2', ('/foo/bar', 2), True),
+    ('/foo/bar.ext', ('/foo/bar.ext', 1), True),
+    ('/foo/bar.ext/2', ('/foo/bar.ext', 2), True),
+    ('/', ('/', 1), False),
+    ('/2.html', ('/', 2), False),
+    ('/foo/bar.html', ('/foo/bar.html', 1), False),
+    ('/foo/bar/2.html', ('/foo/bar.html', 2), False),
+    ('/foo/bar.ext', ('/foo/bar.ext', 1), False),
+    ('/foo/bar/2.ext', ('/foo/bar.ext', 2), False)
     ])
 def test_split_sub_uri(uri, expected, pretty_urls):
     app = mock.MagicMock()
     app.config = {
+            'site/root': '/',
+            'site/pretty_urls': pretty_urls,
+            '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'}
+    actual = split_sub_uri(app, uri)
+    assert actual == (expected[0], expected[1])
+
+
+@pytest.mark.parametrize('uri, expected, pretty_urls', [
+    ('/', ('/', 1), True),
+    ('/2/', ('/', 2), True),
+    ('/foo/bar/', ('/foo/bar/', 1), True),
+    ('/foo/bar/2/', ('/foo/bar/', 2), True),
+    ('/foo/bar.ext/', ('/foo/bar.ext/', 1), True),
+    ('/foo/bar.ext/2/', ('/foo/bar.ext/', 2), True),
+    ])
+def test_split_sub_uri_trailing_slash(uri, expected, pretty_urls):
+    app = mock.MagicMock()
+    app.config = {
+            'site/root': '/',
+            'site/pretty_urls': pretty_urls,
+            'site/trailing_slash': True,
+            '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'}
+    actual = split_sub_uri(app, uri)
+    assert actual == (expected[0], expected[1])
+
+
+@pytest.mark.parametrize('uri, expected, pretty_urls', [
+    ('/', ('/', 1), True),
+    ('/2', ('/', 2), True),
+    ('/foo/bar', ('/foo/bar', 1), True),
+    ('/foo/bar/2', ('/foo/bar', 2), True),
+    ('/foo/bar.ext', ('/foo/bar.ext', 1), True),
+    ('/foo/bar.ext/2', ('/foo/bar.ext', 2), True),
+    ('/', ('/', 1), False),
+    ('/2.html', ('/', 2), False),
+    ('/foo/bar.html', ('/foo/bar.html', 1), False),
+    ('/foo/bar/2.html', ('/foo/bar.html', 2), False),
+    ('/foo/bar.ext', ('/foo/bar.ext', 1), False),
+    ('/foo/bar/2.ext', ('/foo/bar.ext', 2), False)
+    ])
+def test_split_sub_uri_with_root(uri, expected, pretty_urls):
+    app = mock.MagicMock()
+    app.config = {
             'site/root': '/whatever/',
             'site/pretty_urls': pretty_urls,
             '__cache/pagination_suffix_re': '/(?P<num>\\d+)$'}
-    actual = split_sub_uri(app, '/whatever/' + uri)
-    assert actual == ('/whatever/' + expected[0], expected[1])
+    actual = split_sub_uri(app, '/whatever' + uri)
+    assert actual == ('/whatever' + expected[0], expected[1])