diff --git a/rorapi/common/queries.py b/rorapi/common/queries.py index 2de6aa7..7bedcfd 100644 --- a/rorapi/common/queries.py +++ b/rorapi/common/queries.py @@ -308,6 +308,7 @@ def build_search_query(params, version): ] # normalize filter values based on casing conventions used in ROR records for f in filters: + f[1] = " ".join(f[1].split()) if f[0] == "types": if version == "v2": f[1] = f[1].lower() diff --git a/rorapi/tests/tests_unit/tests_queries_v2.py b/rorapi/tests/tests_unit/tests_queries_v2.py index 0b1c0e8..dca80f3 100644 --- a/rorapi/tests/tests_unit/tests_queries_v2.py +++ b/rorapi/tests/tests_unit/tests_queries_v2.py @@ -370,6 +370,20 @@ def test_filter_status_filter(self): query = build_search_query({'filter': f}, self.V2_VERSION) self.assertEquals(query.to_dict(), expected) + def test_filter_whitespace_normalization(self): + f = 'locations.geonames_details.country_name:South Africa' + expected = {'query': { + 'bool': { + 'filter': [ + {'terms': {'locations.geonames_details.country_name': ('South Africa',)}}, + {'terms': {'status': ['active']}} + ], + } + }} + expected.update(self.default_query) + query = build_search_query({'filter': f}, self.V2_VERSION) + self.assertEquals(query.to_dict(), expected) + def test_filter_all_status(self): f = 'key1:val1,k2:value2' expected = {'query': {