replace behave BDD API tests with pytest-bdd tests

This commit is contained in:
Sarah Hoffmann
2025-03-18 11:19:06 +01:00
parent 50d4b0a386
commit 6959577aa4
51 changed files with 2975 additions and 2132 deletions

View File

@@ -0,0 +1,212 @@
Feature: Search queries
Generic search result correctness
Scenario: Search for natural object
When geocoding "Samina"
| accept-language |
| en |
Then result 0 contains
| category | type | display_name |
| waterway | river | Samina, Austria |
Scenario: House number search for non-street address
When geocoding "6 Silum, Liechtenstein"
| accept-language |
| en |
Then result 0 contains in field address
| param | value |
| house_number | 6 |
| village | Silum |
| town | Triesenberg |
| county | Oberland |
| postcode | 9497 |
| country | Liechtenstein |
| country_code | li |
| ISO3166-2-lvl8 | LI-10 |
Scenario: Search for house number interpolation
When geocoding "Grosssteg 1023, Triesenberg"
| accept-language |
| de |
Then result 0 contains in field address
| param | 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 geocoding "Bündaweg 555"
Then result 0 contains in field address
| param | value |
| road | Bündaweg |
| village | Silum |
| postcode | 9497 |
| county | Oberland |
| town | Triesenberg |
| country | Liechtenstein |
| country_code | li |
| ISO3166-2-lvl8 | LI-10 |
And all results have no attributes address+house_number
Scenario Outline: Housenumber 0 can be found
When sending v1/search with format <format>
| q | addressdetails |
| Gnalpstrasse 0 | 1 |
Then a HTTP 200 is returned
And the result is valid <outformat>
And all results contain
| display_name!fm | address+house_number |
| 0,.* | 0 |
Examples:
| format | outformat |
| xml | xml |
| json | json |
| jsonv2 | json |
| geojson | geojson |
Scenario: TIGER house number
When geocoding "697 Upper Kingston Road"
Then all results contain
| osm_type | display_name!fm | address+house_number |
| way | 697,.* | 697 |
Scenario: Search with class-type feature
When geocoding "bars in ebenholz"
Then all results contain
| place_rank |
| 30 |
Scenario: Search with specific amenity
When geocoding "[restaurant] Vaduz"
Then all results contain
| category | type | address+country |
| amenity | restaurant | Liechtenstein |
Scenario: Search with specific amenity also work in country
When geocoding "restaurants in liechtenstein"
Then all results contain
| category | type | address+country |
| amenity | restaurant | Liechtenstein |
Scenario: Search with key-value amenity
When geocoding "[club=scout] Vaduz"
Then all results contain
| category | type |
| club | scout |
Scenario: POI search near given coordinate
When geocoding "restaurant near 47.16712,9.51100"
Then all results contain
| category | type |
| amenity | restaurant |
Scenario: Arbitrary key/value search near given coordinate
When geocoding "[leisure=firepit] 47.150° N 9.5340493° E"
Then all results contain
| category | type |
| leisure | firepit |
Scenario: POI search in a bounded viewbox
When geocoding "restaurants"
| viewbox | bounded |
| 9.50830,47.15253,9.52043,47.14866 | 1 |
Then all results contain
| category | type |
| amenity | restaurant |
Scenario Outline: Key/value search near given coordinate can be restricted to country
When geocoding "[natural=peak] 47.06512,9.53965"
| countrycodes |
| <cc> |
Then all results contain
| address+country_code |
| <cc> |
Examples:
| cc |
| li |
| ch |
Scenario: Name search near given coordinate
When geocoding "sporry"
Then result 0 contains
| address+town |
| Vaduz |
When geocoding "sporry, 47.10791,9.52676"
Then result 0 contains
| address+village |
| Triesen |
Scenario: Name search near given coordinate without result
When geocoding "sporry, N 47 15 7 W 9 61 26"
Then exactly 0 results are returned
Scenario: Arbitrary key/value search near a road
When geocoding "[amenity=drinking_water] Wissfläckaweg"
Then all results contain
| category | type |
| amenity | drinking_water |
Scenario: Ignore other country codes in structured search with country
When geocoding
| countrycodes | country |
| li | de |
Then exactly 0 results are returned
Scenario: Ignore country searches when query is restricted to countries
When geocoding "fr"
Then all results contain
| name |
| France |
When geocoding "fr"
| countrycodes |
| li |
Then exactly 0 results are returned
Scenario: Country searches only return results for the given country
When geocoding "Ans Trail"
| countrycodes |
| li |
Then all results contain
| address+country_code |
| li |
# https://trac.openstreetmap.org/ticket/5094
Scenario: housenumbers are ordered by complete match first
When geocoding "Austrasse 11, Vaduz"
Then result 0 contains
| address+house_number |
| 11 |
Scenario Outline: Coordinate searches with white spaces
When geocoding "<data>"
Then the result set contains exactly
| category |
| water |
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 geocoding "52 Bodastr , Triesenberg"
Then all results contain
| category | type |
| highway | residential |
# github #1949
Scenario: Addressdetails always return the place type
When geocoding "Vaduz"
Then result 0 contains
| address+town |
| Vaduz |