Fixed #32565 -- Moved internal URLResolver view-strings mapping to admindocs.

Moved the functionality of URLResolver._is_callback(),
URLResolver._callback_strs, URLPattern.lookup_str() to
django.contrib.admindocs.
This commit is contained in:
Alokik Vijay 2022-05-17 09:46:26 +02:00 committed by Carlton Gibson
parent 2a5d2eefc7
commit 7f3cfaa12b
8 changed files with 87 additions and 50 deletions

View file

@ -1,13 +1,15 @@
import unittest
from django.contrib.admindocs.utils import (
_is_callback,
docutils_is_available,
parse_docstring,
parse_rst,
)
from django.test.utils import captured_stderr
from django.urls import get_resolver
from .tests import AdminDocsSimpleTestCase
from .tests import AdminDocsSimpleTestCase, SimpleTestCase
@unittest.skipUnless(docutils_is_available, "no docutils installed.")
@ -119,3 +121,28 @@ class TestUtils(AdminDocsSimpleTestCase):
markup = "<p>reST, <cite>interpreted text</cite>, default role.</p>\n"
parts = docutils.core.publish_parts(source=source, writer_name="html4css1")
self.assertEqual(parts["fragment"], markup)
class TestResolver(SimpleTestCase):
def test_namespaced_view_detail(self):
resolver = get_resolver("urlpatterns_reverse.nested_urls")
self.assertTrue(_is_callback("urlpatterns_reverse.nested_urls.view1", resolver))
self.assertTrue(_is_callback("urlpatterns_reverse.nested_urls.view2", resolver))
self.assertTrue(_is_callback("urlpatterns_reverse.nested_urls.View3", resolver))
self.assertFalse(_is_callback("urlpatterns_reverse.nested_urls.blub", resolver))
def test_view_detail_as_method(self):
# Views which have a class name as part of their path.
resolver = get_resolver("urlpatterns_reverse.method_view_urls")
self.assertTrue(
_is_callback(
"urlpatterns_reverse.method_view_urls.ViewContainer.method_view",
resolver,
)
)
self.assertTrue(
_is_callback(
"urlpatterns_reverse.method_view_urls.ViewContainer.classmethod_view",
resolver,
)
)