First and last pages pagination test

This commit is contained in:
Colin Goutte 2023-08-27 19:36:04 +02:00
parent f813dcc49f
commit a7975cf164
1 changed files with 34 additions and 7 deletions

View File

@ -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