summaryrefslogtreecommitdiff
path: root/tests/urlpatterns_reverse
diff options
context:
space:
mode:
authorAlokik Vijay <alokik.roe@gmail.com>2022-03-28 21:26:20 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-03-29 10:27:40 +0200
commitbaf9604ed8fed3e6e7ddfaca2d83c377c81399ae (patch)
tree141aee743c3cae65e6e4522859489d3c0da1d4aa /tests/urlpatterns_reverse
parent83c803f161044fbfbfcd9a0c94ca93dc131be662 (diff)
downloaddjango-baf9604ed8fed3e6e7ddfaca2d83c377c81399ae.tar.gz
Fixed #16406 -- Added ResolveMatch.captured_kwargs and extra_kwargs.
Thanks Florian Apolloner for the review and implementation idea.
Diffstat (limited to 'tests/urlpatterns_reverse')
-rw-r--r--tests/urlpatterns_reverse/namespace_urls.py5
-rw-r--r--tests/urlpatterns_reverse/tests.py27
-rw-r--r--tests/urlpatterns_reverse/urls.py7
3 files changed, 37 insertions, 2 deletions
diff --git a/tests/urlpatterns_reverse/namespace_urls.py b/tests/urlpatterns_reverse/namespace_urls.py
index 2e3db3ecc3..4a39ab2290 100644
--- a/tests/urlpatterns_reverse/namespace_urls.py
+++ b/tests/urlpatterns_reverse/namespace_urls.py
@@ -23,7 +23,10 @@ urlpatterns = [
path("resolver_match/", views.pass_resolver_match_view, name="test-resolver-match"),
re_path(r"^\+\\\$\*/$", views.empty_view, name="special-view"),
re_path(
- r"^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$", views.empty_view, name="mixed-args"
+ r"^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$",
+ views.empty_view,
+ {"extra": True},
+ name="mixed-args",
),
re_path(r"^no_kwargs/([0-9]+)/([0-9]+)/$", views.empty_view, name="no-kwargs"),
re_path(
diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py
index 59c22dd589..89dfd0deba 100644
--- a/tests/urlpatterns_reverse/tests.py
+++ b/tests/urlpatterns_reverse/tests.py
@@ -89,7 +89,7 @@ resolve_test_data = (
"mixed-args",
views.empty_view,
(),
- {"arg2": "37"},
+ {"extra": True, "arg2": "37"},
),
(
"/included/mixed_args/42/37/",
@@ -1554,6 +1554,16 @@ class ResolverMatchTests(SimpleTestCase):
"namespaces=[], route='^no_kwargs/([0-9]+)/([0-9]+)/$')",
)
+ def test_repr_extra_kwargs(self):
+ self.assertEqual(
+ repr(resolve("/mixed_args/1986/11/")),
+ "ResolverMatch(func=urlpatterns_reverse.views.empty_view, args=(), "
+ "kwargs={'arg2': '11', 'extra': True}, url_name='mixed-args', "
+ "app_names=[], namespaces=[], "
+ "route='^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', "
+ "captured_kwargs={'arg2': '11'}, extra_kwargs={'extra': True})",
+ )
+
@override_settings(ROOT_URLCONF="urlpatterns_reverse.reverse_lazy_urls")
def test_classbased_repr(self):
self.assertEqual(
@@ -1758,3 +1768,18 @@ class LookaheadTests(SimpleTestCase):
with self.subTest(name=name, kwargs=kwargs):
with self.assertRaises(NoReverseMatch):
reverse(name, kwargs=kwargs)
+
+
+@override_settings(ROOT_URLCONF="urlpatterns_reverse.urls")
+class ReverseResolvedTests(SimpleTestCase):
+ def test_rereverse(self):
+ match = resolve("/resolved/12/")
+ self.assertEqual(
+ reverse(match.url_name, args=match.args, kwargs=match.kwargs),
+ "/resolved/12/",
+ )
+ match = resolve("/resolved-overridden/12/url/")
+ self.assertEqual(
+ reverse(match.url_name, args=match.args, kwargs=match.captured_kwargs),
+ "/resolved-overridden/12/url/",
+ )
diff --git a/tests/urlpatterns_reverse/urls.py b/tests/urlpatterns_reverse/urls.py
index ba3f51b563..c745331483 100644
--- a/tests/urlpatterns_reverse/urls.py
+++ b/tests/urlpatterns_reverse/urls.py
@@ -78,6 +78,13 @@ urlpatterns = [
name="windows",
),
re_path(r"^special_chars/(?P<chars>.+)/$", empty_view, name="special"),
+ re_path(r"^resolved/(?P<arg>\d+)/$", empty_view, {"extra": True}, name="resolved"),
+ re_path(
+ r"^resolved-overridden/(?P<arg>\d+)/(?P<overridden>\w+)/$",
+ empty_view,
+ {"extra": True, "overridden": "default"},
+ name="resolved-overridden",
+ ),
re_path(r"^(?P<name>.+)/[0-9]+/$", empty_view, name="mixed"),
re_path(r"^repeats/a{1,2}/$", empty_view, name="repeats"),
re_path(r"^repeats/a{2,4}/$", empty_view, name="repeats2"),