From c70b9e9fa1b7551243722dda93b9fbb70d8e4c10 Mon Sep 17 00:00:00 2001 From: Viktor Bozhinov Date: Wed, 16 Feb 2022 09:07:20 +0000 Subject: [PATCH] test: test where filter on isPublic fields #329 --- .../endpoints/test_count_endpoint.py | 20 ++++++++- .../endpoints/test_search_endpoint.py | 8 +++- .../test_search_api_query_filter_factory.py | 43 +++++++++++++++++++ 3 files changed, 68 insertions(+), 3 deletions(-) diff --git a/test/search_api/endpoints/test_count_endpoint.py b/test/search_api/endpoints/test_count_endpoint.py index 1bf37101..b9dddcb1 100644 --- a/test/search_api/endpoints/test_count_endpoint.py +++ b/test/search_api/endpoints/test_count_endpoint.py @@ -93,13 +93,29 @@ def test_valid_count_endpoint( "datasets", '{"isPublic": true}', {"count": 479}, - id="Dataset count with isPublic condition", + id="Dataset count with isPublic condition (True)", ), pytest.param( "documents", '{"isPublic": true}', {"count": 239}, - id="Document count with isPublic condition", + id="Document count with isPublic condition (True)", + ), + pytest.param( + "datasets", + '{"isPublic": false}', + {"count": 0}, + id="Dataset count with isPublic condition (False)", + # Skipped due to skip filter causing issue on count endpoints + marks=pytest.mark.skip, + ), + pytest.param( + "documents", + '{"isPublic": false}', + {"count": 0}, + id="Document count with isPublic condition (False)", + # Skipped due to skip filter causing issue on count endpoints + marks=pytest.mark.skip, ), ], ) diff --git a/test/search_api/endpoints/test_search_endpoint.py b/test/search_api/endpoints/test_search_endpoint.py index 676b5294..d75fb813 100644 --- a/test/search_api/endpoints/test_search_endpoint.py +++ b/test/search_api/endpoints/test_search_endpoint.py @@ -416,7 +416,13 @@ class TestSearchAPISearchEndpoint: "samples": [], }, ], - id="Search datasets with isPublic condition", + id="Search datasets with isPublic condition (True)", + ), + pytest.param( + "datasets", + '{"where": {"isPublic": false}}', + [], + id="Search datasets with isPublic condition (False)", ), ], ) diff --git a/test/search_api/test_search_api_query_filter_factory.py b/test/search_api/test_search_api_query_filter_factory.py index 06262fc8..ca54c409 100644 --- a/test/search_api/test_search_api_query_filter_factory.py +++ b/test/search_api/test_search_api_query_filter_factory.py @@ -48,6 +48,49 @@ def test_valid_where_filter( assert len(filters) == 1 assert repr(filters[0]) == repr(expected_where) + @pytest.mark.parametrize( + "test_request_filter, test_entity_name, expected_filters", + [ + pytest.param( + {"filter": {"where": {"isPublic": True}}}, + "Dataset", + [], + id="Public data", + ), + pytest.param( + {"filter": {"where": {"isPublic": {"neq": False}}}}, + "Dataset", + [], + id="Public data - neq operator", + ), + pytest.param( + {"filter": {"where": {"isPublic": {"eq": False}}}}, + "Dataset", + [SearchAPISkipFilter(1), SearchAPILimitFilter(0)], + id="Non-public data", + ), + pytest.param( + {"filter": {"where": {"isPublic": {"neq": True}}}}, + "Dataset", + [SearchAPISkipFilter(1), SearchAPILimitFilter(0)], + id="Non-public data - neq operator", + ), + ], + ) + def test_valid_where_filter_on_is_public_field( + self, test_request_filter, test_entity_name, expected_filters, + ): + filters = SearchAPIQueryFilterFactory.get_query_filter( + test_request_filter, test_entity_name, + ) + + assert len(filters) == len(expected_filters) + for test_filter in filters: + if isinstance(test_filter, SearchAPISkipFilter): + assert test_filter.skip_value == 1 + if isinstance(test_filter, SearchAPILimitFilter): + assert test_filter.limit_value == 0 + @pytest.mark.parametrize( "test_request_filter, test_entity_name, expected_lhs, expected_rhs" ", expected_joining_operator",