Files
notifications-admin/tests/app/utils/test_pagination.py
Cliff Hill 6b8be20ed2 Black & isort.
Signed-off-by: Cliff Hill <clifford.hill@gsa.gov>
2024-08-02 14:50:52 -04:00

56 lines
1.8 KiB
Python

import pytest
from app.utils.pagination import (
generate_next_dict,
generate_pagination_pages,
generate_previous_dict,
)
def test_generate_previous_dict(client_request):
result = generate_previous_dict("main.view_jobs", "foo", 2, {})
assert "page=1" in result["url"]
assert result["title"] == "Previous page"
assert result["label"] == "page 1"
def test_generate_next_dict(client_request):
result = generate_next_dict("main.view_jobs", "foo", 2, {})
assert "page=3" in result["url"]
assert result["title"] == "Next page"
assert result["label"] == "page 3"
def test_generate_previous_next_dict_adds_other_url_args(client_request):
result = generate_next_dict(
"main.view_notifications", "foo", 2, {"message_type": "blah"}
)
assert "notifications/blah" in result["url"]
@pytest.mark.parametrize(
("total_items", "page_size", "current_page", "expected"),
[
(100, 50, 1, {"current": 1, "pages": [1, 2], "last": 2}),
(450, 50, 1, {"current": 1, "pages": [1, 2, 3, 4, 5, 6, 7, 8, 9], "last": 9}),
(500, 50, 1, {"current": 1, "pages": [1, 2, 3, 4, 5, 6, 7, 8, 9], "last": 10}),
(500, 50, 5, {"current": 5, "pages": [1, 2, 3, 4, 5, 6, 7, 8, 9], "last": 10}),
(500, 50, 6, {"current": 6, "pages": [2, 3, 4, 5, 6, 7, 8, 9, 10], "last": 10}),
(
500,
50,
10,
{"current": 10, "pages": [2, 3, 4, 5, 6, 7, 8, 9, 10], "last": 10},
),
(
950,
50,
15,
{"current": 15, "pages": [11, 12, 13, 14, 15, 16, 17, 18, 19], "last": 19},
),
],
)
def test_generate_pagination_pages(total_items, page_size, current_page, expected):
result = generate_pagination_pages(total_items, page_size, current_page)
assert result == expected