From 2a4ac4961cab620c5947324716805be2c41297c6 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sun, 27 Aug 2023 18:58:48 +0200 Subject: [PATCH] RED: write test to query paginated view --- utests/test_api.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/utests/test_api.py b/utests/test_api.py index cef7ddd..9ea0128 100644 --- a/utests/test_api.py +++ b/utests/test_api.py @@ -157,6 +157,39 @@ class BaseCrud(unittest.TestCase): assert isinstance(movies["movies"], list) assert movies["count"] == primary_count + N + def test_list_movies_pagination(self): + response = client.get("/movies/") + assert response.status_code == 200 + # assert response.json() == [] + primary_count = response.json()["count"] + + N = 10 + names = [] + for _ in range(N): + name = rand_name() + + names.append(name) + self.create_payload["title"] = name + response = client.post("/movies/", json=self.create_payload) + assert response.status_code == 200 + + pagenum = 3 + pagesize = 5 + + sliced_movies = client.get("/movies/").json()["movies"][ + (pagenum - 1) * pagesize : pagenum * pagesize + ] + + sliced_titles = [m["title"] for m in sliced_movies] + + movies_paginate = client.get( + f"/movies/?pagenum={pagenum}&pagesize={pagesize}" + ).json()["movies"] + + paginate_titles = [m["title"] for n in movies_paginate] + + assert sliced_titles == paginate_titles + class ApiTestCase(unittest.TestCase): def test_payload_content_in_and_out_loopback(self):