1 Feature: Search queries
2 Testing different queries and parameters
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
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
21 Scenario: JSON search with addressdetails
22 When sending json search query "Montevideo" with address
23 Then address of result 0 is
30 Scenario: XML search with addressdetails
31 When sending xml search query "Inuvik" with address
32 Then address of result 0 contains
35 | state | Northwest Territories
39 Scenario: Address details with unknown class types
40 When sending json search query "foobar, Essen" with address
43 | 0 | leisure | hackerspace
44 And result addresses contain
47 And address of result 0 does not contain leisure,hackerspace
49 Scenario: Disabling deduplication
50 When sending json search query "Oxford Street, London"
51 Then there are no duplicates
52 Given the request parameters
55 When sending json search query "Oxford Street, London"
56 Then there are duplicates
58 Scenario: Search with bounded viewbox in right area
59 Given the request parameters
61 | 1 | -87.7,41.9,-87.57,41.85
62 When sending json search query "restaurant" with address
63 Then result addresses contain
67 Scenario: Search with bounded viewboxlbrt in right area
68 Given the request parameters
69 | bounded | viewboxlbrt
70 | 1 | -87.7,41.85,-87.57,41.9
71 When sending json search query "restaurant" with address
72 Then result addresses contain
76 Scenario: No POI search with unbounded viewbox
77 Given the request parameters
79 | -87.7,41.9,-87.57,41.85
80 When sending json search query "restaurant"
83 | [^,]*(?i)restaurant.*
85 Scenario: bounded search remains within viewbox, even with no results
86 Given the request parameters
88 | 1 | 43.54285,-5.662003,43.5403125,-5.6563282
89 When sending json search query "restaurant"
90 Then less than 1 result is returned
92 Scenario: bounded search remains within viewbox with results
93 Given the request parameters
95 | 1 | -5.662003,43.55,-5.6563282,43.5403125
96 When sending json search query "restaurant"
98 | >= -5.662003 | >= 43.5403125
99 | <= -5.6563282| <= 43.55
101 Scenario: Prefer results within viewbox
102 Given the request parameters
105 When sending json search query "royan" with address
106 Then result addresses contain
109 Given the request parameters
110 | accept-language | viewbox
111 | en | 51.94,36.59,51.99,36.56
112 When sending json search query "royan" with address
113 Then result addresses contain
117 Scenario: Overly large limit number for search results
118 Given the request parameters
121 When sending json search query "Neustadt"
122 Then at most 50 results are returned
124 Scenario: Limit number of search results
125 Given the request parameters
128 When sending json search query "Neustadt"
129 Then exactly 4 results are returned
131 Scenario: Restrict to feature type country
132 Given the request parameters
135 When sending xml search query "Monaco"
140 Scenario: Restrict to feature type state
141 When sending xml search query "Berlin"
145 Given the request parameters
148 When sending xml search query "Berlin"
153 Scenario: Restrict to feature type city
154 Given the request parameters
157 When sending xml search query "Monaco"
163 Scenario: Restrict to feature type settlement
164 When sending json search query "Everest"
167 | 0 | Mount Everest.*
168 Given the request parameters
171 When sending json search query "Everest"
176 Scenario Outline: Search with polygon threshold (json)
177 Given the request parameters
178 | polygon_geojson | polygon_threshold
180 When sending json search query "switzerland"
181 Then at least 1 result is returned
182 And result 0 has attributes geojson
191 Scenario Outline: Search with polygon threshold (xml)
192 Given the request parameters
193 | polygon_geojson | polygon_threshold
195 When sending xml search query "switzerland"
196 Then at least 1 result is returned
197 And result 0 has attributes geojson
206 Scenario Outline: Search with invalid polygon threshold (xml)
207 Given the request parameters
208 | polygon_geojson | polygon_threshold
210 When sending xml search query "switzerland"
211 Then a HTTP 400 is returned
214 Scenario Outline: Search with extratags
215 Given the request parameters
218 When sending <format> search query "Hauptstr"
219 Then result 0 has attributes extratags
220 And result 1 has attributes extratags
228 Scenario Outline: Search with namedetails
229 Given the request parameters
232 When sending <format> search query "Hauptstr"
233 Then result 0 has attributes namedetails
234 And result 1 has attributes namedetails
243 Scenario Outline: Search result with contains TEXT geometry
244 Given the request parameters
247 When sending <format> search query "switzerland"
248 Then result 0 has attributes <response_attribute>
251 | format | response_attribute
256 Scenario Outline: Search result contains polygon-as-points geometry
257 Given the request parameters
260 When sending <format> search query "switzerland"
261 Then result 0 has attributes <response_attribute>
264 | format | response_attribute
265 | xml | polygonpoints
266 | json | polygonpoints
267 | jsonv2 | polygonpoints
271 Scenario Outline: Search result contains SVG geometry
272 Given the request parameters
275 When sending <format> search query "switzerland"
276 Then result 0 has attributes <response_attribute>
279 | format | response_attribute
285 Scenario Outline: Search result contains KML geometry
286 Given the request parameters
289 When sending <format> search query "switzerland"
290 Then result 0 has attributes <response_attribute>
293 | format | response_attribute
299 Scenario Outline: Search result contains GEOJSON geometry
300 Given the request parameters
303 When sending <format> search query "switzerland"
304 Then result 0 has attributes <response_attribute>
307 | format | response_attribute