diff options
| author | Tom Carrick <tom@carrick.eu> | 2023-11-05 16:41:16 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-23 10:39:29 +0100 |
| commit | a03593967f098cf8dab79065bcabbcebd461f05b (patch) | |
| tree | f5634ad9ae6d2e42ac8d7254bc85d0d4ceae0bee /tests/test_client | |
| parent | e76cc93b0168fa3abbafb9af1ab4535814b751f0 (diff) | |
Fixed #14611 -- Added query_params argument to RequestFactory and Client classes.
Diffstat (limited to 'tests/test_client')
| -rw-r--r-- | tests/test_client/tests.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/test_client/tests.py b/tests/test_client/tests.py index 15f5cbe44e..cfd040f7bc 100644 --- a/tests/test_client/tests.py +++ b/tests/test_client/tests.py @@ -1002,6 +1002,36 @@ class ClientTest(TestCase): ) self.assertEqual(response.content, b"named_temp_file") + def test_query_params(self): + tests = ( + "get", + "post", + "put", + "patch", + "delete", + "head", + "options", + "trace", + ) + for method in tests: + with self.subTest(method=method): + client_method = getattr(self.client, method) + response = client_method("/get_view/", query_params={"example": "data"}) + self.assertEqual(response.wsgi_request.GET["example"], "data") + + def test_cannot_use_data_and_query_params_together(self): + tests = ["get", "head"] + msg = "query_params and data arguments are mutually exclusive." + for method in tests: + with self.subTest(method=method): + client_method = getattr(self.client, method) + with self.assertRaisesMessage(ValueError, msg): + client_method( + "/get_view/", + data={"example": "data"}, + query_params={"q": "terms"}, + ) + @override_settings( MIDDLEWARE=["django.middleware.csrf.CsrfViewMiddleware"], @@ -1127,6 +1157,23 @@ class RequestFactoryTest(SimpleTestCase): self.assertEqual(request.headers["x-another-header"], "some other value") self.assertIn("HTTP_X_ANOTHER_HEADER", request.META) + def test_request_factory_query_params(self): + tests = ( + "get", + "post", + "put", + "patch", + "delete", + "head", + "options", + "trace", + ) + for method in tests: + with self.subTest(method=method): + factory = getattr(self.request_factory, method) + request = factory("/somewhere", query_params={"example": "data"}) + self.assertEqual(request.GET["example"], "data") + @override_settings(ROOT_URLCONF="test_client.urls") class AsyncClientTest(TestCase): @@ -1183,6 +1230,25 @@ class AsyncClientTest(TestCase): response = await self.async_client.get("/post_view/") self.assertContains(response, "Viewing GET page.") + async def test_query_params(self): + tests = ( + "get", + "post", + "put", + "patch", + "delete", + "head", + "options", + "trace", + ) + for method in tests: + with self.subTest(method=method): + client_method = getattr(self.async_client, method) + response = await client_method( + "/async_get_view/", query_params={"example": "data"} + ) + self.assertEqual(response.asgi_request.GET["example"], "data") + @override_settings(ROOT_URLCONF="test_client.urls") class AsyncRequestFactoryTest(SimpleTestCase): @@ -1264,3 +1330,33 @@ class AsyncRequestFactoryTest(SimpleTestCase): request = self.request_factory.get("/somewhere/", {"example": "data"}) self.assertNotIn("Query-String", request.headers) self.assertEqual(request.GET["example"], "data") + + def test_request_factory_query_params(self): + tests = ( + "get", + "post", + "put", + "patch", + "delete", + "head", + "options", + "trace", + ) + for method in tests: + with self.subTest(method=method): + factory = getattr(self.request_factory, method) + request = factory("/somewhere", query_params={"example": "data"}) + self.assertEqual(request.GET["example"], "data") + + def test_cannot_use_data_and_query_params_together(self): + tests = ["get", "head"] + msg = "query_params and data arguments are mutually exclusive." + for method in tests: + with self.subTest(method=method): + factory = getattr(self.request_factory, method) + with self.assertRaisesMessage(ValueError, msg): + factory( + "/somewhere", + data={"example": "data"}, + query_params={"q": "terms"}, + ) |
