]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/api/search/test_search_poi.py
Merge pull request #3521 from lonvia/make-requests-optional
[nominatim.git] / test / python / api / search / test_search_poi.py
index b80c075200f4aa3e2a08cb3b2a9b84d569bf0d38..d4319a57db2a349897da06a8ed63a59eee837ad5 100644 (file)
@@ -2,20 +2,20 @@
 #
 # This file is part of Nominatim. (https://nominatim.org)
 #
 #
 # This file is part of Nominatim. (https://nominatim.org)
 #
-# Copyright (C) 2023 by the Nominatim developer community.
+# Copyright (C) 2024 by the Nominatim developer community.
 # For a full list of authors see the git log.
 """
 Tests for running the POI searcher.
 """
 import pytest
 
 # For a full list of authors see the git log.
 """
 Tests for running the POI searcher.
 """
 import pytest
 
-import nominatim.api as napi
-from nominatim.api.types import SearchDetails
-from nominatim.api.search.db_searches import PoiSearch
-from nominatim.api.search.db_search_fields import WeightedStrings, WeightedCategories
+import nominatim_api as napi
+from nominatim_api.types import SearchDetails
+from nominatim_api.search.db_searches import PoiSearch
+from nominatim_api.search.db_search_fields import WeightedStrings, WeightedCategories
 
 
 
 
-def run_search(apiobj, global_penalty, poitypes, poi_penalties=None,
+def run_search(apiobj, frontend, global_penalty, poitypes, poi_penalties=None,
                ccodes=[], details=SearchDetails()):
     if poi_penalties is None:
         poi_penalties = [0.0] * len(poitypes)
                ccodes=[], details=SearchDetails()):
     if poi_penalties is None:
         poi_penalties = [0.0] * len(poitypes)
