]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/update/parenting.feature
fix bug with keeping linking on updates
[nominatim.git] / test / bdd / db / update / parenting.feature
1 @DB
2 Feature: Update parenting of objects
3
4     Scenario: POI inside building inherits addr:street change
5         Given the scene building-on-street-corner
6         And the named places
7          | osm | class   | type       | geometry |
8          | N1  | amenity | bank       | :n-inner |
9          | N2  | shop    | bakery     | :n-edge-NS |
10          | N3  | shop    | supermarket| :n-edge-WE |
11         And the places
12          | osm | class    | type | street  | housenr | geometry |
13          | W1  | building | yes  | nowhere | 3       | :w-building |
14         And the places
15          | osm | class    | type        | name | geometry |
16          | W2  | highway  | primary     | bar  | :w-WE |
17          | W3  | highway  | residential | foo  | :w-NS |
18         When importing
19         Then placex contains
20          | object | parent_place_id | housenumber |
21          | W1     | W2              | 3 |
22          | N1     | W3              | 3 |
23          | N2     | W3              | 3 |
24          | N3     | W2              | 3 |
25         When updating places
26          | osm | class    | type | street | addr_place | housenr | geometry    |
27          | W1  | building | yes  | foo    | nowhere    | 3       | :w-building |
28         And updating places
29          | osm | class   | type       | name | geometry |
30          | N3  | shop    | supermarket| well | :n-edge-WE |
31         Then placex contains
32          | object | parent_place_id | housenumber |
33          | W1     | W3              | 3 |
34          | N1     | W3              | 3 |
35          | N2     | W3              | 3 |
36          | N3     | W3              | 3 |
37
38
39     Scenario: Housenumber is reparented when street gets name matching addr:street
40         Given the grid
41          | 1 |    |   | 2 |
42          |   | 10 |   |   |
43          |   |    |   |   |
44          | 3 |    |   | 4 |
45         And the places
46          | osm | class   | type        | name     | geometry |
47          | W1  | highway | residential | A street | 1,2      |
48          | W2  | highway | residential | B street | 3,4      |
49         And the places
50          | osm | class    | type | housenr | street   | geometry |
51          | N1  | building | yes  | 3       | X street | 10       |
52         When importing
53         Then placex contains
54          | object | parent_place_id |
55          | N1     | W1              |
56         When updating places
57          | osm | class   | type        | name     | geometry |
58          | W2  | highway | residential | X street | 3,4      |
59         Then placex contains
60          | object | parent_place_id |
61          | N1     | W2              |
62
63
64     Scenario: Housenumber is reparented when street looses name matching addr:street
65         Given the grid
66          | 1 |    |   | 2 |
67          |   | 10 |   |   |
68          |   |    |   |   |
69          | 3 |    |   | 4 |
70         And the places
71          | osm | class   | type        | name     | geometry |
72          | W1  | highway | residential | A street | 1,2      |
73          | W2  | highway | residential | X street | 3,4      |
74         And the places
75          | osm | class    | type | housenr | street   | geometry |
76          | N1  | building | yes  | 3       | X street | 10       |
77         When importing
78         Then placex contains
79          | object | parent_place_id |
80          | N1     | W2              |
81         When updating places
82          | osm | class   | type        | name     | geometry |
83          | W2  | highway | residential | B street | 3,4      |
84         Then placex contains
85          | object | parent_place_id |
86          | N1     | W1              |
87
88
89     Scenario: Housenumber is reparented when street gets name matching addr:street
90         Given the grid
91          | 1 |    |   | 2 |
92          |   | 10 |   |   |
93          |   |    |   |   |
94          | 3 |    |   | 4 |
95         And the places
96          | osm | class   | type        | name     | geometry |
97          | W1  | highway | residential | A street | 1,2      |
98          | W2  | highway | residential | B street | 3,4      |
99         And the places
100          | osm | class    | type | housenr | street   | geometry |
101          | N1  | building | yes  | 3       | X street | 10       |
102         When importing
103         Then placex contains
104          | object | parent_place_id |
105          | N1     | W1              |
106         When updating places
107          | osm | class   | type        | name     | geometry |
108          | W2  | highway | residential | X street | 3,4      |
109         Then placex contains
110          | object | parent_place_id |
111          | N1     | W2              |
112
113
114     # Invalidation of geometries currently disabled for addr:place matches.
115     @Fail
116     Scenario: Housenumber is reparented when place is renamed to matching addr:place
117         Given the grid
118          | 1 |    |   | 2 |
119          |   | 10 | 4 |   |
120          |   |    |   |   |
121          |   |    | 5 |   |
122         And the places
123          | osm | class   | type        | name     | geometry |
124          | W1  | highway | residential | A street | 1,2      |
125          | N5  | place   | village     | Bdorf    | 5        |
126          | N4  | place   | village     | Other    | 4        |
127         And the places
128          | osm | class    | type | housenr | addr_place | geometry |
129          | N1  | building | yes  | 3       | Cdorf      | 10       |
130         When importing
131         Then placex contains
132          | object | parent_place_id |
133          | N1     | N4              |
134         When updating places
135          | osm | class   | type        | name     | geometry |
136          | N5  | place   | village     | Cdorf    | 5        |
137         Then placex contains
138          | object | parent_place_id |
139          | N1     | N5              |
140
141
142     Scenario: Housenumber is reparented when it looses a matching addr:place
143         Given the grid
144          | 1 |    |   | 2 |
145          |   | 10 | 4 |   |
146          |   |    |   |   |
147          |   |    | 5 |   |
148         And the places
149          | osm | class   | type        | name     | geometry |
150          | W1  | highway | residential | A street | 1,2      |
151          | N5  | place   | village     | Bdorf    | 5        |
152          | N4  | place   | village     | Other    | 4        |
153         And the places
154          | osm | class    | type | housenr | addr_place | geometry |
155          | N1  | building | yes  | 3       | Bdorf      | 10       |
156         When importing
157         Then placex contains
158          | object | parent_place_id |
159          | N1     | N5              |
160         When updating places
161          | osm | class   | type        | name     | geometry |
162          | N5  | place   | village     | Cdorf    | 5        |
163         Then placex contains
164          | object | parent_place_id |
165          | N1     | N4              |