]> git.openstreetmap.org Git - nominatim.git/blob - tests/features/api/search_params.feature
Merge remote-tracking branch 'upstream/master' into cmake-port
[nominatim.git] / tests / features / api / search_params.feature
1 Feature: Search queries
2     Testing different queries and parameters
3
4     Scenario: Simple XML search
5         When sending xml search query "Schaan"
6         Then result 0 has attributes place_id,osm_type,osm_id
7         And result 0 has attributes place_rank,boundingbox
8         And result 0 has attributes lat,lon,display_name
9         And result 0 has attributes class,type,importance,icon
10         And result 0 has not attributes address
11         And results contain valid boundingboxes
12
13     Scenario: Simple JSON search
14         When sending json search query "Vaduz"
15         And result 0 has attributes place_id,licence,icon,class,type
16         And result 0 has attributes osm_type,osm_id,boundingbox
17         And result 0 has attributes lat,lon,display_name,importance
18         And result 0 has not attributes address
19         And results contain valid boundingboxes
20
21     Scenario: JSON search with addressdetails
22         When sending json search query "Montevideo" with address
23         Then address of result 0 is
24           | type         | value
25           | city         | Montevideo
26           | state        | Montevideo
27           | country      | Uruguay
28           | country_code | uy
29
30     Scenario: XML search with addressdetails
31         When sending xml search query "Inuvik" with address
32         Then address of result 0 contains
33           | type         | value
34           | state        | Northwest Territories
35           | country      | Canada
36           | country_code | ca
37
38     Scenario: Address details with unknown class types
39         When sending json search query "foobar, Essen" with address
40         Then results contain
41           | ID | class   | type
42           | 0  | leisure | hackerspace
43         And result addresses contain
44           | ID | address29
45           | 0  | Chaospott
46         And address of result 0 does not contain leisure,hackerspace
47
48     Scenario: Disabling deduplication
49         When sending json search query "Oxford Street, London"
50         Then there are no duplicates
51         Given the request parameters
52           | dedupe
53           | 0
54         When sending json search query "Oxford Street, London"
55         Then there are duplicates
56
57     Scenario: Search with bounded viewbox in right area
58         Given the request parameters
59           | bounded | viewbox
60           | 1       | -87.7,41.9,-87.57,41.85
61         When sending json search query "restaurant" with address
62         Then result addresses contain
63           | ID | city
64           | 0  | Chicago
65
66     Scenario: Search with bounded viewboxlbrt in right area
67         Given the request parameters
68           | bounded | viewboxlbrt
69           | 1       | -87.7,41.85,-87.57,41.9
70         When sending json search query "restaurant" with address
71         Then result addresses contain
72           | ID | city
73           | 0  | Chicago
74
75     Scenario: No POI search with unbounded viewbox
76         Given the request parameters
77           | viewbox
78           | -87.7,41.9,-87.57,41.85
79         When sending json search query "restaurant"
80         Then results contain
81           | display_name
82           | [^,]*(?i)restaurant.*
83
84     Scenario: bounded search remains within viewbox, even with no results
85         Given the request parameters
86          | bounded | viewbox
87          | 1       | 43.5403125,-5.6563282,43.54285,-5.662003
88          When sending json search query "restaurant"
89         Then less than 1 result is returned
90
91     Scenario: bounded search remains within viewbox with results
92         Given the request parameters
93          | bounded | viewbox
94          | 1       | -5.662003,43.55,-5.6563282,43.5403125
95         When sending json search query "restaurant"
96          | lon          | lat
97          | >= -5.662003 | >= 43.5403125
98          | <= -5.6563282| <= 43.55
99
100     Scenario: Prefer results within viewbox
101         Given the request parameters
102           | accept-language
103           | en
104         When sending json search query "royan" with address
105         Then result addresses contain
106           | ID | country
107           | 0  | France
108         Given the request parameters
109           | accept-language | viewbox
110           | en              | 51.94,36.59,51.99,36.56
111         When sending json search query "royan" with address
112         Then result addresses contain
113           | ID | country
114           | 0  | Iran
115
116     Scenario: Overly large limit number for search results
117         Given the request parameters
118           | limit
119           | 1000
120         When sending json search query "Neustadt"
121         Then at most 50 results are returned
122
123     Scenario: Limit number of search results
124         Given the request parameters
125           | limit
126           | 4
127         When sending json search query "Neustadt"
128         Then exactly 4 results are returned
129
130     Scenario: Restrict to feature type country
131         Given the request parameters
132           | featureType
133           | country
134         When sending xml search query "Monaco"
135         Then results contain
136           | place_rank
137           | 4
138
139     Scenario: Restrict to feature type state
140         When sending xml search query "Berlin"
141         Then results contain
142           | ID | place_rank
143           | 0  | 1[56]
144         Given the request parameters
145           | featureType
146           | state
147         When sending xml search query "Berlin"
148         Then results contain
149           | place_rank
150           | [78]
151
152     Scenario: Restrict to feature type city
153         Given the request parameters
154           | featureType
155           | city
156         When sending xml search query "Monaco"
157         Then results contain
158           | place_rank
159           | 1[56789]
160
161
162     Scenario: Restrict to feature type settlement
163         When sending json search query "Everest"
164         Then results contain
165           | ID | display_name
166           | 0  | Mount Everest.*
167         Given the request parameters
168           | featureType
169           | settlement
170         When sending json search query "Everest"
171         Then results contain
172           | ID | display_name
173           | 0  | Everest.*
174
175     Scenario Outline: Search with polygon threshold (json)
176         Given the request parameters
177           | polygon_geojson | polygon_threshold
178           | 1               | <th>
179         When sending json search query "switzerland"
180         Then at least 1 result is returned
181         And result 0 has attributes geojson
182
183      Examples:
184         | th
185         | -1
186         | 0.0
187         | 0.5
188         | 999
189
190     Scenario Outline: Search with polygon threshold (xml)
191         Given the request parameters
192           | polygon_geojson | polygon_threshold
193           | 1               | <th>
194         When sending xml search query "switzerland"
195         Then at least 1 result is returned
196         And result 0 has attributes geojson
197
198      Examples:
199         | th
200         | -1
201         | 0.0
202         | 0.5
203         | 999
204
205     Scenario Outline: Search with invalid polygon threshold (xml)
206         Given the request parameters
207           | polygon_geojson | polygon_threshold
208           | 1               | <th>
209         When sending xml search query "switzerland"
210         Then a HTTP 400 is returned
211
212
213     Scenario Outline: Search with extratags
214         Given the request parameters
215           | extratags
216           | 1
217         When sending <format> search query "Hauptstr"
218         Then result 0 has attributes extratags
219         And result 1 has attributes extratags
220
221     Examples:
222         | format
223         | xml
224         | json
225         | jsonv2
226
227     Scenario Outline: Search with namedetails
228         Given the request parameters
229           | namedetails
230           | 1
231         When sending <format> search query "Hauptstr"
232         Then result 0 has attributes namedetails
233         And result 1 has attributes namedetails
234
235     Examples:
236         | format
237         | xml
238         | json
239         | jsonv2
240
241
242    Scenario Outline: Search result with contains TEXT geometry
243         Given the request parameters
244           | polygon_text
245           | 1
246         When sending <format> search query "switzerland"
247         Then result 0 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         Given the request parameters
257           | polygon
258           | 1
259         When sending <format> search query "switzerland"
260         Then result 0 has attributes <response_attribute>
261
262    Examples:
263         | format   | response_attribute
264         | xml      | polygonpoints
265         | json     | polygonpoints
266         | jsonv2   | polygonpoints
267
268
269
270    Scenario Outline: Search result contains SVG geometry
271         Given the request parameters
272           | polygon_svg
273           | 1
274         When sending <format> search query "switzerland"
275         Then result 0 has attributes <response_attribute>
276
277    Examples:
278         | format   | response_attribute
279         | xml      | geosvg
280         | json     | svg
281         | jsonv2   | svg
282
283
284    Scenario Outline: Search result contains KML geometry
285         Given the request parameters
286           | polygon_kml
287           | 1
288         When sending <format> search query "switzerland"
289         Then result 0 has attributes <response_attribute>
290
291    Examples:
292         | format   | response_attribute
293         | xml      | geokml
294         | json     | geokml
295         | jsonv2   | geokml
296
297
298    Scenario Outline: Search result contains GEOJSON geometry
299         Given the request parameters
300           | polygon_geojson
301           | 1
302         When sending <format> search query "switzerland"
303         Then result 0 has attributes <response_attribute>
304
305    Examples:
306         | format   | response_attribute
307         | xml      | geojson
308         | json     | geojson
309         | jsonv2   | geojson