From 1de743e18ab8e5fdc0a169513143da5720b7a620 Mon Sep 17 00:00:00 2001 From: Lebaud Antoine Date: Fri, 8 Mar 2024 18:50:48 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(pagination)=20add=20few=20tests=20on?= =?UTF-8?q?=20page's=20size?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We created a custom Pagination class, were max_page_size is overriden. I decided to add bare minimum tests to make sure we can set the maximum page size using the 'page_size' query parameter. --- src/backend/core/tests/test_api_users.py | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/backend/core/tests/test_api_users.py b/src/backend/core/tests/test_api_users.py index f457020..c478232 100644 --- a/src/backend/core/tests/test_api_users.py +++ b/src/backend/core/tests/test_api_users.py @@ -440,6 +440,58 @@ def test_api_users_list_pagination( assert len(content["results"]) == 2 +@pytest.mark.parametrize("page_size", [1, 10, 99, 100]) +def test_api_users_list_pagination_page_size( + page_size, +): + """Page's size on pagination should work as expected.""" + identity = factories.IdentityFactory() + user = identity.user + + client = APIClient() + client.force_login(user) + + for i in range(page_size): + factories.UserFactory.create(email=f"user-{i}@people.com") + + response = client.get( + f"/api/v1.0/users/?page_size={page_size}", + ) + + assert response.status_code == HTTP_200_OK + content = response.json() + + assert content["count"] == page_size + 1 + assert len(content["results"]) == page_size + + +@pytest.mark.parametrize("page_size", [101, 200]) +def test_api_users_list_pagination_wrong_page_size( + page_size, +): + """Page's size on pagination should be limited to "max_page_size".""" + identity = factories.IdentityFactory() + user = identity.user + + client = APIClient() + client.force_login(user) + + for i in range(page_size): + factories.UserFactory.create(email=f"user-{i}@people.com") + + response = client.get( + f"/api/v1.0/users/?page_size={page_size}", + ) + + assert response.status_code == HTTP_200_OK + content = response.json() + + assert content["count"] == page_size + 1 + + # Length should not exceed "max_page_size" default value + assert len(content["results"]) == 100 + + def test_api_users_retrieve_me_anonymous(): """Anonymous users should not be allowed to list users.""" factories.UserFactory.create_batch(2)