Skip to content

Commit 19ae672

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

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
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: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
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,
43+
__version__, validate_bbox, validate_filter_dims, validate_datetime, evaluate_limit,
4444
validate_subset, landing_page, openapi_, conformance, describe_collections,
4545
get_collection_schema,
4646
)
@@ -777,6 +777,40 @@ def test_validate_bbox():
777777
with pytest.raises(ValueError):
778778
validate_bbox('1,2,6,4,5,3')
779779

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

781815
def test_validate_datetime():
782816
config = yaml_load('''

0 commit comments

Comments
 (0)