]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/api/search/queries.feature
Merge pull request #2101 from lonvia/update-documentation
[nominatim.git] / test / bdd / api / search / queries.feature
index 0074e3344fe5301f0523742d190394713be36f75..fea4da41dd1d78d020fdcda48d3b1a89c1b437e6 100644 (file)
@@ -10,6 +10,7 @@ Feature: Search queries
           | type         | value |
           | house_number | 2 |
           | hamlet       | Steinwald |
+          | village      | Göfis |
           | postcode     | 6811 |
           | country      | Austria |
           | country_code | at |
@@ -18,31 +19,54 @@ Feature: Search queries
         When sending json search query "Schellingstr 86, Hamburg" with address
           | accept-language |
           | de |
-        Then address of result 0 is
-          | type         | value |
-          | house_number | 86 |
-          | road         | Schellingstraße |
-          | suburb       | Eilbek |
-          | postcode     | 22089 |
-          | city_district | Wandsbek |
-          | state        | Hamburg |
-          | country      | Deutschland |
-          | country_code | de |
+        Then address of result 0 contains
+          | type          | value |
+          | house_number  | 86 |
+          | road          | Schellingstraße |
+          | postcode      | 22089 |
+          | city          | Hamburg |
+          | country       | Deutschland |
+          | country_code  | de |
 
     Scenario: House number interpolation odd
         When sending json search query "Schellingstr 73, Hamburg" with address
           | accept-language |
           | de |
+        Then address of result 0 contains
+          | type          | value |
+          | house_number  | 73 |
+          | road          | Schellingstraße |
+          | postcode      | 22089 |
+          | city          | Hamburg |
+          | country       | Deutschland |
+          | country_code  | de |
+
+    Scenario: With missing housenumber search falls back to road
+        When sending json search query "342 rocha, santa lucia" with address
         Then address of result 0 is
           | type         | value |
-          | house_number | 73 |
-          | road         | Schellingstraße |
-          | suburb       | Eilbek |
-          | postcode     | 22089 |
-          | city_district | Wandsbek |
-          | state        | Hamburg |
-          | country      | Deutschland |
-          | country_code | de |
+          | road         | Rocha |
+          | city         | Santa Lucía |
+          | state        | Canelones |
+          | postcode     | 90700 |
+          | country      | Uruguay |
+          | country_code | uy |
+
+    Scenario Outline: Housenumber 0 can be found
+        When sending <format> search query "Pham Hung Road 0" with address
+        Then results contain
+          | display_name |
+          | ^.*, 0,.* |
+        And result addresses contain
+          | house_number |
+          | 0     |
+
+    Examples:
+        | format |
+        | xml |
+        | json |
+        | jsonv2 |
+        | geojson |
 
     @Tiger
     Scenario: TIGER house number
@@ -52,11 +76,82 @@ Feature: Search queries
          | way |
 
     Scenario: Search with class-type feature
-        When sending jsonv2 search query "Hotel California"
+        When sending jsonv2 search query "Hotel in California"
         Then results contain
           | place_rank |
           | 30 |
 
+    Scenario: Search with specific amenity
+        When sending json search query "[restaurant] Vaduz" with address
+        Then result addresses contain
+          | country |
+          | Liechtenstein |
+        And  results contain
+          | class   | type |
+          | amenity | restaurant |
+
+    Scenario: Search with key-value amenity
+        When sending json search query "[shop=hifi] hamburg"
+        Then results contain
+          | class | type |
+          | shop  | hifi |
+
+    Scenario: With multiple amenity search only the first is used
+        When sending json search query "[shop=hifi] [church] hamburg"
+        Then results contain
+          | class | type |
+          | shop  | hifi |
+
+    Scenario: With multiple amenity search only the first is used
+        When sending json search query "[church] [restaurant] hamburg"
+        Then results contain
+          | class   | type |
+          | amenity | place_of_worship |
+
+    Scenario: POI search near given coordinate
+        When sending json search query "restaurant near 47.16712,9.51100"
+        Then results contain
+          | class   | type |
+          | amenity | restaurant |
+
+    Scenario: Arbitrary key/value search near given coordinate
+        When sending json search query "[man_made=mast]  47.15739° N 9.61264° E"
+        Then results contain
+          | class    | type |
+          | man_made | mast |
+
+    Scenario: Arbitrary key/value search near given coordinate and named place
+        When sending json search query "[man_made=mast] amerlugalpe  47° 9′ 26″ N 9° 36′ 45″ E"
+        Then results contain
+          | class    | type |
+          | man_made | mast |
+
+    Scenario: Name search near given coordinate
+        When sending json search query "amerlugalpe, N 47.15739° E 9.61264°"
+        Then exactly 1 result is returned
+
+    Scenario: Name search near given coordinate without result
+        When sending json search query "amerlugalpe, N 47 15 7 W 9 61 26"
+        Then exactly 0 results are returned
+
+    Scenario: Arbitrary key/value search near a road
+        When sending json search query "[leisure=table_soccer_table] immenbusch"
+        Then results contain
+          | class   | type |
+          | leisure | table_soccer_table |
+
+    Scenario: Ignore other country codes in structured search with country
+        When sending json search query ""
+            | city | country |
+            | li   | de      |
+        Then exactly 0 results are returned
+
+    Scenario: Ignore country searches when query is restricted to countries
+        When sending json search query "de"
+            | countrycodes |
+            | li  |
+        Then exactly 0 results are returned
+
     # https://trac.openstreetmap.org/ticket/5094
     Scenario: housenumbers are ordered by complete match first
         When sending json search query "6395 geminis, montevideo" with address
@@ -65,3 +160,31 @@ Feature: Search queries
           | 0  | 6395 |
           | 1  | 6395 BIS |
 
+    Scenario Outline: Same Searches with white spaces 
+        When sending json search query "<data>"
+        Then exactly 1 result is returned
+        And results contain
+          | class   |
+          | building |
+
+    Examples:
+      | data |
+      | amerlugalpe, N 47.15739° E 9.61264° |
+      | amerlugalpe,   N 47.15739° E 9.61264° |
+      |        amerlugalpe     ,       N 47.15739° E 9.61264° |
+      | amerlugalpe, N 47.15739°              E 9.61264° |
+      | amerlugalpe\v, N 47.15739° E   9.61264° |
+
+    Scenario: Searched with white spaces
+        When sending json search query "22nd   Street Southwest\v,\fHuron"
+        Then results contain
+          | class   | type |
+          | highway | residential |
+
+
+    # github #1949
+    Scenario: Addressdetails always return the place type
+       When sending json search query "Rotherbaum" with address
+       Then result addresses contain
+         | ID | suburb |
+         | 0  | Rotherbaum |