Refs #30515 -- Added tests for resolve_url() with view callables and arguments.

This commit is contained in:
Natalia
2025-12-24 18:33:41 -03:00
committed by nessita
parent 626c15dba0
commit 6c2780ffe1
3 changed files with 51 additions and 5 deletions

View File

@@ -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

View File

@@ -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/<slug:slug>/", params_view, name="params-view"),
path("params-cbv/<int:pk>/", params_cbv, name="params-cbv"),
path("some-url/", some_view, name="some-view"),
path("some-cbv/", some_cbv, name="some-cbv"),
]

View File

@@ -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()