]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/api/search/params.feature
more API tests for code coverage
[nominatim.git] / test / bdd / api / search / params.feature
1 @APIDB
2 Feature: Search queries
3     Testing different queries and parameters
4
5     Scenario: Simple XML search
6         When sending xml search query "Schaan"
7         Then result 0 has attributes place_id,osm_type,osm_id
8         And result 0 has attributes place_rank,boundingbox
9         And result 0 has attributes lat,lon,display_name
10         And result 0 has attributes class,type,importance,icon
11         And result 0 has not attributes address
12         And result 0 has bounding box in 46.5,47.5,9,10
13
14     Scenario: Simple JSON search
15         When sending json search query "Vaduz"
16         Then result 0 has attributes place_id,licence,icon,class,type
17         And result 0 has attributes osm_type,osm_id,boundingbox
18         And result 0 has attributes lat,lon,display_name,importance
19         And result 0 has not attributes address
20         And result 0 has bounding box in 46.5,47.5,9,10
21
22     Scenario: JSON search with addressdetails
23         When sending json search query "Montevideo" with address
24         Then address of result 0 is
25           | type         | value |
26           | city         | Montevideo |
27           | state        | Montevideo |
28           | country      | Uruguay |
29           | country_code | uy |
30
31     Scenario: XML search with addressdetails
32         When sending xml search query "Aleg" with address
33           | accept-language |
34           | en |
35         Then address of result 0 is
36           | type         | value |
37           | city         | Aleg |
38           | state        | Brakna |
39           | country      | Mauritania |
40           | country_code | mr |
41
42     Scenario: coordinate search with addressdetails
43         When sending json search query "14.271104294939,107.69828796387"
44           | accept-language |
45           | en |
46         Then results contain
47           | display_name |
48           | Plei Ya RĂȘ, Kon Tum province, Vietnam |
49
50     Scenario: Address details with unknown class types
51         When sending json search query "Hundeauslauf, Hamburg" with address
52         Then results contain
53           | ID | class   | type |
54           | 0  | leisure | dog_park |
55         And result addresses contain
56           | ID | address29 |
57           | 0  | Hundeauslauf |
58         And address of result 0 has no types leisure,dog_park
59
60     Scenario: Disabling deduplication
61         When sending json search query "Sievekingsallee, Hamburg"
62         Then there are no duplicates
63         When sending json search query "Sievekingsallee, Hamburg"
64           | dedupe |
65           | 0 |
66         Then there are duplicates
67
68     Scenario: Search with bounded viewbox in right area
69         When sending json search query "bar" with address
70           | bounded | viewbox |
71           | 1       | -56.16786,-34.84061,-56.12525,-34.86526 |
72         Then result addresses contain
73           | city |
74           | Montevideo |
75
76     Scenario: Search with bounded viewboxlbrt in right area
77         When sending json search query "bar" with address
78           | bounded | viewboxlbrt |
79           | 1       | -56.16786,-34.86526,-56.12525,-34.84061 |
80         Then result addresses contain
81           | city |
82           | Montevideo |
83
84     Scenario: No POI search with unbounded viewbox
85         When sending json search query "restaurant"
86           | viewbox |
87           | 9.93027,53.61634,10.10073,53.54500 |
88         Then results contain
89           | display_name |
90           | ^[^,]*[Rr]estaurant.* |
91
92     Scenario: bounded search remains within viewbox, even with no results
93          When sending json search query "restaurant"
94            | bounded | viewbox |
95            | 1       | 43.5403125,-5.6563282,43.54285,-5.662003 |
96         Then less than 1 result is returned
97
98     Scenario: bounded search remains within viewbox with results
99         When sending json search query "restaurant"
100          | bounded | viewbox |
101          | 1       | 9.93027,53.61634,10.10073,53.54500 |
102         Then result has bounding box in 53.54500,53.61634,9.93027,10.10073
103
104     Scenario: Prefer results within viewbox
105         When sending json search query "25 de Mayo" with address
106           | accept-language |
107           | en |
108         Then result addresses contain
109           | ID | state |
110           | 0  | Salto |
111         When sending json search query "25 de Mayo" with address
112           | accept-language | viewbox |
113           | en              | -56.35879,-34.18330,-56.31618,-34.20815 |
114         Then result addresses contain
115           | ID | state |
116           | 0  | Florida |
117
118     Scenario: viewboxes cannot be points
119         When sending json search query "foo"
120           | viewbox |
121           | 1.01,34.6,1.01,34.6 |
122         Then a HTTP 400 is returned
123
124     Scenario Outline: viewbox must have four coordinate numbers
125         When sending json search query "foo"
126           | viewbox |
127           | <viewbox> |
128         Then a HTTP 400 is returned
129
130     Examples:
131         | viewbox |
132         | 34      |
133         | 0.003,-84.4 |
134         | 5.2,4.5542,12.4 |
135         | 23.1,-6,0.11,44.2,9.1 |
136
137     Scenario Outline: viewboxlbrt must have four coordinate numbers
138         When sending json search query "foo"
139           | viewboxlbrt |
140           | <viewbox> |
141         Then a HTTP 400 is returned
142
143     Examples:
144         | viewbox |
145         | 34      |
146         | 0.003,-84.4 |
147         | 5.2,4.5542,12.4 |
148         | 23.1,-6,0.11,44.2,9.1 |
149
150     Scenario: Overly large limit number for search results
151         When sending json search query "restaurant"
152           | limit |
153           | 1000 |
154         Then at most 50 results are returned
155
156     Scenario: Limit number of search results
157         When sending json search query "restaurant"
158           | limit |
159           | 4 |
160         Then exactly 4 results are returned
161
162     Scenario: Restrict to feature type country
163         When sending xml search query "Uruguay"
164         Then results contain
165           | ID | place_rank |
166           | 1  | 16 |
167         When sending xml search query "Uruguay"
168           | featureType |
169           | country |
170         Then results contain
171           | place_rank |
172           | 4 |
173
174     Scenario: Restrict to feature type state
175         When sending xml search query "Dakota"
176         Then results contain
177           | place_rank |
178           | 12 |
179         When sending xml search query "Dakota"
180           | featureType |
181           | state |
182         Then results contain
183           | place_rank |
184           | 8 |
185
186     Scenario: Restrict to feature type city
187         When sending xml search query "vaduz"
188         Then results contain
189           | ID | place_rank |
190           | 1  | 30 |
191         When sending xml search query "vaduz"
192           | featureType |
193           | city |
194         Then results contain
195           | place_rank |
196           | 16 |
197
198     Scenario: Restrict to feature type settlement
199         When sending json search query "Burg"
200         Then results contain
201           | ID | class |
202           | 1  | amenity |
203         When sending json search query "Burg"
204           | featureType |
205           | settlement |
206         Then results contain
207           | class    | type |
208           | boundary | administrative | 
209
210     Scenario Outline: Search with polygon threshold (json)
211         When sending json search query "switzerland"
212           | polygon_geojson | polygon_threshold |
213           | 1               | <th> |
214         Then at least 1 result is returned
215         And result 0 has attributes geojson
216
217      Examples:
218         | th |
219         | -1 |
220         | 0.0 |
221         | 0.5 |
222         | 999 |
223
224     Scenario Outline: Search with polygon threshold (xml)
225         When sending xml search query "switzerland"
226           | polygon_geojson | polygon_threshold |
227           | 1               | <th> |
228         Then at least 1 result is returned
229         And result 0 has attributes geojson
230
231      Examples:
232         | th |
233         | -1 |
234         | 0.0 |
235         | 0.5 |
236         | 999 |
237
238     Scenario Outline: Search with invalid polygon threshold (xml)
239         When sending xml search query "switzerland"
240           | polygon_geojson | polygon_threshold |
241           | 1               | <th> |
242         Then a HTTP 400 is returned
243
244      Examples:
245         | th |
246         | x |
247         | ;; |
248         | 1m |
249
250     Scenario Outline: Search with extratags
251         When sending <format> search query "Hauptstr"
252           | extratags |
253           | 1 |
254         Then result has attributes extratags
255
256     Examples:
257         | format |
258         | xml |
259         | json |
260         | jsonv2 |
261
262     Scenario Outline: Search with namedetails
263         When sending <format> search query "Hauptstr"
264           | namedetails |
265           | 1 |
266         Then result has attributes namedetails
267
268     Examples:
269         | format |
270         | xml |
271         | json |
272         | jsonv2 |
273
274     Scenario Outline: Search result with contains TEXT geometry
275         When sending <format> search query "Highmore"
276           | polygon_text |
277           | 1 |
278         Then result has attributes <response_attribute>
279
280     Examples:
281         | format   | response_attribute |
282         | xml      | geotext |
283         | json     | geotext |
284         | jsonv2   | geotext |
285
286     Scenario Outline: Search result contains polygon-as-points geometry
287         When sending <format> search query "Highmore"
288           | polygon |
289           | 1 |
290         Then result has attributes <response_attribute>
291
292     Examples:
293         | format   | response_attribute |
294         | xml      | polygonpoints |
295         | json     | polygonpoints |
296         | jsonv2   | polygonpoints |
297
298     Scenario Outline: Search result contains SVG geometry
299         When sending <format> search query "Highmore"
300           | polygon_svg |
301           | 1 |
302         Then result has attributes <response_attribute>
303
304     Examples:
305         | format   | response_attribute |
306         | xml      | geosvg |
307         | json     | svg |
308         | jsonv2   | svg |
309
310     Scenario Outline: Search result contains KML geometry
311         When sending <format> search query "Highmore"
312           | polygon_kml |
313           | 1 |
314         Then result has attributes <response_attribute>
315
316     Examples:
317         | format   | response_attribute |
318         | xml      | geokml |
319         | json     | geokml |
320         | jsonv2   | geokml |
321
322     Scenario Outline: Search result contains GEOJSON geometry
323         When sending <format> search query "Highmore"
324           | polygon_geojson |
325           | 1 |
326         Then result has attributes <response_attribute>
327
328     Examples:
329         | format   | response_attribute |
330         | xml      | geojson |
331         | json     | geojson |
332         | jsonv2   | geojson |
333
334     Scenario: Search along a route
335         When sending json search query "restaurant" with address
336           | bounded | routewidth | route                                   |
337           | 1       | 0.1        | -103.23255,44.08198,-103.22516,44.08079 |
338         Then result addresses contain
339           | city |
340           | Rapid City |