Fix resolved link class URL mangling when the keep_query argument is used.

Fixes source navigation on the document upload wizard. Thanks to
Nick Douma (LordGaav) for the report and diagnostic information. GitLab
issue #436.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-09-10 20:31:38 -04:00
parent 51026cc55e
commit da8fa6f91c
5 changed files with 55 additions and 2 deletions

View File

@@ -15,7 +15,8 @@ from ..classes import Link, Menu
from .literals import (
TEST_PERMISSION_NAMESPACE_NAME, TEST_PERMISSION_NAMESPACE_TEXT,
TEST_PERMISSION_NAME, TEST_PERMISSION_LABEL, TEST_LINK_TEXT,
TEST_MENU_NAME, TEST_SUBMENU_NAME, TEST_UNICODE_STRING
TEST_MENU_NAME, TEST_QUERYSTRING_ONE_KEY, TEST_QUERYSTRING_TWO_KEYS,
TEST_SUBMENU_NAME, TEST_UNICODE_STRING, TEST_URL
)
@@ -115,6 +116,43 @@ class LinkClassTestCase(GenericViewTestCase):
self.assertEqual(resolved_link.url, url.url)
def test_link_with_querystring_preservation(self):
previous_url = '{}?{}'.format(
reverse(TEST_VIEW_NAME), TEST_QUERYSTRING_TWO_KEYS
)
self.link.keep_query = True
self.link.url = TEST_URL
self.link.view = None
response = self.get(path=previous_url)
context = Context({'request': response.wsgi_request})
resolved_link = self.link.resolve(context=context)
self.assertEqual(
resolved_link.url,
'{}?{}'.format(TEST_URL, TEST_QUERYSTRING_TWO_KEYS)
)
def test_link_with_querystring_preservation_with_key_removal(self):
previous_url = '{}?{}'.format(
reverse(TEST_VIEW_NAME), TEST_QUERYSTRING_TWO_KEYS
)
self.link.keep_query = True
self.link.url = TEST_URL
self.link.view = None
self.link.remove_from_query = ['key2']
response = self.get(path=previous_url)
context = Context({'request': response.wsgi_request})
resolved_link = self.link.resolve(context=context)
self.assertEqual(
resolved_link.url,
'{}?{}'.format(TEST_URL, TEST_QUERYSTRING_ONE_KEY)
)
class MenuClassTestCase(GenericViewTestCase):
def setUp(self):
super(MenuClassTestCase, self).setUp()