summaryrefslogtreecommitdiff
path: root/tests/urlpatterns
diff options
context:
space:
mode:
authordaniel a rios <misterrios@gmail.com>2019-04-24 22:51:47 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-06-24 11:47:56 +0200
commit76b993a117b61c41584e95149a67d8a1e9f49dd1 (patch)
tree317074f163cacbb137ec01ff6c7f39a76dc6fcf2 /tests/urlpatterns
parentd640c71fa35640b4c13107c074be2f52c52ad861 (diff)
downloaddjango-76b993a117b61c41584e95149a67d8a1e9f49dd1.tar.gz
Fixed #26431 -- Prevented django.urls.resolve() from returning missing optional parameters.
Previous behavior was inconsistent with django.urls.reverse() and caused that translate_url() created an incorrect URL when an optional parameter was missing.
Diffstat (limited to 'tests/urlpatterns')
-rw-r--r--tests/urlpatterns/tests.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/urlpatterns/tests.py b/tests/urlpatterns/tests.py
index 66212d7df8..214739f678 100644
--- a/tests/urlpatterns/tests.py
+++ b/tests/urlpatterns/tests.py
@@ -55,10 +55,18 @@ class SimplifiedURLTests(SimpleTestCase):
self.assertEqual(match.route, '^regex/(?P<pk>[0-9]+)/$')
def test_re_path_with_optional_parameter(self):
- match = resolve('/regex_optional/1/2/')
- self.assertEqual(match.url_name, 'regex_optional')
- self.assertEqual(match.kwargs, {'arg1': '1', 'arg2': '2'})
- self.assertEqual(match.route, r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?')
+ for url, kwargs in (
+ ('/regex_optional/1/2/', {'arg1': '1', 'arg2': '2'}),
+ ('/regex_optional/1/', {'arg1': '1'}),
+ ):
+ with self.subTest(url=url):
+ match = resolve(url)
+ self.assertEqual(match.url_name, 'regex_optional')
+ self.assertEqual(match.kwargs, kwargs)
+ self.assertEqual(
+ match.route,
+ r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?',
+ )
def test_path_lookup_with_inclusion(self):
match = resolve('/included_urls/extra/something/')