Opened 5 hours ago

Last modified 5 hours ago

#36589 new Bug

assertTemplateUsed asserts against template partial name regardless of origin

Reported by: Jacob Walls Owned by:
Component: Testing framework Version: dev
Severity: Release blocker Keywords:
Cc: Farhan Ali, Carlton Gibson Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

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

comment:1 by Jacob Walls, 5 hours ago

Component: Template systemTesting framework
Note: See TracTickets for help on using tickets.
Back to Top