assertTemplateUsed asserts against template partial name regardless of origin
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 --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.
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.
Change History
(9)
Component: |
Template system → Testing framework
|
Triage Stage: |
Unreviewed → Accepted
|
Owner: |
set to Caitlin B
|
Status: |
new → assigned
|
Triage Stage: |
Accepted → Ready for checkin
|
Patch needs improvement: |
set
|
Triage Stage: |
Ready for checkin → Accepted
|
Patch needs improvement: |
unset
|
Resolution: |
→ fixed
|
Status: |
assigned → closed
|
Triage Stage: |
Accepted → Ready for checkin
|
Hey Jacob, thanks for the report! I have reproduced how
assertTemplateUsed
only matches the partial name (hello
) and ignores the qualified path (template_used/partials.html#hello
).I agree that using
template_used/partials.html#hello
should provide a passing test assertion.