diff options
author | Alokik Vijay <alokik.roe@gmail.com> | 2022-03-28 21:26:20 +0530 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-03-29 10:27:40 +0200 |
commit | baf9604ed8fed3e6e7ddfaca2d83c377c81399ae (patch) | |
tree | 141aee743c3cae65e6e4522859489d3c0da1d4aa /tests/urlpatterns_reverse | |
parent | 83c803f161044fbfbfcd9a0c94ca93dc131be662 (diff) | |
download | django-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.py | 5 | ||||
-rw-r--r-- | tests/urlpatterns_reverse/tests.py | 27 | ||||
-rw-r--r-- | tests/urlpatterns_reverse/urls.py | 7 |
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"), |