]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/api/search/queries.feature
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / test / bdd / api / search / queries.feature
1 @APIDB
2 Feature: Search queries
3     Generic search result correctness
4
5     Scenario: House number search for non-street address
6         When sending json search query "2 Steinwald, Austria" with address
7           | accept-language |
8           | en |
9         Then address of result 0 is
10           | type         | value |
11           | house_number | 2 |
12           | hamlet       | Steinwald |
13           | village      | Göfis |
14           | postcode     | 6811 |
15           | country      | Austria |
16           | country_code | at |
17
18     Scenario: House number interpolation even
19         When sending json search query "Schellingstr 86, Hamburg" with address
20           | accept-language |
21           | de |
22         Then address of result 0 is
23           | type          | value |
24           | house_number  | 86 |
25           | road          | Schellingstraße |
26           | suburb        | Eilbek |
27           | postcode      | 22089 |
28           | city          | Hamburg |
29           | country       | Deutschland |
30           | country_code  | de |
31
32     Scenario: House number interpolation odd
33         When sending json search query "Schellingstr 73, Hamburg" with address
34           | accept-language |
35           | de |
36         Then address of result 0 is
37           | type          | value |
38           | house_number  | 73 |
39           | road          | Schellingstraße |
40           | suburb        | Eilbek |
41           | postcode      | 22089 |
42           | city          | Hamburg |
43           | country       | Deutschland |
44           | country_code  | de |
45
46     Scenario: With missing housenumber search falls back to road
47         When sending json search query "342 rocha, santa lucia" with address
48         Then address of result 0 is
49           | type         | value |
50           | road         | Rocha |
51           | city         | Santa Lucía |
52           | state        | Canelones |
53           | postcode     | 90700 |
54           | country      | Uruguay |
55           | country_code | uy |
56
57     Scenario Outline: Housenumber 0 can be found
58         When sending <format> search query "Pham Hung Road 0" with address
59         Then results contain
60           | display_name |
61           | ^.*, 0,.* |
62         And result addresses contain
63           | house_number |
64           | 0     |
65
66     Examples:
67         | format |
68         | xml |
69         | json |
70         | jsonv2 |
71         | geojson |
72
73     @Tiger
74     Scenario: TIGER house number
75         When sending json search query "323 22nd Street Southwest, Huron"
76         Then results contain
77          | osm_type |
78          | way |
79
80     Scenario: Search with class-type feature
81         When sending jsonv2 search query "Hotel in California"
82         Then results contain
83           | place_rank |
84           | 30 |
85
86     Scenario: Search with specific amenity
87         When sending json search query "[restaurant] Vaduz" with address
88         Then result addresses contain
89           | country |
90           | Liechtenstein |
91         And  results contain
92           | class   | type |
93           | amenity | restaurant |
94
95     Scenario: Search with key-value amenity
96         When sending json search query "[shop=hifi] hamburg"
97         Then results contain
98           | class | type |
99           | shop  | hifi |
100
101     Scenario: With multiple amenity search only the first is used
102         When sending json search query "[shop=hifi] [church] hamburg"
103         Then results contain
104           | class | type |
105           | shop  | hifi |
106
107     Scenario: With multiple amenity search only the first is used
108         When sending json search query "[church] [restaurant] hamburg"
109         Then results contain
110           | class   | type |
111           | amenity | place_of_worship |
112
113     Scenario: POI search near given coordinate
114         When sending json search query "restaurant near 47.16712,9.51100"
115         Then results contain
116           | class   | type |
117           | amenity | restaurant |
118
119     Scenario: Arbitrary key/value search near given coordinate
120         When sending json search query "[man_made=mast]  47.15739° N 9.61264° E"
121         Then results contain
122           | class    | type |
123           | man_made | mast |
124
125     Scenario: Arbitrary key/value search near given coordinate and named place
126         When sending json search query "[man_made=mast] amerlugalpe  47° 9′ 26″ N 9° 36′ 45″ E"
127         Then results contain
128           | class    | type |
129           | man_made | mast |
130
131     Scenario: Name search near given coordinate
132         When sending json search query "amerlugalpe, N 47.15739° E 9.61264°"
133         Then exactly 1 result is returned
134
135     Scenario: Name search near given coordinate without result
136         When sending json search query "amerlugalpe, N 47 15 7 W 9 61 26"
137         Then exactly 0 results are returned
138
139     Scenario: Arbitrary key/value search near a road
140         When sending json search query "[leisure=table_soccer_table] immenbusch"
141         Then results contain
142           | class   | type |
143           | leisure | table_soccer_table |
144
145     Scenario: Ignore other country codes in structured search with country
146         When sending json search query ""
147             | city | country |
148             | li   | de      |
149         Then exactly 0 results are returned
150
151     Scenario: Ignore country searches when query is restricted to countries
152         When sending json search query "de"
153             | countrycodes |
154             | li  |
155         Then exactly 0 results are returned
156
157     # https://trac.openstreetmap.org/ticket/5094
158     Scenario: housenumbers are ordered by complete match first
159         When sending json search query "6395 geminis, montevideo" with address
160         Then result addresses contain
161           | ID | house_number |
162           | 0  | 6395 |
163           | 1  | 6395 BIS |
164
165     Scenario Outline: Same Searches with white spaces 
166         When sending json search query "<data>"
167         Then exactly 1 result is returned
168         And results contain
169           | class   |
170           | building |
171
172     Examples:
173       | data |
174       | amerlugalpe, N 47.15739° E 9.61264° |
175       | amerlugalpe,    N 47.15739° E 9.61264° |
176       |         amerlugalpe     ,       N 47.15739° E 9.61264° |
177       | amerlugalpe, N 47.15739°               E 9.61264° |
178       | amerlugalpe\v, N 47.15739° E    9.61264° |
179
180     Scenario: Searched with white spaces
181         When sending json search query "22nd    Street Southwest\v,\fHuron"
182         Then results contain
183           | class   | type |
184           | highway | residential |