]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/api/search/params.feature
fix flaky API test
[nominatim.git] / test / bdd / api / search / params.feature
index d84235920b4bdb82a0769434bb39adfaa3bc2fec..053dbbcdf919675bea5eb33a66886b839ba9b721 100644 (file)
@@ -7,86 +7,97 @@ Feature: Search queries
         Then result 0 has attributes place_id,osm_type,osm_id
         And result 0 has attributes place_rank,boundingbox
         And result 0 has attributes lat,lon,display_name
         Then result 0 has attributes place_id,osm_type,osm_id
         And result 0 has attributes place_rank,boundingbox
         And result 0 has attributes lat,lon,display_name
-        And result 0 has attributes class,type,importance,icon
+        And result 0 has attributes class,type,importance
         And result 0 has not attributes address
         And result 0 has bounding box in 46.5,47.5,9,10
 
     Scenario: Simple JSON search
         When sending json search query "Vaduz"
         And result 0 has not attributes address
         And result 0 has bounding box in 46.5,47.5,9,10
 
     Scenario: Simple JSON search
         When sending json search query "Vaduz"
-        Then result 0 has attributes place_id,licence,icon,class,type
+        Then result 0 has attributes place_id,licence,class,type
         And result 0 has attributes osm_type,osm_id,boundingbox
         And result 0 has attributes lat,lon,display_name,importance
         And result 0 has not attributes address
         And result 0 has bounding box in 46.5,47.5,9,10
 
         And result 0 has attributes osm_type,osm_id,boundingbox
         And result 0 has attributes lat,lon,display_name,importance
         And result 0 has not attributes address
         And result 0 has bounding box in 46.5,47.5,9,10
 
-    Scenario: JSON search with addressdetails
-        When sending json search query "Montevideo" with address
-        Then address of result 0 is
-          | type         | value |
-          | city         | Montevideo |
-          | state        | Montevideo |
-          | country      | Uruguay |
-          | country_code | uy |
+    Scenario: Unknown formats returns a user error
+        When sending search query "Vaduz"
+          | format |
+          | x45    |
+        Then a HTTP 400 is returned
 
 
-    Scenario: XML search with addressdetails
-        When sending xml search query "Aleg" with address
-          | accept-language |
-          | en |
+    Scenario Outline: Search with addressdetails
+        When sending <format> search query "Triesen" with address
         Then address of result 0 is
           | type         | value |
         Then address of result 0 is
           | type         | value |
-          | city         | Aleg |
-          | state        | Brakna |
-          | country      | Mauritania |
-          | country_code | mr |
+          | village      | Triesen |
+          | county       | Oberland |
+          | postcode     | 9495 |
+          | country      | Liechtenstein |
+          | country_code | li |
+          | ISO3166-2-lvl8 | LI-09 |
 
 
-    Scenario: coordinate search with addressdetails
-        When sending json search query "14.271104294939,107.69828796387"
+    Examples:
+          | format |
+          | json   |
+          | jsonv2 |
+          | geojson |
+          | xml |
+
+    Scenario: Coordinate search with addressdetails
+        When sending json search query "47.12400621,9.6047552"
           | accept-language |
           | en |
         Then results contain
           | display_name |
           | accept-language |
           | en |
         Then results contain
           | display_name |
-          | Plei Ya Rê, Kon Tum province, Vietnam |
+          | Guschg, Valorschstrasse, Balzers, Oberland, 9497, Liechtenstein |
 
     Scenario: Address details with unknown class types
 
     Scenario: Address details with unknown class types
-        When sending json search query "Hundeauslauf, Hamburg" with address
+        When sending json search query "Kloster St. Elisabeth" with address
         Then results contain
           | ID | class   | type |
         Then results contain
           | ID | class   | type |
-          | 0  | leisure | dog_park |
+          | 0  | amenity | monastery |
         And result addresses contain
         And result addresses contain
-          | ID | address29 |
-          | 0  | Hundeauslauf |
-        And address of result 0 has no types leisure,dog_park
+          | ID | amenity |
+          | 0  | Kloster St. Elisabeth |
 
     Scenario: Disabling deduplication
 
     Scenario: Disabling deduplication
-        When sending json search query "Sievekingsallee, Hamburg"
+        When sending json search query "Malbunstr"
         Then there are no duplicates
         Then there are no duplicates
