X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/6e81596609518d9202a00bd457af0a75648d30d9..6ef4d04b46c4461db9a571f5c8b0c72d34cd9335:/test/python/api/test_server_glue_v1.py diff --git a/test/python/api/test_server_glue_v1.py b/test/python/api/test_server_glue_v1.py index 612bac28..c0ca69dd 100644 --- a/test/python/api/test_server_glue_v1.py +++ b/test/python/api/test_server_glue_v1.py @@ -384,3 +384,63 @@ class TestDetailsEndpoint: with pytest.raises(FakeError, match='^404 -- .*found'): await glue.details_endpoint(napi.NominatimAPIAsync(Path('/invalid')), a) + + +# lookup_endpoint() + +class TestLookupEndpoint: + + @pytest.fixture(autouse=True) + def patch_lookup_func(self, monkeypatch): + self.results = [napi.SearchResult(napi.SourceTable.PLACEX, + ('place', 'thing'), + napi.Point(1.0, 2.0))] + async def _lookup(*args, **kwargs): + return napi.SearchResults(self.results) + + monkeypatch.setattr(napi.NominatimAPIAsync, 'lookup', _lookup) + + + @pytest.mark.asyncio + async def test_lookup_no_params(self): + a = FakeAdaptor() + a.params['format'] = 'json' + + res = await glue.lookup_endpoint(napi.NominatimAPIAsync(Path('/invalid')), a) + + assert res.output == '[]' + + + @pytest.mark.asyncio + @pytest.mark.parametrize('param', ['w', 'bad', '']) + async def test_lookup_bad_params(self, param): + a = FakeAdaptor() + a.params['format'] = 'json' + a.params['osm_ids'] = f'W34,{param},N33333' + + res = await glue.lookup_endpoint(napi.NominatimAPIAsync(Path('/invalid')), a) + + assert len(json.loads(res.output)) == 1 + + + @pytest.mark.asyncio + @pytest.mark.parametrize('param', ['p234234', '4563']) + async def test_lookup_bad_osm_type(self, param): + a = FakeAdaptor() + a.params['format'] = 'json' + a.params['osm_ids'] = f'W34,{param},N33333' + + res = await glue.lookup_endpoint(napi.NominatimAPIAsync(Path('/invalid')), a) + + assert len(json.loads(res.output)) == 1 + + + @pytest.mark.asyncio + async def test_lookup_working(self): + a = FakeAdaptor() + a.params['format'] = 'json' + a.params['osm_ids'] = 'N23,W34' + + res = await glue.lookup_endpoint(napi.NominatimAPIAsync(Path('/invalid')), a) + + assert len(json.loads(res.output)) == 1