From 7c02f19b547ae8feb9e11fe85cf7c5a6556264c2 Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Mon, 30 Apr 2018 01:55:56 +0000 Subject: [PATCH] fix numberReturned response property --- pygeoapi/provider/csv_.py | 4 +++- pygeoapi/provider/elasticsearch_.py | 2 +- pygeoapi/provider/geojson.py | 2 +- tests/test_csv__provider.py | 2 ++ tests/test_elasticsearch__provider.py | 7 +++++++ tests/test_geojson_provider.py | 2 ++ 6 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pygeoapi/provider/csv_.py b/pygeoapi/provider/csv_.py index 046f8a3..f9a5cdc 100644 --- a/pygeoapi/provider/csv_.py +++ b/pygeoapi/provider/csv_.py @@ -98,7 +98,9 @@ class CSVProvider(BaseProvider): elif identifier is not None and found: return result - feature_collection['numberReturned'] = limit + feature_collection['numberReturned'] = len( + feature_collection['features']) + return feature_collection def query(self, startindex=0, limit=10, resulttype='results', diff --git a/pygeoapi/provider/elasticsearch_.py b/pygeoapi/provider/elasticsearch_.py index a42482a..1138a16 100644 --- a/pygeoapi/provider/elasticsearch_.py +++ b/pygeoapi/provider/elasticsearch_.py @@ -191,7 +191,7 @@ class ElasticsearchProvider(BaseProvider): if resulttype == 'hits': return feature_collection - feature_collection['numberReturned'] = limit + feature_collection['numberReturned'] = len(results['hits']['hits']) LOGGER.debug('serializing features') for feature in results['hits']['hits']: diff --git a/pygeoapi/provider/geojson.py b/pygeoapi/provider/geojson.py index 9402a75..61cacb2 100644 --- a/pygeoapi/provider/geojson.py +++ b/pygeoapi/provider/geojson.py @@ -111,8 +111,8 @@ class GeoJSONProvider(BaseProvider): if resulttype == 'hits': data['features'] = [] else: - data['numberReturned'] = limit data['features'] = data['features'][startindex:startindex+limit] + data['numberReturned'] = len(data['features']) return data diff --git a/tests/test_csv__provider.py b/tests/test_csv__provider.py index f0da4d1..d315b9b 100644 --- a/tests/test_csv__provider.py +++ b/tests/test_csv__provider.py @@ -62,6 +62,8 @@ def test_query(fixture, config): p = CSVProvider(config) results = p.query() assert len(results['features']) == 5 + assert results['numberMatched'] == 5 + assert results['numberReturned'] == 5 assert results['features'][0]['ID'] == '371' assert results['features'][0]['properties']['value'] == '89.9' diff --git a/tests/test_elasticsearch__provider.py b/tests/test_elasticsearch__provider.py index cb54da4..b6c9c2a 100644 --- a/tests/test_elasticsearch__provider.py +++ b/tests/test_elasticsearch__provider.py @@ -45,9 +45,16 @@ def test_query(config): p = ElasticsearchProvider(config) results = p.query() assert len(results['features']) == 10 + assert results['numberMatched'] == 242 + assert results['numberReturned'] == 10 assert results['features'][0]['ID'] == 6691831 assert results['features'][0]['properties']['nameascii'] == 'Vatican City' + results = p.query(properties=[('nameascii', 'Vatican City')]) + assert len(results['features']) == 4 + assert results['numberMatched'] == 4 + assert results['numberReturned'] == 4 + results = p.query(limit=1) assert len(results['features']) == 1 assert results['features'][0]['ID'] == 6691831 diff --git a/tests/test_geojson_provider.py b/tests/test_geojson_provider.py index 44fe7f7..676e2dd 100644 --- a/tests/test_geojson_provider.py +++ b/tests/test_geojson_provider.py @@ -38,6 +38,8 @@ def test_query(fixture, config): p = GeoJSONProvider(config) results = p.query() assert len(results['features']) == 1 + assert results['numberMatched'] == 1 + assert results['numberReturned'] == 1 assert results['features'][0]['properties']['id'] == '123-456'