-        When sending json search query "Sievekingsallee, Hamburg"
+        When sending json search query "Malbunstr"
           | dedupe |
           | 0 |
         Then there are duplicates
 
           | dedupe |
           | 0 |
         Then there are duplicates
 
+    @fail-legacy
     Scenario: Search with bounded viewbox in right area
     Scenario: Search with bounded viewbox in right area
-        When sending json search query "bar" with address
+        When sending json search query "post" with address
           | bounded | viewbox |
           | bounded | viewbox |
-          | 1       | -56.16786,-34.84061,-56.12525,-34.86526 |
+          | 1       |  9,47,10,48 |
         Then result addresses contain
         Then result addresses contain
-          | city |
-          | Montevideo |
+          | ID | town |
+          | 0  | Vaduz |
+        When sending json search query "post" with address
+          | bounded | viewbox |
+          | 1       |  9.49712,47.17122,9.52605,47.16242 |
+        Then result addresses contain
+          | town |
+          | Schaan |
 
     Scenario: Country search with bounded viewbox remain in the area
         When sending json search query "" with address
           | bounded | viewbox                                 | country |
 
     Scenario: Country search with bounded viewbox remain in the area
         When sending json search query "" with address
           | bounded | viewbox                                 | country |
-          | 1       | -56.16786,-34.84061,-56.12525,-34.86526 | de |
+          | 1       | 9.49712,47.17122,9.52605,47.16242 | de |
         Then less than 1 result is returned
 
     Scenario: Search with bounded viewboxlbrt in right area
         When sending json search query "bar" with address
           | bounded | viewboxlbrt |
         Then less than 1 result is returned
 
     Scenario: Search with bounded viewboxlbrt in right area
         When sending json search query "bar" with address
           | bounded | viewboxlbrt |
-          | 1       | -56.16786,-34.86526,-56.12525,-34.84061 |
+          | 1       | 9.49712,47.16242,9.52605,47.17122 |
         Then result addresses contain
         Then result addresses contain
-          | city |
-          | Montevideo |
+          | town |
+          | Schaan |
 
 
+    @Fail
     Scenario: No POI search with unbounded viewbox
         When sending json search query "restaurant"
           | viewbox |
     Scenario: No POI search with unbounded viewbox
         When sending json search query "restaurant"
           | viewbox |
@@ -104,22 +115,22 @@ Feature: Search queries
     Scenario: bounded search remains within viewbox with results
         When sending json search query "restaurant"
          | bounded | viewbox |
     Scenario: bounded search remains within viewbox with results
         When sending json search query "restaurant"
          | bounded | viewbox |
-         | 1       | 9.93027,53.61634,10.10073,53.54500 |
-        Then result has bounding box in 53.54500,53.61634,9.93027,10.10073
+         | 1       | 9.49712,47.17122,9.52605,47.16242 |
+        Then result has centroid in 9.49712,47.16242,9.52605,47.17122
 
     Scenario: Prefer results within viewbox
 
     Scenario: Prefer results within viewbox
-        When sending json search query "25 de Mayo" with address
-          | accept-language |
-          | en |
+        When sending json search query "Gässle" with address
+          | accept-language | viewbox |
+          | en              | 9.52413,47.10759,9.53140,47.10539 |
         Then result addresses contain
         Then result addresses contain
-          | ID | state |
-          | 0  | Salto |
-        When sending json search query "25 de Mayo" with address
+          | ID | village |
+          | 0  | Triesen |
+        When sending json search query "Gässle" with address
           | accept-language | viewbox |
           | accept-language | viewbox |
-          | en              | -56.35879,-34.18330,-56.31618,-34.20815 |
+          | en              | 9.45949,47.08421,9.54094,47.05466 |
         Then result addresses contain
         Then result addresses contain
-          | ID | state |
-          | 0  | Florida |
+          | ID | town |
+          | 0  | Balzers |
 
     Scenario: viewboxes cannot be points
         When sending json search query "foo"
 
     Scenario: viewboxes cannot be points
         When sending json search query "foo"
@@ -160,17 +171,27 @@ Feature: Search queries
         Then at most 50 results are returned
 
     Scenario: Limit number of search results
         Then at most 50 results are returned
 
     Scenario: Limit number of search results
-        When sending json search query "restaurant"
-          | limit |
-          | 4 |
+        When sending json search query "landstr"
+          | dedupe |
+          | 0      |
+        Then more than 4 results are returned
+        When sending json search query "landstr"
+          | limit | dedupe |
+          | 4     | 0      |
         Then exactly 4 results are returned
 
         Then exactly 4 results are returned
 
