@SQLITE @APIDB Feature: Search queries Generic search result correctness Scenario: Search for natural object When sending json search query "Samina" | accept-language | | en | Then results contain | ID | class | type | display_name | | 0 | waterway | river | Samina, Austria | Scenario: House number search for non-street address When sending json search query "6 Silum, Liechtenstein" with address | accept-language | | en | Then address of result 0 is | type | value | | house_number | 6 | | village | Silum | | town | Triesenberg | | county | Oberland | | postcode | 9497 | | country | Liechtenstein | | country_code | li | | ISO3166-2-lvl8 | LI-10 | Scenario: House number interpolation When sending json search query "Grosssteg 1023, Triesenberg" with address | accept-language | | de | Then address of result 0 contains | type | value | | house_number | 1023 | | road | Grosssteg | | village | Sücka | | postcode | 9497 | | town | Triesenberg | | country | Liechtenstein | | country_code | li | Scenario: With missing housenumber search falls back to road When sending json search query "Bündaweg 555" with address Then address of result 0 is | type | value | | road | Bündaweg | | village | Silum | | postcode | 9497 | | county | Oberland | | town | Triesenberg | | country | Liechtenstein | | country_code | li | | ISO3166-2-lvl8 | LI-10 | Scenario Outline: Housenumber 0 can be found When sending search query "Gnalpstrasse 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 When sending json search query "697 Upper Kingston Road" Then results contain | osm_type | display_name | | way | ^697,.* | Scenario: Search with class-type feature When sending jsonv2 search query "bars in ebenholz" 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 specific amenity also work in country When sending json search query "restaurants in liechtenstein" 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 "[club=scout] Vaduz" Then results contain | class | type | | club | scout | @v1-api-php-only Scenario: With multiple amenity search only the first is used When sending json search query "[club=scout] [church] vaduz" Then results contain | class | type | | club | scout | When sending json search query "[amenity=place_of_worship] [club=scout] vaduz" 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 "[leisure=firepit] 47.150° N 9.5340493° E" Then results contain | class | type | | leisure | firepit | @v1-api-php-only Scenario: Arbitrary key/value search near given coordinate and named place When sending json search query "[leisure=firepit] ebenholz 47° 9′ 26″ N 9° 36′ 45″ E" Then results contain | class | type | | leisure | firepit | Scenario Outline: Key/value search near given coordinate can be restricted to country When sending json search query "[natural=peak] 47.06512,9.53965" with address | countrycodes | | | Then result addresses contain | country_code | | | Examples: | cc | | li | | ch | Scenario: Name search near given coordinate When sending json search query "sporry" with address Then result addresses contain | ID | town | | 0 | Vaduz | When sending json search query "sporry, 47.10791,9.52676" with address Then result addresses contain | ID | village | | 0 | Triesen | Scenario: Name search near given coordinate without result When sending json search query "sporry, 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 "[amenity=drinking_water] Wissfläckaweg" Then results contain | class | type | | amenity | drinking_water | 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 "fr" | countrycodes | | li | Then exactly 0 results are returned Scenario: Country searches only return results for the given country When sending search query "Ans Trail" with address | countrycodes | | li | Then result addresses contain | country_code | | li | # https://trac.openstreetmap.org/ticket/5094 Scenario: housenumbers are ordered by complete match first When sending json search query "Austrasse 11, Vaduz" with address Then result addresses contain | ID | house_number | | 0 | 11 | Scenario Outline: Coordinate searches with white spaces When sending json search query "" Then exactly 1 result is returned And results contain | class | | natural | Examples: | data | | sporry weiher, N 47.10791° E 9.52676° | | sporry weiher, N 47.10791° E 9.52676° | | sporry weiher , N 47.10791° E 9.52676° | | sporry weiher, N 47.10791° E 9.52676° | | sporry weiher , N 47.10791° E 9.52676° | Scenario: Searches with white spaces When sending json search query "52 Bodastr , Triesenberg" Then results contain | class | type | | highway | residential | # github #1949 Scenario: Addressdetails always return the place type When sending json search query "Vaduz" with address Then result addresses contain | ID | town | | 0 | Vaduz | Scenario: Search can handle complex query word sets When sending search query "aussenstelle universitat lichtenstein wachterhaus aussenstelle universitat lichtenstein wachterhaus aussenstelle universitat lichtenstein wachterhaus aussenstelle universitat lichtenstein wachterhaus" Then a HTTP 200 is returned