From 6c2780ffe1aaf526e01287f9d0805143c23c7920 Mon Sep 17 00:00:00 2001 From: Natalia <124304+nessita@users.noreply.github.com> Date: Wed, 24 Dec 2025 18:33:41 -0300 Subject: [PATCH] Refs #30515 -- Added tests for resolve_url() with view callables and arguments. --- tests/resolve_url/tests.py | 24 +++++++++++++++++++++++- tests/resolve_url/urls.py | 8 ++++---- tests/resolve_url/views.py | 24 ++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 tests/resolve_url/views.py diff --git a/tests/resolve_url/tests.py b/tests/resolve_url/tests.py index 26fe783bf3..e5cdfe9618 100644 --- a/tests/resolve_url/tests.py +++ b/tests/resolve_url/tests.py @@ -3,7 +3,7 @@ from django.test import SimpleTestCase, override_settings from django.urls import NoReverseMatch, reverse_lazy from .models import UnimportantThing -from .urls import some_view +from .views import params_cbv, params_view, some_cbv, some_view @override_settings(ROOT_URLCONF="resolve_url.urls") @@ -50,6 +50,28 @@ class ResolveUrlTests(SimpleTestCase): resolved_url = resolve_url(some_view) self.assertEqual("/some-url/", resolved_url) + def test_view_function_with_kwargs(self): + self.assertEqual("/params/django/", resolve_url(params_view, slug="django")) + + def test_view_function_with_args(self): + self.assertEqual("/params/django/", resolve_url(params_view, "django")) + + def test_class_based_view(self): + self.assertEqual("/some-cbv/", resolve_url(some_cbv)) + + def test_class_based_view_with_kwargs(self): + self.assertEqual("/params-cbv/5/", resolve_url(params_cbv, pk=5)) + + def test_class_based_view_with_args(self): + self.assertEqual("/params-cbv/5/", resolve_url(params_cbv, 5)) + + def test_missing_params_raise_no_reverse_match(self): + with self.assertRaises(NoReverseMatch): + resolve_url(params_view) + + with self.assertRaises(NoReverseMatch): + resolve_url(params_cbv) + def test_lazy_reverse(self): """ Passing the result of reverse_lazy is resolved to a real URL diff --git a/tests/resolve_url/urls.py b/tests/resolve_url/urls.py index 4cd4ffa03f..e0ce8b5149 100644 --- a/tests/resolve_url/urls.py +++ b/tests/resolve_url/urls.py @@ -1,10 +1,10 @@ from django.urls import path - -def some_view(request): - pass - +from .views import params_cbv, params_view, some_cbv, some_view urlpatterns = [ + path("params//", params_view, name="params-view"), + path("params-cbv//", params_cbv, name="params-cbv"), path("some-url/", some_view, name="some-view"), + path("some-cbv/", some_cbv, name="some-cbv"), ] diff --git a/tests/resolve_url/views.py b/tests/resolve_url/views.py new file mode 100644 index 0000000000..987c746d67 --- /dev/null +++ b/tests/resolve_url/views.py @@ -0,0 +1,24 @@ +from django.http import HttpResponse +from django.views import View + + +def some_view(request): + return HttpResponse("ok") + + +def params_view(request, slug): + return HttpResponse(f"Params: {slug}") + + +class SomeView(View): + def get(self, request): + return HttpResponse("ok") + + +class ParamsView(View): + def get(self, request, pk): + return HttpResponse(f"Params: {pk}") + + +some_cbv = SomeView.as_view() +params_cbv = ParamsView.as_view()