+    Scenario: Limit parameter must be a number
+        When sending search query "Blue Laguna"
+          | limit |
+          | );    |
+        Then a HTTP 400 is returned
+
     Scenario: Restrict to feature type country
     Scenario: Restrict to feature type country
-        When sending xml search query "Uruguay"
+        When sending xml search query "fürstentum"
         Then results contain
         Then results contain
-          | ID | place_rank |
-          | 1  | 16 |
-        When sending xml search query "Uruguay"
+          | ID | class |
+          | 1  | building |
+        When sending xml search query "fürstentum"
           | featureType |
           | country |
         Then results contain
           | featureType |
           | country |
         Then results contain
@@ -178,16 +199,12 @@ Feature: Search queries
           | 4 |
 
     Scenario: Restrict to feature type state
           | 4 |
 
     Scenario: Restrict to feature type state
-        When sending xml search query "Dakota"
-        Then results contain
-          | place_rank |
-          | 12 |
-        When sending xml search query "Dakota"
+        When sending xml search query "Wangerberg"
+        Then more than 1 result is returned
+        When sending xml search query "Wangerberg"
           | featureType |
           | state |
           | featureType |
           | state |
-        Then results contain
-          | place_rank |
-          | 8 |
+        Then exactly 0 results are returned
 
     Scenario: Restrict to feature type city
         When sending xml search query "vaduz"
 
     Scenario: Restrict to feature type city
         When sending xml search query "vaduz"
@@ -202,19 +219,19 @@ Feature: Search queries
           | 16 |
 
     Scenario: Restrict to feature type settlement
           | 16 |
 
     Scenario: Restrict to feature type settlement
-        When sending json search query "Burg"
+        When sending json search query "Malbun"
         Then results contain
           | ID | class |
         Then results contain
           | ID | class |
-          | 1  | amenity |
-        When sending json search query "Burg"
+          | 1  | landuse |
+        When sending json search query "Malbun"
           | featureType |
           | settlement |
         Then results contain
           | featureType |
           | settlement |
         Then results contain
-          | class    | type |
-          | boundary | administrative | 
+          | class | type |
+          | place | village |
 
     Scenario Outline: Search with polygon threshold (json)
 
     Scenario Outline: Search with polygon threshold (json)
-        When sending json search query "switzerland"
+        When sending json search query "triesenberg"
           | polygon_geojson | polygon_threshold |
           | 1               | <th> |
         Then at least 1 result is returned
           | polygon_geojson | polygon_threshold |
           | 1               | <th> |
         Then at least 1 result is returned
@@ -228,7 +245,7 @@ Feature: Search queries
         | 999 |
 
     Scenario Outline: Search with polygon threshold (xml)
         | 999 |
 
     Scenario Outline: Search with polygon threshold (xml)
-        When sending xml search query "switzerland"
+        When sending xml search query "triesenberg"
           | polygon_geojson | polygon_threshold |
           | 1               | <th> |
         Then at least 1 result is returned
           | polygon_geojson | polygon_threshold |
           | 1               | <th> |
         Then at least 1 result is returned
@@ -242,7 +259,7 @@ Feature: Search queries
         | 999 |
 
     Scenario Outline: Search with invalid polygon threshold (xml)
         | 999 |
 
     Scenario Outline: Search with invalid polygon threshold (xml)
-        When sending xml search query "switzerland"
+        When sending xml search query "triesenberg"
           | polygon_geojson | polygon_threshold |
           | 1               | <th> |
         Then a HTTP 400 is returned
           | polygon_geojson | polygon_threshold |
           | 1               | <th> |
         Then a HTTP 400 is returned
@@ -254,7 +271,7 @@ Feature: Search queries
         | 1m |
 
     Scenario Outline: Search with extratags
         | 1m |
 
     Scenario Outline: Search with extratags
-        When sending <format> search query "Hauptstr"
+        When sending <format> search query "Landstr"
           | extratags |
           | 1 |
         Then result has attributes extratags
           | extratags |
           | 1 |
         Then result has attributes extratags
@@ -264,9 +281,10 @@ Feature: Search queries
         | xml |
         | json |
         | jsonv2 |
         | xml |
         | json |
         | jsonv2 |
+        | geojson |
 
     Scenario Outline: Search with namedetails
 
     Scenario Outline: Search with namedetails
