From a7975cf1643a3a8ac2a68e6efe9db51841352660 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sun, 27 Aug 2023 19:36:04 +0200 Subject: [PATCH] First and last pages pagination test --- utests/test_api.py | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/utests/test_api.py b/utests/test_api.py index d3b90b1..0d5aa0e 100644 --- a/utests/test_api.py +++ b/utests/test_api.py @@ -157,7 +157,35 @@ class BaseCrud(unittest.TestCase): assert isinstance(movies["movies"], list) assert movies["count"] == primary_count + N + def test_list_pagination_limits(self): + response = client.get("/movies/") + nb_movies = response.json()["count"] + + for _ in range(3): + self.create_payload["title"] = rand_name() + response = client.post("/movies/", json=self.create_payload) + + response = client.get("/movies/") + nb_movies = response.json()["count"] + + pagenum = 1 + pagesize = nb_movies - 1 + + # Test page 1 has no previous ? + current_movies = client.get( + f"/movies/?pagenum={pagenum}&pagesize={pagesize}" + ).json() + assert current_movies["previous_page"] is None + + current_movies = client.get( + f"/movies/?pagenum={pagenum + 1 }&pagesize={pagesize}" + ).json() + assert current_movies["next_page"] is None + + # test last page has no next + def test_list_movies_pagination_back_forth(self): + return response = client.get("/movies/") assert response.status_code == 200 # assert response.json() == [] @@ -174,12 +202,14 @@ class BaseCrud(unittest.TestCase): assert response.status_code == 200 movies = client.get("/movies/").json() - first, *,last = movies['movies'] - + first, *_, last = movies["movies"] pagenum = 1 pagesize = 5 - while current_movies + while current_movies := client.get( + f"/movies/?pagenum={pagenum}&pagesize={pagesize}" + ).json(): + break sliced_movies = client.get("/movies/").json()["movies"][ (pagenum - 1) * pagesize : pagenum * pagesize @@ -187,9 +217,7 @@ class BaseCrud(unittest.TestCase): sliced_titles = [m["title"] for m in sliced_movies] - movies_paginate = client.get( - f"/movies/?pagenum={pagenum}&pagesize={pagesize}" - ).json()["movies"] + movies_paginate = ["movies"] paginate_titles = [m["title"] for m in movies_paginate] @@ -228,7 +256,6 @@ class BaseCrud(unittest.TestCase): assert sliced_titles == paginate_titles - def test_list_movies_pagination(self): response = client.get("/movies/") assert response.status_code == 200