add pagination object to response for process group list

This commit is contained in:
mike cullerton 2022-06-14 16:40:00 -04:00
parent 781e7faee9
commit 9b1b08d61a
2 changed files with 45 additions and 16 deletions

View File

@ -63,7 +63,19 @@ def process_groups_list(page=1, per_page=100):
"""Process_groups_list."""
process_groups = ProcessModelService().get_process_groups()
batch = ProcessModelService().get_batch(process_groups, page, per_page)
return ProcessGroupSchema(many=True).dump(batch)
pages = len(process_groups)//per_page
remainder = len(process_groups)%per_page
if remainder > 0:
pages += 1
response_json = {
"results": ProcessGroupSchema(many=True).dump(batch),
"pagination": {
"count": len(batch),
"total": len(process_groups),
"pages": pages,
},
}
return Response(json.dumps(response_json), status=200, mimetype="application/json")
def process_group_show(process_group_id):

View File

@ -237,7 +237,6 @@ def test_process_group_list(
for i in range(5):
group_id = f"test_process_group_{i}"
group_display_name = f"Test Group {i}"
create_process_group(client, user, group_id, display_name=group_display_name)
# get all groups
@ -245,33 +244,45 @@ def test_process_group_list(
f"/v1.0/process-groups",
headers=logged_in_headers(user),
)
assert len(response.json) == 5
assert len(response.json['results']) == 5
assert response.json['pagination']['count'] == 5
assert response.json['pagination']['total'] == 5
assert response.json['pagination']['pages'] == 1
# get first page, one per page
response = client.get(
f"/v1.0/process-groups?page=1&per_page=1",
headers=logged_in_headers(user),
)
assert len(response.json) == 1
assert response.json[0]['id'] == 'test_process_group_0'
assert len(response.json['results']) == 1
assert response.json['results'][0]["id"] == "test_process_group_0"
assert response.json['pagination']['count'] == 1
assert response.json['pagination']['total'] == 5
assert response.json['pagination']['pages'] == 5
# get second page, one per page
response = client.get(
f"/v1.0/process-groups?page=2&per_page=1",
headers=logged_in_headers(user),
)
assert len(response.json) == 1
assert response.json[0]['id'] == 'test_process_group_1'
assert len(response.json['results']) == 1
assert response.json['results'][0]["id"] == "test_process_group_1"
assert response.json['pagination']['count'] == 1
assert response.json['pagination']['total'] == 5
assert response.json['pagination']['pages'] == 5
# get first page, 3 per page
response = client.get(
f"/v1.0/process-groups?page=1&per_page=3",
headers=logged_in_headers(user),
)
assert len(response.json) == 3
assert response.json[0]['id'] == 'test_process_group_0'
assert response.json[1]['id'] == 'test_process_group_1'
assert response.json[2]['id'] == 'test_process_group_2'
assert len(response.json['results']) == 3
assert response.json['results'][0]["id"] == "test_process_group_0"
assert response.json['results'][1]["id"] == "test_process_group_1"
assert response.json['results'][2]["id"] == "test_process_group_2"
assert response.json['pagination']['count'] == 3
assert response.json['pagination']['total'] == 5
assert response.json['pagination']['pages'] == 2
# get second page, 3 per page
response = client.get(
@ -279,9 +290,12 @@ def test_process_group_list(
headers=logged_in_headers(user),
)
# there should only be 2 left
assert len(response.json) == 2
assert response.json[0]['id'] == 'test_process_group_3'
assert response.json[1]['id'] == 'test_process_group_4'
assert len(response.json['results']) == 2
assert response.json['results'][0]["id"] == "test_process_group_3"
assert response.json['results'][1]["id"] == "test_process_group_4"
assert response.json['pagination']['count'] == 2
assert response.json['pagination']['total'] == 5
assert response.json['pagination']['pages'] == 2
def test_process_model_file_update_fails_if_no_file_given(
@ -397,7 +411,7 @@ def test_get_process_groups_when_none(
user = find_or_create_user()
response = client.get("/v1.0/process-groups", headers=logged_in_headers(user))
assert response.status_code == 200
assert response.json == []
assert response.json['results'] == []
def test_get_process_groups_when_there_are_some(
@ -408,7 +422,10 @@ def test_get_process_groups_when_there_are_some(
load_test_spec(app, "hello_world")
response = client.get("/v1.0/process-groups", headers=logged_in_headers(user))
assert response.status_code == 200
assert len(response.json) == 1
assert len(response.json['results']) == 1
assert response.json['pagination']['count'] == 1
assert response.json['pagination']['total'] == 1
assert response.json['pagination']['pages'] == 1
def test_get_process_group_when_found(