From 52296b8fd1e4d0df6d320e24f311007047d85d82 Mon Sep 17 00:00:00 2001 From: Johan Bergsma <29785380+JPBergsma@users.noreply.github.com> Date: Fri, 6 May 2022 14:29:24 +0200 Subject: [PATCH] Corrected warning for when both the page_number and the page_offset parameters are set. --- .../entry_collections/entry_collections.py | 10 ++++++++-- tests/server/middleware/test_query_param.py | 16 ++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/optimade/server/entry_collections/entry_collections.py b/optimade/server/entry_collections/entry_collections.py index 2d6c3392e..27e59b1c6 100644 --- a/optimade/server/entry_collections/entry_collections.py +++ b/optimade/server/entry_collections/entry_collections.py @@ -11,7 +11,11 @@ from optimade.server.exceptions import BadRequest, Forbidden, NotFound from optimade.server.mappers import BaseResourceMapper from optimade.server.query_params import EntryListingQueryParams, SingleEntryQueryParams -from optimade.server.warnings import FieldValueNotRecognized, UnknownProviderProperty +from optimade.server.warnings import ( + FieldValueNotRecognized, + UnknownProviderProperty, + QueryParamNotUsed, +) def create_collection( @@ -335,8 +339,10 @@ def handle_query_params( if getattr(params, "page_offset", False): if getattr(params, "page_number", False): warnings.warn( - "Only one of the query parameters 'page_number' and 'page_offset' should be set - 'page_number' will be ignored." + message="Only one of the query parameters 'page_number' and 'page_offset' should be set - 'page_number' will be ignored.", + category=QueryParamNotUsed, ) + cursor_kwargs["skip"] = params.page_offset elif getattr(params, "page_number", False): if isinstance(params.page_number, int): diff --git a/tests/server/middleware/test_query_param.py b/tests/server/middleware/test_query_param.py index eb0aaa60b..e2f6d4ec5 100644 --- a/tests/server/middleware/test_query_param.py +++ b/tests/server/middleware/test_query_param.py @@ -149,11 +149,15 @@ def test_page_number_and_offset(check_response): check_response(request, expected_ids=expected_ids) -def test_page_number_and_offset_both_set(check_error_response): +def test_page_number_and_offset_both_set(check_response): request = "/structures?sort=last_modified&page_number=2&page_limit=5&page_offset=5" - check_error_response( - request, - expected_status=400, - expected_title="Bad Request", - expected_detail="Only one of the query parameters 'page-number' and 'page_offsest' should be set.", + expected_ids = ["mpf_30", "mpf_110", "mpf_200", "mpf_220", "mpf_259"] + expected_warnings = [ + { + "title": "QueryParamNotUsed", + "detail": "Only one of the query parameters 'page_number' and 'page_offset' should be set - 'page_number' will be ignored.", + } + ] + check_response( + request, expected_ids=expected_ids, expected_warnings=expected_warnings )