Skip to content

Commit 9549357

Browse files
added tests for validate_filter_dims func
1 parent 52c78e2 commit 9549357

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

pygeoapi/api/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1511,7 +1511,11 @@ def validate_bbox(value=None) -> list:
15111511
return bbox
15121512

15131513

1514-
def validate_filter_dims(query_string):
1514+
def validate_filter_dims(query_string=None) -> dict:
1515+
if query_string is None:
1516+
LOGGER.debug('dims is empty')
1517+
return {}
1518+
15151519
if not isinstance(query_string, str):
15161520
msg = 'dimension query must be string'
15171521
LOGGER.debug(msg)

tests/api/test_api.py

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040

4141
from pygeoapi.api import (
4242
API, APIRequest, FORMAT_TYPES, F_HTML, F_JSON, F_JSONLD, F_GZIP,
43-
__version__, validate_bbox, validate_datetime, evaluate_limit,
44-
validate_subset, landing_page, openapi_, conformance, describe_collections,
45-
get_collection_schema,
43+
__version__, validate_bbox, validate_filter_dims, validate_datetime,
44+
evaluate_limit, validate_subset, landing_page, openapi_, conformance,
45+
describe_collections, get_collection_schema,
4646
)
4747
from pygeoapi.util import yaml_load, get_api_rules, get_base_url
4848

@@ -778,6 +778,39 @@ def test_validate_bbox():
778778
validate_bbox('1,2,6,4,5,3')
779779

780780

781+
def test_validate_filter_dims():
782+
with pytest.raises(ValueError) as error:
783+
validate_filter_dims(123)
784+
assert error.type == ValueError
785+
assert error.match('dimension query must be string')
786+
787+
assert validate_filter_dims('key1:val1') == {'key1': 'val1'}
788+
with pytest.raises(ValueError) as error:
789+
validate_filter_dims('key1val1')
790+
assert error.type == ValueError
791+
assert error.match("filter dimension and value must be separated by a colon ':' ") # noqa
792+
793+
assert validate_filter_dims('key1:val1,key2:val2') == {'key1': 'val1',
794+
'key2': 'val2'}
795+
with pytest.raises(ValueError) as error:
796+
validate_filter_dims('key1:val1,key1:val2')
797+
assert error.match("""Duplicate key found: 'key1'""")
798+
799+
with pytest.raises(ValueError) as error:
800+
validate_filter_dims(':val1,key1:val2')
801+
assert error.match("Empty key or value in pair: ':val1'")
802+
803+
with pytest.raises(ValueError) as error:
804+
validate_filter_dims('key1:,key1:val2')
805+
assert error.match("Empty key or value in pair: 'key1:'")
806+
807+
with pytest.raises(ValueError) as error:
808+
validate_filter_dims('')
809+
assert error.match("filter dimension and value must be separated by a colon ':' ")
810+
811+
assert validate_filter_dims(None) == {}
812+
813+
781814
def test_validate_datetime():
782815
config = yaml_load('''
783816
temporal:

0 commit comments

Comments
 (0)