]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/api/search/params.feature
more API search tests
[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         Then address of result 0 is
34           | type         | value |
35           | city         | Aleg |
36           | state        | Brakna |
37           | country      | Mauritania |
38           | country_code | mr |
39
40     Scenario: coordinate search with addressdetails
41         When sending json search query "14.271104294939,107.69828796387"
42         Then results contain
43           | display_name |
44           | Plei Ya RĂȘ, Kon Tum province, Vietnam |
45
46     Scenario: Address details with unknown class types
47         When sending json search query "Hundeauslauf, Hamburg" with address
48         Then results contain
49           | ID | class   | type |
50           | 0  | leisure | dog_park |
51         And result addresses contain
52           | ID | address29 |
53           | 0  | Hundeauslauf |
54         And address of result 0 has no types leisure,dog_park
55
56     Scenario: Disabling deduplication
57         When sending json search query "Sievekingsallee, Hamburg"
58         Then there are no duplicates
59         When sending json search query "Sievekingsallee, Hamburg"
60           | dedupe |
61           | 0 |
62         Then there are duplicates
63
64     Scenario: Search with bounded viewbox in right area
65         When sending json search query "restaurant" with address
66           | bounded | viewbox |
67           | 1       | 9.93027,53.61634,10.10073,53.54500 |
68         Then result addresses contain
69           | state |
70           | Hamburg |
71
72     Scenario: Search with bounded viewboxlbrt in right area
73         When sending json search query "restaurant" with address
74           | bounded | viewboxlbrt |
75           | 1       | 9.93027,53.54500,10.10073,53.61634 |
76         Then result addresses contain
77           | state |
78           | Hamburg |
79
80     Scenario: No POI search with unbounded viewbox
81         When sending json search query "restaurant"
82           | viewbox |
83           | 9.93027,53.61634,10.10073,53.54500 |
84         Then results contain
85           | display_name |
86           | ^[^,]*[Rr]estaurant.* |
87
88     Scenario: bounded search remains within viewbox, even with no results
89          When sending json search query "restaurant"
90            | bounded | viewbox |
91            | 1       | 43.5403125,-5.6563282,43.54285,-5.662003 |
92         Then less than 1 result is returned
93
94     Scenario: bounded search remains within viewbox with results
95         When sending json search query "restaurant"
96          | bounded | viewbox |
97          | 1       | 9.93027,53.61634,10.10073,53.54500 |
98         Then result has bounding box in 53.54500,53.61634,9.93027,10.10073
99
100     Scenario: Prefer results within viewbox
101         When sending json search query "25 de Mayo" with address
102           | accept-language |
103           | en |
104         Then result addresses contain
105           | ID | state |
106           | 0  | Salto |
107         When sending json search query "25 de Mayo" with address
108           | accept-language | viewbox |
109           | en              | -56.35879,-34.18330,-56.31618,-34.20815 |
110         Then result addresses contain
111           | ID | state |
112           | 0  | Florida |
113
114     Scenario: Overly large limit number for search results
115         When sending json search query "restaurant"
116           | limit |
117           | 1000 |
118         Then at most 50 results are returned
119
120     Scenario: Limit number of search results
121         When sending json search query "restaurant"
122           | limit |
123           | 4 |
124         Then exactly 4 results are returned
125
126     Scenario: Restrict to feature type country
127         When sending xml search query "Uruguay"
128         Then results contain
129           | ID | place_rank |
130           | 1  | 16 |
131         When sending xml search query "Uruguay"
132           | featureType |
133           | country |
134         Then results contain
135           | place_rank |
136           | 4 |
137
138     Scenario: Restrict to feature type state
139         When sending xml search query "Dakota"
140         Then results contain
141           | place_rank |
142           | 12 |
143         When sending xml search query "Dakota"
144           | featureType |
145           | state |
146         Then results contain
147           | place_rank |
148           | 8 |
149
150     Scenario: Restrict to feature type city
151         When sending xml search query "vaduz"
152         Then results contain
153           | ID | place_rank |
154           | 1  | 30 |
155         When sending xml search query "vaduz"
156           | featureType |
157           | city |
158         Then results contain
159           | place_rank |
160           | 16 |
161
162     Scenario: Restrict to feature type settlement
163         When sending json search query "Burg"
164         Then results contain
165           | ID | class |
166           | 1  | amenity |
167         When sending json search query "Burg"
168           | featureType |
169           | settlement |
170         Then results contain
171           | class    | type |
172           | boundary | administrative | 
173
174     Scenario Outline: Search with polygon threshold (json)
175         When sending json search query "switzerland"
176           | polygon_geojson | polygon_threshold |
177           | 1               | <th> |
178         Then at least 1 result is returned
179         And result 0 has attributes geojson
180
181      Examples:
182         | th |
183         | -1 |
184         | 0.0 |
185         | 0.5 |
186         | 999 |
187
188     Scenario Outline: Search with polygon threshold (xml)
189         When sending xml search query "switzerland"
190           | polygon_geojson | polygon_threshold |
191           | 1               | <th> |
192         Then at least 1 result is returned
193         And result 0 has attributes geojson
194
195      Examples:
196         | th |
197         | -1 |
198         | 0.0 |
199         | 0.5 |
200         | 999 |
201
202     Scenario Outline: Search with invalid polygon threshold (xml)
203         When sending xml search query "switzerland"
204           | polygon_geojson | polygon_threshold |
205           | 1               | <th> |
206         Then a HTTP 400 is returned
207
208      Examples:
209         | th |
210         | x |
211         | ;; |
212         | 1m |
213
214     Scenario Outline: Search with extratags
215         When sending <format> search query "Hauptstr"
216           | extratags |
217           | 1 |
218         Then result has attributes extratags
219
220     Examples:
221         | format |
222         | xml |
223         | json |
224         | jsonv2 |
225
226     Scenario Outline: Search with namedetails
227         When sending <format> search query "Hauptstr"
228           | namedetails |
229           | 1 |
230         Then result has attributes namedetails
231
232     Examples:
233         | format |
234         | xml |
235         | json |
236         | jsonv2 |
237
238     Scenario Outline: Search result with contains TEXT geometry
239         When sending <format> search query "Highmore"
240           | polygon_text |
241           | 1 |
242         Then result has attributes <response_attribute>
243
244     Examples:
245         | format   | response_attribute |
246         | xml      | geotext |
247         | json     | geotext |
248         | jsonv2   | geotext |
249
250     Scenario Outline: Search result contains polygon-as-points geometry
251         When sending <format> search query "Highmore"
252           | polygon |
253           | 1 |
254         Then result has attributes <response_attribute>
255
256     Examples:
257         | format   | response_attribute |
258         | xml      | polygonpoints |
259         | json     | polygonpoints |
260         | jsonv2   | polygonpoints |
261
262     Scenario Outline: Search result contains SVG geometry
263         When sending <format> search query "Highmore"
264           | polygon_svg |
265           | 1 |
266         Then result has attributes <response_attribute>
267
268     Examples:
269         | format   | response_attribute |
270         | xml      | geosvg |
271         | json     | svg |
272         | jsonv2   | svg |
273
274     Scenario Outline: Search result contains KML geometry
275         When sending <format> search query "Highmore"
276           | polygon_kml |
277           | 1 |
278         Then result has attributes <response_attribute>
279
280     Examples:
281         | format   | response_attribute |
282         | xml      | geokml |
283         | json     | geokml |
284         | jsonv2   | geokml |
285
286     Scenario Outline: Search result contains GEOJSON geometry
287         When sending <format> search query "Highmore"
288           | polygon_geojson |
289           | 1 |
290         Then result has attributes <response_attribute>
291
292     Examples:
293         | format   | response_attribute |
294         | xml      | geojson |
295         | json     | geojson |
296         | jsonv2   | geojson |