From 3897771ecb50567976d0f978ae22569b7e321e02 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sun, 27 Aug 2023 20:16:50 +0200 Subject: [PATCH] Pagination works from begining to end --- utests/test_api.py | 44 +++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/utests/test_api.py b/utests/test_api.py index 850791c..2def745 100644 --- a/utests/test_api.py +++ b/utests/test_api.py @@ -187,43 +187,33 @@ class BaseCrud(unittest.TestCase): # 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() == [] - primary_count = response.json()["count"] + nb_movies = response.json()["count"] - N = 10 - names = [] - for _ in range(N): - name = rand_name() - - names.append(name) - self.create_payload["title"] = name + for _ in range(3): + self.create_payload["title"] = rand_name() response = client.post("/movies/", json=self.create_payload) - assert response.status_code == 200 - movies = client.get("/movies/").json() - first, *_, last = movies["movies"] + response = client.get("/movies/") + nb_movies = response.json()["count"] pagenum = 1 - pagesize = 5 + pagesize = 2 + + first, *_, last = client.get("/movies/").json()["movies"] + while current_movies := client.get( f"/movies/?pagenum={pagenum}&pagesize={pagesize}" ).json(): - break + next_page_num = current_movies.get("next_page") + assert next_page_num != pagenum - sliced_movies = client.get("/movies/").json()["movies"][ - (pagenum - 1) * pagesize : pagenum * pagesize - ] - - sliced_titles = [m["title"] for m in sliced_movies] - - movies_paginate = ["movies"] - - paginate_titles = [m["title"] for m in movies_paginate] - - assert sliced_titles == paginate_titles + if next_page_num is None: + assert current_movies["movies"][-1] == last + break + else: + assert next_page_num == pagenum + 1 + pagenum = next_page_num def test_list_movies_pagination(self): response = client.get("/movies/")