From d5e6562231b1c33f7dd0037a38d0547b2615f900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dlouh=C3=BD?= Date: Sun, 28 Oct 2018 14:40:01 +0100 Subject: [PATCH] fix #257 and test various url patterns --- sitetree/sitetreeapp.py | 2 +- sitetree/tests/test_models.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/sitetree/sitetreeapp.py b/sitetree/sitetreeapp.py index caf889a8..3efe0b4b 100644 --- a/sitetree/sitetreeapp.py +++ b/sitetree/sitetreeapp.py @@ -682,7 +682,7 @@ def url(self, sitetree_item, context=None): # We enclose arg in double quotes as already resolved. all_arguments.append('"%s"' % resolved) - view_path = view_path[0].strip('"\' ') + view_path = view_path[0].strip('"\'') url_pattern = "'%s' %s" % (view_path, ' '.join(all_arguments)) diff --git a/sitetree/tests/test_models.py b/sitetree/tests/test_models.py index c9fefa7a..4b391848 100644 --- a/sitetree/tests/test_models.py +++ b/sitetree/tests/test_models.py @@ -48,3 +48,35 @@ def test_model_tree_item(): with pytest.raises(Exception): TreeItem(tree=tree1, alias='only').save() # Unique alias within tree + + +def test_sitetree_url(): + """ Few simple tests to ensure SiteTree.url function works properly """ + from sitetree.models import Tree, TreeItem + from sitetree.sitetreeapp import get_sitetree + tree1 = Tree(alias='test') + tree1.save() + st = get_sitetree() + + item = TreeItem(tree=tree1, alias='other', url='foo', pk=1) + assert st.url(item) == "foo" + + item = TreeItem(tree=tree1, alias='other', url='foo/bar', pk=2) + assert st.url(item) == "foo/bar" + + item = TreeItem(tree=tree1, alias='other', url='contacts_china \'2\'', urlaspattern=True, pk=3) + assert st.url(item) == "/contacts/australia/2/" + + item = TreeItem(tree=tree1, alias='other', url='contacts_china 2', urlaspattern=True, pk=4) + assert st.url(item) == "/contacts/australia/2/" + + item = TreeItem(tree=tree1, alias='other', url='contacts_china', urlaspattern=True, pk=6) + assert st.url(item) == "#unresolved" + + # Test that any of the symbols inserted as url don't break the app + item = TreeItem(tree=tree1, alias='other', url='!contacts_china$%^čř%*#$@=!§¨`°"', urlaspattern=True, pk=7) + assert st.url(item) == "#unresolved" + + # Test for bug #257 + item = TreeItem(tree=tree1, alias='other', url="contacts_ch'ina", urlaspattern=True, pk=8) + assert st.url(item) == "#unresolved"