summaryrefslogtreecommitdiff
path: root/tests/template_tests/syntax_tests/test_querystring.py
diff options
context:
space:
mode:
authorMarc Gibbons <1726961+marcgibbons@users.noreply.github.com>2025-12-08 09:42:43 -0500
committernessita <124304+nessita@users.noreply.github.com>2025-12-15 18:58:41 -0300
commit922c4cf972e04b1ce7ecee592231106724dcfd09 (patch)
tree3f89115c73d3c79548883831aa5c811c444e6cb5 /tests/template_tests/syntax_tests/test_querystring.py
parent0071cb1efd559d721e5882da2e18556f867eed76 (diff)
Fixed #36783 -- Ensured proper handling of multi-value QueryDicts in querystring template tag.
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com> Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
Diffstat (limited to 'tests/template_tests/syntax_tests/test_querystring.py')
-rw-r--r--tests/template_tests/syntax_tests/test_querystring.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/template_tests/syntax_tests/test_querystring.py b/tests/template_tests/syntax_tests/test_querystring.py
index af8dbde955..8e0722f0fa 100644
--- a/tests/template_tests/syntax_tests/test_querystring.py
+++ b/tests/template_tests/syntax_tests/test_querystring.py
@@ -58,6 +58,22 @@ class QueryStringTagTests(SimpleTestCase):
context = RequestContext(request)
self.assertRenderEqual("querystring_multiple", context, expected="?x=y&amp;a=b")
+ @setup({"querystring_multiple_lists": "{% querystring %}"})
+ def test_querystring_multiple_lists(self):
+ request = self.request_factory.get("/", {"x": ["y", "z"], "a": ["b", "c"]})
+ context = RequestContext(request)
+ expected = "?x=y&amp;x=z&amp;a=b&amp;a=c"
+ self.assertRenderEqual("querystring_multiple_lists", context, expected=expected)
+
+ @setup({"querystring_lists_with_replacement": "{% querystring a=1 %}"})
+ def test_querystring_lists_with_replacement(self):
+ request = self.request_factory.get("/", {"x": ["y", "z"], "a": ["b", "c"]})
+ context = RequestContext(request)
+ expected = "?x=y&amp;x=z&amp;a=1"
+ self.assertRenderEqual(
+ "querystring_lists_with_replacement", context, expected=expected
+ )
+
@setup({"querystring_empty_params": "{% querystring qd %}"})
def test_querystring_empty_params(self):
cases = [{}, QueryDict()]
@@ -111,6 +127,44 @@ class QueryStringTagTests(SimpleTestCase):
context = RequestContext(request, {"my_dict": {"test": None}})
self.assertRenderEqual("querystring_remove_dict", context, expected="?a=1")
+ @setup({"querystring_remove_querydict": "{% querystring request my_query_dict %}"})
+ def test_querystring_remove_querydict(self):
+ request = self.request_factory.get("/", {"x": "1"})
+ my_qd = QueryDict(mutable=True)
+ my_qd["x"] = None
+ context = RequestContext(
+ request, {"request": request.GET, "my_query_dict": my_qd}
+ )
+ self.assertRenderEqual("querystring_remove_querydict", context, expected="?")
+
+ @setup(
+ {"querystring_remove_querydict_many": "{% querystring request my_query_dict %}"}
+ )
+ def test_querystring_remove_querydict_many(self):
+ request = self.request_factory.get(
+ "/", {"test": ["value1", "value2"], "a": [1, 2]}
+ )
+
+ qd_none = QueryDict(mutable=True)
+ qd_none["test"] = None
+
+ qd_list_none = QueryDict(mutable=True)
+ qd_list_none.setlist("test", [None, None])
+
+ qd_empty_list = QueryDict(mutable=True)
+ qd_empty_list.setlist("test", [])
+
+ for qd in (qd_none, qd_list_none, qd_empty_list):
+ with self.subTest(my_query_dict=qd):
+ context = RequestContext(
+ request, {"request": request.GET, "my_query_dict": qd}
+ )
+ self.assertRenderEqual(
+ "querystring_remove_querydict_many",
+ context,
+ expected="?a=1&amp;a=2",
+ )
+
@setup({"querystring_variable": "{% querystring a=a %}"})
def test_querystring_variable(self):
request = self.request_factory.get("/")