@@ -27,16 +27,18 @@ def run_search(apiobj, global_penalty, poitypes, poi_penalties=None,
 
     search = PoiSearch(MySearchData())
 
 
     search = PoiSearch(MySearchData())
 
+    api = frontend(apiobj, options=['search'])
+
     async def run():
     async def run():
-        async with apiobj.api._async_api.begin() as conn:
+        async with api._async_api.begin() as conn:
             return await search.lookup(conn, details)
 
             return await search.lookup(conn, details)
 
-    return apiobj.async_to_sync(run())
+    return api._loop.run_until_complete(run())
 
 
 @pytest.mark.parametrize('coord,pid', [('34.3, 56.100021', 2),
                                        ('5.0, 4.59933', 1)])
 
 
 @pytest.mark.parametrize('coord,pid', [('34.3, 56.100021', 2),
                                        ('5.0, 4.59933', 1)])
-def test_simple_near_search_in_placex(apiobj, coord, pid):
+def test_simple_near_search_in_placex(apiobj, frontend, coord, pid):
     apiobj.add_placex(place_id=1, class_='highway', type='bus_stop',
                       centroid=(5.0, 4.6))
     apiobj.add_placex(place_id=2, class_='highway', type='bus_stop',
     apiobj.add_placex(place_id=1, class_='highway', type='bus_stop',
                       centroid=(5.0, 4.6))
     apiobj.add_placex(place_id=2, class_='highway', type='bus_stop',
@@ -44,7 +46,7 @@ def test_simple_near_search_in_placex(apiobj, coord, pid):
 
     details = SearchDetails.from_kwargs({'near': coord, 'near_radius': 0.001})
 
 
     details = SearchDetails.from_kwargs({'near': coord, 'near_radius': 0.001})
 
-    results = run_search(apiobj, 0.1, [('highway', 'bus_stop')], [0.5], details=details)
+    results = run_search(apiobj, frontend, 0.1, [('highway', 'bus_stop')], [0.5], details=details)
 
     assert [r.place_id for r in results] == [pid]
 
 
     assert [r.place_id for r in results] == [pid]
 
@@ -52,7 +54,7 @@ def test_simple_near_search_in_placex(apiobj, coord, pid):
 @pytest.mark.parametrize('coord,pid', [('34.3, 56.100021', 2),
                                        ('34.3, 56.4', 2),
                                        ('5.0, 4.59933', 1)])
 @pytest.mark.parametrize('coord,pid', [('34.3, 56.100021', 2),
                                        ('34.3, 56.4', 2),
                                        ('5.0, 4.59933', 1)])
-def test_simple_near_search_in_classtype(apiobj, coord, pid):
+def test_simple_near_search_in_classtype(apiobj, frontend, coord, pid):
     apiobj.add_placex(place_id=1, class_='highway', type='bus_stop',
                       centroid=(5.0, 4.6))
     apiobj.add_placex(place_id=2, class_='highway', type='bus_stop',
     apiobj.add_placex(place_id=1, class_='highway', type='bus_stop',
                       centroid=(5.0, 4.6))
     apiobj.add_placex(place_id=2, class_='highway', type='bus_stop',
@@ -61,7 +63,7 @@ def test_simple_near_search_in_classtype(apiobj, coord, pid):
 
     details = SearchDetails.from_kwargs({'near': coord, 'near_radius': 0.5})
 
 
     details = SearchDetails.from_kwargs({'near': coord, 'near_radius': 0.5})
 
-    results = run_search(apiobj, 0.1, [('highway', 'bus_stop')], [0.5], details=details)
+    results = run_search(apiobj, frontend, 0.1, [('highway', 'bus_stop')], [0.5], details=details)
 
     assert [r.place_id for r in results] == [pid]
 
 
     assert [r.place_id for r in results] == [pid]
 
@@ -83,25 +85,25 @@ class TestPoiSearchWithRestrictions:
             self.args = {'near': '34.3, 56.100021', 'near_radius': 0.001}
 
 
             self.args = {'near': '34.3, 56.100021', 'near_radius': 0.001}
 
 
-    def test_unrestricted(self, apiobj):
-        results = run_search(apiobj, 0.1, [('highway', 'bus_stop')], [0.5],
+    def test_unrestricted(self, apiobj, frontend):
+        results = run_search(apiobj, frontend, 0.1, [('highway', 'bus_stop')], [0.5],
                              details=SearchDetails.from_kwargs(self.args))
 
         assert [r.place_id for r in results] == [1, 2]
 
 
                              details=SearchDetails.from_kwargs(self.args))
 
         assert [r.place_id for r in results] == [1, 2]
 
 
-    def test_restict_country(self, apiobj):
-        results = run_search(apiobj, 0.1, [('highway', 'bus_stop')], [0.5],
+    def test_restict_country(self, apiobj, frontend):
+        results = run_search(apiobj, frontend, 0.1, [('highway', 'bus_stop')], [0.5],
                              ccodes=['de', 'nz'],
                              details=SearchDetails.from_kwargs(self.args))
 
         assert [r.place_id for r in results] == [2]
 
 
                              ccodes=['de', 'nz'],
                              details=SearchDetails.from_kwargs(self.args))
 
         assert [r.place_id for r in results] == [2]
 
 
-    def test_restrict_by_viewbox(self, apiobj):
+    def test_restrict_by_viewbox(self, apiobj, frontend):
         args = {'bounded_viewbox': True, 'viewbox': '34.299,56.0,34.3001,56.10001'}
         args.update(self.args)
         args = {'bounded_viewbox': True, 'viewbox': '34.299,56.0,34.3001,56.10001'}
         args.update(self.args)
-        results = run_search(apiobj, 0.1, [('highway', 'bus_stop')], [0.5],
+        results = run_search(apiobj, frontend, 0.1, [('highway', 'bus_stop')], [0.5],
                              ccodes=['de', 'nz'],
                              details=SearchDetails.from_kwargs(args))
 
                              ccodes=['de', 'nz'],
                              details=SearchDetails.from_kwargs(args))