diff options
| author | Tom Carrick <tom@carrick.eu> | 2023-10-15 22:01:35 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-10-26 09:57:21 +0200 |
| commit | e67d3580edbee1a4b58d40875293714ac3fc6937 (patch) | |
| tree | 1299d0a74e11e3d5f6039459510cd12f73985078 /tests/template_tests | |
| parent | 718b32c6918037cfc746d7867333d79a3c887a8c (diff) | |
Fixed #10941 -- Added {% query_string %} template tag.
Diffstat (limited to 'tests/template_tests')
| -rw-r--r-- | tests/template_tests/syntax_tests/test_query_string.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/template_tests/syntax_tests/test_query_string.py b/tests/template_tests/syntax_tests/test_query_string.py new file mode 100644 index 0000000000..13c0dc1d08 --- /dev/null +++ b/tests/template_tests/syntax_tests/test_query_string.py @@ -0,0 +1,100 @@ +from django.http import QueryDict +from django.template import RequestContext +from django.test import RequestFactory, SimpleTestCase + +from ..utils import setup + + +class QueryStringTagTests(SimpleTestCase): + def setUp(self): + self.request_factory = RequestFactory() + + @setup({"query_string_empty": "{% query_string %}"}) + def test_query_string_empty(self): + request = self.request_factory.get("/") + template = self.engine.get_template("query_string_empty") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "") + + @setup({"query_string_non_empty": "{% query_string %}"}) + def test_query_string_non_empty(self): + request = self.request_factory.get("/", {"a": "b"}) + template = self.engine.get_template("query_string_non_empty") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "?a=b") + + @setup({"query_string_multiple": "{% query_string %}"}) + def test_query_string_multiple(self): + request = self.request_factory.get("/", {"x": "y", "a": "b"}) + template = self.engine.get_template("query_string_multiple") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "?x=y&a=b") + + @setup({"query_string_replace": "{% query_string a=1 %}"}) + def test_query_string_replace(self): + request = self.request_factory.get("/", {"x": "y", "a": "b"}) + template = self.engine.get_template("query_string_replace") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "?x=y&a=1") + + @setup({"query_string_add": "{% query_string test_new='something' %}"}) + def test_query_string_add(self): + request = self.request_factory.get("/", {"a": "b"}) + template = self.engine.get_template("query_string_add") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "?a=b&test_new=something") + + @setup({"query_string_remove": "{% query_string test=None a=1 %}"}) + def test_query_string_remove(self): + request = self.request_factory.get("/", {"test": "value", "a": "1"}) + template = self.engine.get_template("query_string_remove") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "?a=1") + + @setup( + {"query_string_remove_nonexistent": "{% query_string nonexistent=None a=1 %}"} + ) + def test_query_string_remove_nonexistent(self): + request = self.request_factory.get("/", {"x": "y", "a": "1"}) + template = self.engine.get_template("query_string_remove_nonexistent") + context = RequestContext(request) + output = template.render(context) + self.assertEqual(output, "?x=y&a=1") + + @setup({"query_string_list": "{% query_string a=my_list %}"}) + def test_query_string_add_list(self): + request = self.request_factory.get("/") + template = self.engine.get_template("query_string_list") + context = RequestContext(request, {"my_list": [2, 3]}) + output = template.render(context) + self.assertEqual(output, "?a=2&a=3") + + @setup({"query_string_query_dict": "{% query_string request.GET a=2 %}"}) + def test_query_string_with_explicit_query_dict(self): + request = self.request_factory.get("/", {"a": 1}) + output = self.engine.render_to_string( + "query_string_query_dict", {"request": request} + ) + self.assertEqual(output, "?a=2") + + @setup( + {"query_string_query_dict_no_request": "{% query_string my_query_dict a=2 %}"} + ) + def test_query_string_with_explicit_query_dict_and_no_request(self): + context = {"my_query_dict": QueryDict("a=1&b=2")} + output = self.engine.render_to_string( + "query_string_query_dict_no_request", context + ) + self.assertEqual(output, "?a=2&b=2") + + @setup({"query_string_no_request_no_query_dict": "{% query_string %}"}) + def test_query_string_without_request_or_explicit_query_dict(self): + msg = "'Context' object has no attribute 'request'" + with self.assertRaisesMessage(AttributeError, msg): + self.engine.render_to_string("query_string_no_request_no_query_dict") |