-        When sending <format> search query "Hauptstr"
+        When sending <format> search query "Landstr"
           | namedetails |
           | 1 |
         Then result has attributes namedetails
           | namedetails |
           | 1 |
         Then result has attributes namedetails
@@ -276,9 +294,10 @@ Feature: Search queries
         | xml |
         | json |
         | jsonv2 |
         | xml |
         | json |
         | jsonv2 |
+        | geojson |
 
     Scenario Outline: Search result with contains TEXT geometry
 
     Scenario Outline: Search result with contains TEXT geometry
-        When sending <format> search query "Highmore"
+        When sending <format> search query "triesenberg"
           | polygon_text |
           | 1 |
         Then result has attributes <response_attribute>
           | polygon_text |
           | 1 |
         Then result has attributes <response_attribute>
@@ -289,20 +308,8 @@ Feature: Search queries
         | json     | geotext |
         | jsonv2   | geotext |
 
         | json     | geotext |
         | jsonv2   | geotext |
 
-    Scenario Outline: Search result contains polygon-as-points geometry
-        When sending <format> search query "Highmore"
-          | polygon |
-          | 1 |
-        Then result has attributes <response_attribute>
-
-    Examples:
-        | format   | response_attribute |
-        | xml      | polygonpoints |
-        | json     | polygonpoints |
-        | jsonv2   | polygonpoints |
-
     Scenario Outline: Search result contains SVG geometry
     Scenario Outline: Search result contains SVG geometry
-        When sending <format> search query "Highmore"
+        When sending <format> search query "triesenberg"
           | polygon_svg |
           | 1 |
         Then result has attributes <response_attribute>
           | polygon_svg |
           | 1 |
         Then result has attributes <response_attribute>
@@ -314,7 +321,7 @@ Feature: Search queries
         | jsonv2   | svg |
 
     Scenario Outline: Search result contains KML geometry
         | jsonv2   | svg |
 
     Scenario Outline: Search result contains KML geometry
-        When sending <format> search query "Highmore"
+        When sending <format> search query "triesenberg"
           | polygon_kml |
           | 1 |
         Then result has attributes <response_attribute>
           | polygon_kml |
           | 1 |
         Then result has attributes <response_attribute>
@@ -326,7 +333,7 @@ Feature: Search queries
         | jsonv2   | geokml |
 
     Scenario Outline: Search result contains GEOJSON geometry
         | jsonv2   | geokml |
 
     Scenario Outline: Search result contains GEOJSON geometry
-        When sending <format> search query "Highmore"
+        When sending <format> search query "triesenberg"
           | polygon_geojson |
           | 1 |
         Then result has attributes <response_attribute>
           | polygon_geojson |
           | 1 |
         Then result has attributes <response_attribute>
@@ -336,11 +343,38 @@ Feature: Search queries
         | xml      | geojson |
         | json     | geojson |
         | jsonv2   | geojson |
         | xml      | geojson |
         | json     | geojson |
         | jsonv2   | geojson |
+        | geojson  | geojson |
+
+    Scenario Outline: Search result in geojson format contains no non-geojson geometry
+        When sending geojson search query "triesenberg"
+          | polygon_text | polygon_svg | polygon_geokml |
+          | 1            | 1           | 1              |
+        Then result 0 has not attributes <response_attribute>
+
+    Examples:
+        | response_attribute |
+        | geotext            |
+        | polygonpoints      |
+        | svg                |
+        | geokml             |
 
     Scenario: Search along a route
 
     Scenario: Search along a route
-        When sending json search query "restaurant" with address
-          | bounded | routewidth | route                                   |
-          | 1       | 0.1        | -103.23255,44.08198,-103.22516,44.08079 |
+        When sending json search query "rathaus" with address
         Then result addresses contain
         Then result addresses contain
-          | city |
-          | Rapid City |
+          | ID | town |
+          | 0  | Schaan |
+        When sending json search query "rathaus" with address
+          | bounded | routewidth | route                              |
+          | 1       | 0.1        |  9.54353,47.11772,9.54314,47.11894 |
+        Then result addresses contain
+          | town |
+          | Triesenberg |
+
+
+    Scenario: Array parameters are ignored
+        When sending json search query "Vaduz" with address
+          | countrycodes[] | polygon_svg[] | limit[] | polygon_threshold[] |
+          | IT             | 1             | 3       | 3.4                 |
+        Then result addresses contain
+          | ID | country_code |
+          | 0  | li           |