#36589: assertTemplateUsed asserts against template partial name regardless of
origin
-----------------------------+-------------------------------------------
Reporter: Jacob Walls | Type: Bug
Status: new | Component: Template system
Version: dev | Severity: Release blocker
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------+-------------------------------------------
Currently, you can provide a named template partial like `"hello"` to
`assertTemplateUsed`, which scrupulously complies with its doc'd intention
to assert against names, but I can imagine wanting to provide the
"qualified" path like `my_page.html#hello`:
{{{#!diff
diff --git a/tests/test_utils/templates/template_used/partials.html
b/tests/test_utils/templates/template_used/partials.html
new file mode 100644
index 0000000000..5c8db3d657
--- /dev/null
+++ b/tests/test_utils/templates/template_used/partials.html
@@ -0,0 +1,5 @@
+{% partialdef hello %}
+<p>Hello</p>
+{% endpartialdef %}
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index 9c22b61b4f..f7500ddc22 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -510,6 +510,14 @@ class
AssertTemplateUsedContextManagerTests(SimpleTestCase):
render_to_string("template_used/base.html")
render_to_string("template_used/base.html")
+ # passes
+ with self.assertTemplateUsed("hello"):
+ render_to_string("template_used/partials.html#hello")
+
+ # fails
+ with
self.assertTemplateUsed("template_used/partials.html#hello"):
+ render_to_string("template_used/partials.html#hello")
+
def test_nested_usage(self):
with self.assertTemplateUsed("template_used/base.html"):
with self.assertTemplateUsed("template_used/include.html"):
}}}
Notice the hint "Actual template(s) used: hello" does not point to the
origin, really.
{{{#!py
AssertionError: False is not true : Template
'template_used/partials.html#hello' was not a template used to render the
response. Actual template(s) used: hello
}}}
And if we regard the ''unqualified'' way as dubious, I'm suggesting we
should yank it before 6.0.
The fix doesn't look to be invasive. Curious to hear from others.
--
Ticket URL: <
https://code.djangoproject.com/ticket/36589>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.