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