]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/osm2pgsql/update/tags.feature
bdd: test placex content when updating with osm2pgsql
[nominatim.git] / test / bdd / osm2pgsql / update / tags.feature
1 @DB
2 Feature: Tag evaluation
3     Tests if tags are correctly updated in the place table
4
5     Background:
6         Given the grid
7             | 1  | 2  | 3 |
8             | 10 | 11 |   |
9             | 45 | 46 |   |
10
11     Scenario: Main tag deleted
12         When loading osm data
13             """
14             n1 Tamenity=restaurant
15             n2 Thighway=bus_stop,railway=stop,name=X
16             n3 Tamenity=prison
17             """
18         Then place contains exactly
19             | object     | class   | type       |
20             | N1         | amenity | restaurant |
21             | N2:highway | highway | bus_stop   |
22             | N2:railway | railway | stop       |
23             | N3         | amenity | prison     |
24
25         When updating osm data
26             """
27             n1 Tnot_a=restaurant
28             n2 Thighway=bus_stop,name=X
29             """
30         Then place contains exactly
31             | object     | class   | type       |
32             | N2:highway | highway | bus_stop   |
33             | N3         | amenity | prison     |
34         And placex contains
35             | object     | indexed_status |
36             | N3:amenity | 0              |
37         When indexing
38         Then placex contains exactly
39             | object     | type     | name        |
40             | N2:highway | bus_stop | 'name': 'X' |
41             | N3:amenity | prison   | -           |
42
43
44     Scenario: Main tag added
45         When loading osm data
46             """
47             n1 Tatity=restaurant
48             n2 Thighway=bus_stop,name=X
49             """
50         Then place contains exactly
51             | object     | class   | type       |
52             | N2:highway | highway | bus_stop   |
53
54         When updating osm data
55             """
56             n1 Tamenity=restaurant
57             n2 Thighway=bus_stop,railway=stop,name=X
58             """
59         Then place contains exactly
60             | object     | class   | type       |
61             | N1         | amenity | restaurant |
62             | N2:highway | highway | bus_stop   |
63             | N2:railway | railway | stop       |
64         When indexing
65         Then placex contains exactly
66             | object     | type       | name        |
67             | N1:amenity | restaurant | -           |
68             | N2:highway | bus_stop   | 'name': 'X' |
69             | N2:railway | stop       | 'name': 'X' |
70
71
72     Scenario: Main tag modified
73         When loading osm data
74             """
75             n10 Thighway=footway,name=X
76             n11 Tamenity=atm
77             """
78         Then place contains exactly
79             | object | class   | type    |
80             | N10    | highway | footway |
81             | N11    | amenity | atm     |
82
83         When updating osm data
84             """
85             n10 Thighway=path,name=X
86             n11 Thighway=primary
87             """
88         Then place contains exactly
89             | object | class   | type    |
90             | N10    | highway | path    |
91             | N11    | highway | primary |
92         When indexing
93         Then placex contains exactly
94             | object      | type       | name        |
95             | N10:highway | path       | 'name': 'X' |
96             | N11:highway | primary    | -           |
97
98
99     Scenario: Main tags with name, name added
100         When loading osm data
101             """
102             n45 Tlanduse=cemetry
103             n46 Tbuilding=yes
104             """
105         Then place contains exactly
106             | object | class   | type    |
107
108         When updating osm data
109             """
110             n45 Tlanduse=cemetry,name=TODO
111             n46 Tbuilding=yes,addr:housenumber=1
112             """
113         Then place contains exactly
114             | object | class   | type    |
115             | N45    | landuse | cemetry |
116             | N46    | building| yes     |
117         When indexing
118         Then placex contains exactly
119             | object      | type       | name           | address            |
120             | N45:landuse | cemetry    | 'name': 'TODO' | -                  |
121             | N46:building| yes        | -              | 'housenumber': '1' |
122
123
124     Scenario: Main tags with name, name removed
125         When loading osm data
126             """
127             n45 Tlanduse=cemetry,name=TODO
128             n46 Tbuilding=yes,addr:housenumber=1
129             """
130         Then place contains exactly
131             | object | class   | type    |
132             | N45    | landuse | cemetry |
133             | N46    | building| yes     |
134
135         When updating osm data
136             """
137             n45 Tlanduse=cemetry
138             n46 Tbuilding=yes
139             """
140         Then place contains exactly
141             | object | class   | type    |
142         When indexing
143         Then placex contains exactly
144             | object      |
145
146     Scenario: Main tags with name, name modified
147         When loading osm data
148             """
149             n45 Tlanduse=cemetry,name=TODO
150             n46 Tbuilding=yes,addr:housenumber=1
151             """
152         Then place contains exactly
153             | object | class   | type    | name            | address           |
154             | N45    | landuse | cemetry | 'name' : 'TODO' | -                 |
155             | N46    | building| yes     | -               | 'housenumber': '1'|
156
157         When updating osm data
158             """
159             n45 Tlanduse=cemetry,name=DONE
160             n46 Tbuilding=yes,addr:housenumber=10
161             """
162         Then place contains exactly
163             | object | class   | type    | name            | address            |
164             | N45    | landuse | cemetry | 'name' : 'DONE' | -                  |
165             | N46    | building| yes     | -               | 'housenumber': '10'|
166         When indexing
167         Then placex contains exactly
168             | object | class   | type    | name            | address            |
169             | N45    | landuse | cemetry | 'name' : 'DONE' | -                  |
170             | N46    | building| yes     | -               | 'housenumber': '10'|
171
172
173     Scenario: Main tag added to address only node
174         When loading osm data
175             """
176             n1 Taddr:housenumber=345
177             """
178         Then place contains exactly
179             | object | class | type  | address |
180             | N1     | place | house | 'housenumber': '345'|
181
182         When updating osm data
183             """
184             n1 Taddr:housenumber=345,building=yes
185             """
186         Then place contains exactly
187             | object | class    | type  | address |
188             | N1     | building | yes   | 'housenumber': '345'|
189         When indexing
190         Then placex contains exactly
191             | object | class    | type  | address |
192             | N1     | building | yes   | 'housenumber': '345'|
193
194
195     Scenario: Main tag removed from address only node
196         When loading osm data
197             """
198             n1 Taddr:housenumber=345,building=yes
199             """
200         Then place contains exactly
201             | object | class    | type  | address |
202             | N1     | building | yes   | 'housenumber': '345'|
203
204         When updating osm data
205             """
206             n1 Taddr:housenumber=345
207             """
208         Then place contains exactly
209             | object | class | type  | address |
210             | N1     | place | house | 'housenumber': '345'|
211         When indexing
212         Then placex contains exactly
213             | object | class | type  | address |
214             | N1     | place | house | 'housenumber': '345'|
215
216
217     Scenario: Main tags with name key, adding key name
218         When loading osm data
219             """
220             n2 Tbridge=yes
221             """
222         Then place contains exactly
223             | object | class    | type  |
224
225         When updating osm data
226             """
227             n2 Tbridge=yes,bridge:name=high
228             """
229         Then place contains exactly
230             | object | class    | type  | name           |
231             | N2     | bridge   | yes   | 'name': 'high' |
232         When indexing
233         Then placex contains exactly
234             | object | class    | type  | name           |
235             | N2     | bridge   | yes   | 'name': 'high' |
236
237
238     Scenario: Main tags with name key, deleting key name
239         When loading osm data
240             """
241             n2 Tbridge=yes,bridge:name=high
242             """
243         Then place contains exactly
244             | object | class    | type  | name           |
245             | N2     | bridge   | yes   | 'name': 'high' |
246
247         When updating osm data
248             """
249             n2 Tbridge=yes
250             """
251         Then place contains exactly
252             | object |
253         When indexing
254         Then placex contains exactly
255             | object |
256
257
258     Scenario: Main tags with name key, changing key name
259         When loading osm data
260             """
261             n2 Tbridge=yes,bridge:name=high
262             """
263         Then place contains exactly
264             | object | class    | type  | name           |
265             | N2     | bridge   | yes   | 'name': 'high' |
266
267         When updating osm data
268             """
269             n2 Tbridge=yes,bridge:name:en=high
270             """
271         Then place contains exactly
272             | object | class  | type | name              |
273             | N2     | bridge | yes  | 'name:en': 'high' |
274         When indexing
275         Then placex contains exactly
276             | object | class  | type | name              |
277             | N2     | bridge | yes  | 'name:en': 'high' |
278
279
280     Scenario: Downgrading a highway to one that is dropped without name
281         When loading osm data
282           """
283           n100 x0 y0
284           n101 x0.0001 y0.0001
285           w1 Thighway=residential Nn100,n101
286           """
287         Then place contains exactly
288           | object     |
289           | W1:highway |
290
291         When updating osm data
292           """
293           w1 Thighway=service Nn100,n101
294           """
295         Then place contains exactly
296           | object     |
297         When indexing
298         Then placex contains exactly
299             | object |
300
301
302     Scenario: Upgrading a highway to one that is not dropped without name
303         When loading osm data
304           """
305           n100 x0 y0
306           n101 x0.0001 y0.0001
307           w1 Thighway=service Nn100,n101
308           """
309         Then place contains exactly
310           | object     |
311
312         When updating osm data
313           """
314           w1 Thighway=unclassified Nn100,n101
315           """
316         Then place contains exactly
317           | object     |
318           | W1:highway |
319         When indexing
320         Then placex contains exactly
321           | object     |
322           | W1:highway |
323
324
325     Scenario: Downgrading a highway when a second tag is present
326         When loading osm data
327           """
328           n100 x0 y0
329           n101 x0.0001 y0.0001
330           w1 Thighway=residential,tourism=hotel Nn100,n101
331           """
332         Then place contains exactly
333           | object     | type        |
334           | W1:highway | residential |
335           | W1:tourism | hotel       |
336
337         When updating osm data
338           """
339           w1 Thighway=service,tourism=hotel Nn100,n101
340           """
341         Then place contains exactly
342           | object     | type  |
343           | W1:tourism | hotel |
344         When indexing
345         Then placex contains exactly
346           | object     | type  |
347           | W1:tourism | hotel |
348
349
350     Scenario: Upgrading a highway when a second tag is present
351         When loading osm data
352           """
353           n100 x0 y0
354           n101 x0.0001 y0.0001
355           w1 Thighway=service,tourism=hotel Nn100,n101
356           """
357         Then place contains exactly
358           | object     | type  |
359           | W1:tourism | hotel |
360
361         When updating osm data
362           """
363           w1 Thighway=residential,tourism=hotel Nn100,n101
364           """
365         Then place contains exactly
366           | object     | type        |
367           | W1:highway | residential |
368           | W1:tourism | hotel       |
369         When indexing
370         Then placex contains exactly
371           | object     | type        |
372           | W1:highway | residential |
373           | W1:tourism | hotel       |
374
375
376     Scenario: Replay on administrative boundary
377         When loading osm data
378           """
379           n10 x34.0 y-4.23
380           n11 x34.1 y-4.23
381           n12 x34.2 y-4.13
382           w10 Tboundary=administrative,waterway=river,name=Border,admin_level=2 Nn12,n11,n10
383           """
384         Then place contains exactly
385           | object       | type           | admin_level | name             |
386           | W10:waterway | river          | 2           | 'name': 'Border' |
387           | W10:boundary | administrative | 2           | 'name': 'Border' |
388
389         When updating osm data
390           """
391           w10 Tboundary=administrative,waterway=river,name=Border,admin_level=2 Nn12,n11,n10
392           """
393         Then place contains exactly
394           | object       | type           | admin_level | name             |
395           | W10:waterway | river          | 2           | 'name': 'Border' |
396           | W10:boundary | administrative | 2           | 'name': 'Border' |
397         When indexing
398         Then placex contains exactly
399           | object       | type           | admin_level | name             |
400           | W10:waterway | river          | 2           | 'name': 'Border' |
401
402
403     Scenario: Change admin_level on administrative boundary
404         Given the grid
405           | 10 | 11 |
406           | 13 | 12 |
407         When loading osm data
408           """
409           n10
410           n11
411           n12
412           n13
413           w10 Nn10,n11,n12,n13,n10
414           r10 Ttype=multipolygon,boundary=administrative,name=Border,admin_level=2 Mw10@
415           """
416         Then place contains exactly
417           | object       | admin_level |
418           | R10:boundary | 2           |
419
420         When updating osm data
421           """
422           r10 Ttype=multipolygon,boundary=administrative,name=Border,admin_level=4 Mw10@
423           """
424         Then place contains exactly
425           | object       | type           | admin_level |
426           | R10:boundary | administrative | 4           |
427         When indexing
428         Then placex contains exactly
429           | object       | type           | admin_level |
430           | R10:boundary | administrative | 4           |
431
432
433     Scenario: Change boundary to administrative
434         Given the grid
435           | 10 | 11 |
436           | 13 | 12 |
437         When loading osm data
438           """
439           n10
440           n11
441           n12
442           n13
443           w10 Nn10,n11,n12,n13,n10
444           r10 Ttype=multipolygon,boundary=informal,name=Border,admin_level=4 Mw10@
445           """
446         Then place contains exactly
447           | object       | type     | admin_level |
448           | R10:boundary | informal | 4           |
449
450         When updating osm data
451           """
452           r10 Ttype=multipolygon,boundary=administrative,name=Border,admin_level=4 Mw10@
453           """
454         Then place contains exactly
455           | object       | type           | admin_level |
456           | R10:boundary | administrative | 4           |
457         When indexing
458         Then placex contains exactly
459           | object       | type           | admin_level |
460           | R10:boundary | administrative | 4           |
461
462
463     Scenario: Change boundary away from administrative
464         Given the grid
465           | 10 | 11 |
466           | 13 | 12 |
467         When loading osm data
468           """
469           n10
470           n11
471           n12
472           n13
473           w10 Nn10,n11,n12,n13,n10
474           r10 Ttype=multipolygon,boundary=administrative,name=Border,admin_level=4 Mw10@
475           """
476         Then place contains exactly
477           | object       | type           | admin_level |
478           | R10:boundary | administrative | 4           |
479
480         When updating osm data
481           """
482           r10 Ttype=multipolygon,boundary=informal,name=Border,admin_level=4 Mw10@
483           """
484         Then place contains exactly
485           | object       | type     | admin_level |
486           | R10:boundary | informal | 4           |
487         When indexing
488         Then placex contains exactly
489           | object       | type     | admin_level |
490           | R10:boundary | informal | 4           |