X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/9240e83802b30c940ceec9ac51700b86b77b65e2..d4f3eda3145539aa2516da2b8e80bb54b3227e95:/test/bdd/api/search/params.feature diff --git a/test/bdd/api/search/params.feature b/test/bdd/api/search/params.feature index d1cff1cc..e77a00d2 100644 --- a/test/bdd/api/search/params.feature +++ b/test/bdd/api/search/params.feature @@ -1,3 +1,4 @@ +@SQLITE @APIDB Feature: Search queries Testing different queries and parameters @@ -7,80 +8,96 @@ 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 - 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" - 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 - 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 search query "Triesen" with address 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 | - | Plei Ya Rê, Kon Tum province, Vietnam | + | Guschg, Valorschstrasse, Balzers, Oberland, 9497, Liechtenstein | 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 | - | 0 | leisure | dog_park | + | 0 | amenity | monastery | 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 - When sending json search query "Sievekingsallee, Hamburg" + When sending json search query "Malbunstr" Then there are no duplicates - When sending json search query "Sievekingsallee, Hamburg" + When sending json search query "Malbunstr" | dedupe | | 0 | Then there are duplicates Scenario: Search with bounded viewbox in right area - When sending json search query "restaurant" with address + When sending json search query "post" with address | bounded | viewbox | - | 1 | -56.16786,-34.84061,-56.12525,-34.86526 | + | 1 | 9,47,10,48 | 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 | + | 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 "restaurant" with address + 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 - | city | - | Montevideo | + | town | + | Schaan | + @Fail Scenario: No POI search with unbounded viewbox When sending json search query "restaurant" | viewbox | @@ -90,7 +107,7 @@ Feature: Search queries | ^[^,]*[Rr]estaurant.* | Scenario: bounded search remains within viewbox, even with no results - When sending json search query "restaurant" + When sending json search query "[restaurant]" | bounded | viewbox | | 1 | 43.5403125,-5.6563282,43.54285,-5.662003 | Then less than 1 result is returned @@ -98,22 +115,54 @@ Feature: Search queries 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 - 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 - | 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 | - | en | -56.35879,-34.18330,-56.31618,-34.20815 | + | en | 9.45949,47.08421,9.54094,47.05466 | Then result addresses contain - | ID | state | - | 0 | Florida | + | ID | town | + | 0 | Balzers | + + Scenario: viewboxes cannot be points + When sending json search query "foo" + | viewbox | + | 1.01,34.6,1.01,34.6 | + Then a HTTP 400 is returned + + Scenario Outline: viewbox must have four coordinate numbers + When sending json search query "foo" + | viewbox | + | | + Then a HTTP 400 is returned + + Examples: + | viewbox | + | 34 | + | 0.003,-84.4 | + | 5.2,4.5542,12.4 | + | 23.1,-6,0.11,44.2,9.1 | + + Scenario Outline: viewboxlbrt must have four coordinate numbers + When sending json search query "foo" + | viewboxlbrt | + | | + Then a HTTP 400 is returned + + Examples: + | viewbox | + | 34 | + | 0.003,-84.4 | + | 5.2,4.5542,12.4 | + | 23.1,-6,0.11,44.2,9.1 | Scenario: Overly large limit number for search results When sending json search query "restaurant" @@ -122,17 +171,23 @@ Feature: Search queries 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 + 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 - When sending xml search query "Uruguay" - Then results contain - | ID | place_rank | - | 1 | 16 | - When sending xml search query "Uruguay" + When sending xml search query "fürstentum" | featureType | | country | Then results contain @@ -140,22 +195,16 @@ Feature: Search queries | 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 at least 1 result is returned + When sending xml search query "Wangerberg" | 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" - Then results contain - | ID | place_rank | - | 1 | 30 | + Then at least 1 result is returned When sending xml search query "vaduz" | featureType | | city | @@ -164,19 +213,19 @@ Feature: Search queries | 16 | Scenario: Restrict to feature type settlement - When sending json search query "Burg" + When sending json search query "Malbun" 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 - | class | type | - | boundary | administrative | + | class | type | + | place | village | Scenario Outline: Search with polygon threshold (json) - When sending json search query "switzerland" + When sending json search query "triesenberg" | polygon_geojson | polygon_threshold | | 1 | | Then at least 1 result is returned @@ -190,7 +239,7 @@ Feature: Search queries | 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 | | Then at least 1 result is returned @@ -204,7 +253,7 @@ Feature: Search queries | 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 | | Then a HTTP 400 is returned @@ -216,7 +265,7 @@ Feature: Search queries | 1m | Scenario Outline: Search with extratags - When sending search query "Hauptstr" + When sending search query "Landstr" | extratags | | 1 | Then result has attributes extratags @@ -226,9 +275,10 @@ Feature: Search queries | xml | | json | | jsonv2 | + | geojson | Scenario Outline: Search with namedetails - When sending search query "Hauptstr" + When sending search query "Landstr" | namedetails | | 1 | Then result has attributes namedetails @@ -238,9 +288,10 @@ Feature: Search queries | xml | | json | | jsonv2 | + | geojson | Scenario Outline: Search result with contains TEXT geometry - When sending search query "Highmore" + When sending search query "triesenberg" | polygon_text | | 1 | Then result has attributes @@ -251,20 +302,8 @@ Feature: Search queries | json | geotext | | jsonv2 | geotext | - Scenario Outline: Search result contains polygon-as-points geometry - When sending search query "Highmore" - | polygon | - | 1 | - Then result has attributes - - Examples: - | format | response_attribute | - | xml | polygonpoints | - | json | polygonpoints | - | jsonv2 | polygonpoints | - Scenario Outline: Search result contains SVG geometry - When sending search query "Highmore" + When sending search query "triesenberg" | polygon_svg | | 1 | Then result has attributes @@ -276,7 +315,7 @@ Feature: Search queries | jsonv2 | svg | Scenario Outline: Search result contains KML geometry - When sending search query "Highmore" + When sending search query "triesenberg" | polygon_kml | | 1 | Then result has attributes @@ -288,7 +327,7 @@ Feature: Search queries | jsonv2 | geokml | Scenario Outline: Search result contains GEOJSON geometry - When sending search query "Highmore" + When sending search query "triesenberg" | polygon_geojson | | 1 | Then result has attributes @@ -298,3 +337,26 @@ Feature: Search queries | 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 + + Examples: + | response_attribute | + | geotext | + | polygonpoints | + | svg | + | geokml | + + + 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 |