|
1 | 1 | from http import HTTPStatus |
2 | 2 |
|
| 3 | +import pytest |
3 | 4 | from starlette.testclient import TestClient |
4 | 5 | from database.session import DbSession |
5 | 6 |
|
|
10 | 11 | from datetime import datetime |
11 | 12 | from database.model.agent.person import Person |
12 | 13 | from database.model.agent.contact import Contact |
| 14 | +from versioning import Version |
13 | 15 |
|
14 | 16 |
|
15 | 17 | def test_create_bookmark( |
@@ -140,3 +142,45 @@ def test_delete_bookmark( |
140 | 142 | ) |
141 | 143 | assert response.status_code == HTTPStatus.OK |
142 | 144 | assert all(b["resource_identifier"] != identifier for b in response.json()) |
| 145 | + |
| 146 | + |
| 147 | +@pytest.mark.versions(Version.V2, Version.LATEST) |
| 148 | +def test_get_bookmark_pagination(client: TestClient, publication_factory) -> None: |
| 149 | + PAGINATION_DEFAULT_LIMIT = 10 |
| 150 | + publications = [publication_factory() for _ in range(PAGINATION_DEFAULT_LIMIT + 1)] |
| 151 | + with logged_in_user(ALICE): |
| 152 | + for pub in publications: |
| 153 | + register_asset(pub, owner=ALICE) |
| 154 | + response = client.post( |
| 155 | + f"/bookmarks?resource_identifier={pub.identifier}", |
| 156 | + headers={"Authorization": "fake token"}, |
| 157 | + ) |
| 158 | + assert response.status_code == HTTPStatus.OK |
| 159 | + |
| 160 | + response = client.get( |
| 161 | + "/bookmarks", |
| 162 | + headers={"Authorization": "fake token"}, |
| 163 | + ) |
| 164 | + assert response.status_code == HTTPStatus.OK |
| 165 | + assert len(response.json()) == PAGINATION_DEFAULT_LIMIT |
| 166 | + |
| 167 | + response = client.get( |
| 168 | + "/bookmarks?limit=100", |
| 169 | + headers={"Authorization": "fake token"}, |
| 170 | + ) |
| 171 | + assert response.status_code == HTTPStatus.OK |
| 172 | + assert len(response.json()) == PAGINATION_DEFAULT_LIMIT + 1 |
| 173 | + |
| 174 | + response = client.get( |
| 175 | + "/bookmarks?offset=10", |
| 176 | + headers={"Authorization": "fake token"}, |
| 177 | + ) |
| 178 | + assert response.status_code == HTTPStatus.OK |
| 179 | + assert len(response.json()) == 1 |
| 180 | + |
| 181 | + response = client.get( |
| 182 | + "/bookmarks?offset=8&limit=2", |
| 183 | + headers={"Authorization": "fake token"}, |
| 184 | + ) |
| 185 | + assert response.status_code == HTTPStatus.OK |
| 186 | + assert len(response.json()) == 2 |
0 commit comments