]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/api/search/queries.feature
fea4da41dd1d78d020fdcda48d3b1a89c1b437e6
[nominatim.git] / test / bdd / api / search / queries.feature
1 @APIDB
2 Feature: Search queries
3     Generic search result correctness
4
5     Scenario: House number search for non-street address
6         When sending json search query "2 Steinwald, Austria" with address
7           | accept-language |
8           | en |
9         Then address of result 0 is
10           | type         | value |
11           | house_number | 2 |
12           | hamlet       | Steinwald |
13           | village      | Göfis |
14           | postcode     | 6811 |
15           | country      | Austria |
16           | country_code | at |
17
18     Scenario: House number interpolation even
19         When sending json search query "Schellingstr 86, Hamburg" with address
20           | accept-language |
21           | de |
22         Then address of result 0 contains
23           | type          | value |
24           | house_number  | 86 |
25           | road          | Schellingstraße |
26           | postcode      | 22089 |
27           | city          | Hamburg |
28           | country       | Deutschland |
29           | country_code  | de |
30
31     Scenario: House number interpolation odd
32         When sending json search query "Schellingstr 73, Hamburg" with address
33           | accept-language |
34           | de |
35         Then address of result 0 contains
36           | type          | value |
37           | house_number  | 73 |
38           | road          | Schellingstraße |
39           | postcode      | 22089 |
40           | city          | Hamburg |
41           | country       | Deutschland |
42           | country_code  | de |
43
44     Scenario: With missing housenumber search falls back to road
45         When sending json search query "342 rocha, santa lucia" with address
46         Then address of result 0 is
47           | type         | value |
48           | road         | Rocha |
49           | city         | Santa Lucía |
50           | state        | Canelones |
51           | postcode     | 90700 |
52           | country      | Uruguay |
53           | country_code | uy |
54
55     Scenario Outline: Housenumber 0 can be found
56         When sending <format> search query "Pham Hung Road 0" with address
57         Then results contain
58           | display_name |
59           | ^.*, 0,.* |
60         And result addresses contain
61           | house_number |
62           | 0     |
63
64     Examples:
65         | format |
66         | xml |
67         | json |
68         | jsonv2 |
69         | geojson |
70
71     @Tiger
72     Scenario: TIGER house number
73         When sending json search query "323 22nd Street Southwest, Huron"
74         Then results contain
75          | osm_type |
76          | way |
77
78     Scenario: Search with class-type feature
79         When sending jsonv2 search query "Hotel in California"
80         Then results contain
81           | place_rank |
82           | 30 |
83
84     Scenario: Search with specific amenity
85         When sending json search query "[restaurant] Vaduz" with address
86         Then result addresses contain
87           | country |
88           | Liechtenstein |
89         And  results contain
90           | class   | type |
91           | amenity | restaurant |
92
93     Scenario: Search with key-value amenity
94         When sending json search query "[shop=hifi] hamburg"
95         Then results contain
96           | class | type |
97           | shop  | hifi |
98
99     Scenario: With multiple amenity search only the first is used
100         When sending json search query "[shop=hifi] [church] hamburg"
101         Then results contain
102           | class | type |
103           | shop  | hifi |
104
105     Scenario: With multiple amenity search only the first is used
106         When sending json search query "[church] [restaurant] hamburg"
107         Then results contain
108           | class   | type |
109           | amenity | place_of_worship |
110
111     Scenario: POI search near given coordinate
112         When sending json search query "restaurant near 47.16712,9.51100"
113         Then results contain
114           | class   | type |
115           | amenity | restaurant |
116
117     Scenario: Arbitrary key/value search near given coordinate
118         When sending json search query "[man_made=mast]  47.15739° N 9.61264° E"
119         Then results contain
120           | class    | type |
121           | man_made | mast |
122
123     Scenario: Arbitrary key/value search near given coordinate and named place
124         When sending json search query "[man_made=mast] amerlugalpe  47° 9′ 26″ N 9° 36′ 45″ E"
125         Then results contain
126           | class    | type |
127           | man_made | mast |
128
129     Scenario: Name search near given coordinate
130         When sending json search query "amerlugalpe, N 47.15739° E 9.61264°"
131         Then exactly 1 result is returned
132
133     Scenario: Name search near given coordinate without result
134         When sending json search query "amerlugalpe, N 47 15 7 W 9 61 26"
135         Then exactly 0 results are returned
136
137     Scenario: Arbitrary key/value search near a road
138         When sending json search query "[leisure=table_soccer_table] immenbusch"
139         Then results contain
140           | class   | type |
141           | leisure | table_soccer_table |
142
143     Scenario: Ignore other country codes in structured search with country
144         When sending json search query ""
145             | city | country |
146             | li   | de      |
147         Then exactly 0 results are returned
148
149     Scenario: Ignore country searches when query is restricted to countries
150         When sending json search query "de"
151             | countrycodes |
152             | li  |
153         Then exactly 0 results are returned
154
155     # https://trac.openstreetmap.org/ticket/5094
156     Scenario: housenumbers are ordered by complete match first
157         When sending json search query "6395 geminis, montevideo" with address
158         Then result addresses contain
159           | ID | house_number |
160           | 0  | 6395 |
161           | 1  | 6395 BIS |
162
163     Scenario Outline: Same Searches with white spaces 
164         When sending json search query "<data>"
165         Then exactly 1 result is returned
166         And results contain
167           | class   |
168           | building |
169
170     Examples:
171       | data |
172       | amerlugalpe, N 47.15739° E 9.61264° |
173       | amerlugalpe,    N 47.15739° E 9.61264° |
174       |         amerlugalpe     ,       N 47.15739° E 9.61264° |
175       | amerlugalpe, N 47.15739°               E 9.61264° |
176       | amerlugalpe\v, N 47.15739° E    9.61264° |
177
178     Scenario: Searched with white spaces
179         When sending json search query "22nd    Street Southwest\v,\fHuron"
180         Then results contain
181           | class   | type |
182           | highway | residential |
183
184
185     # github #1949
186     Scenario: Addressdetails always return the place type
187        When sending json search query "Rotherbaum" with address
188        Then result addresses contain
189          | ID | suburb |
190          | 0  | Rotherbaum |