]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/update/linked_places.feature
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / test / bdd / db / update / linked_places.feature
1 @DB
2 Feature: Updates of linked places
3     Tests that linked places are correctly added and deleted.
4
5     Scenario: Add linked place when linking relation is renamed
6         Given the places
7             | osm | class | type | name | geometry |
8             | N1  | place | city | foo  | 0 0 |
9         And the places
10             | osm | class    | type           | name | admin | geometry |
11             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
12         When importing
13         And sending search query "foo"
14          | dups |
15          | 1    |
16         Then results contain
17          | osm_type |
18          | R |
19         When updating places
20          | osm | class    | type           | name   | admin | geometry |
21          | R1  | boundary | administrative | foobar | 8     | poly-area:0.1 |
22         Then placex contains
23          | object | linked_place_id |
24          | N1     | - |
25         When sending search query "foo"
26          | dups |
27          | 1    |
28         Then results contain
29          | osm_type |
30          | N |
31
32     Scenario: Add linked place when linking relation is removed
33         Given the places
34             | osm | class | type | name | geometry |
35             | N1  | place | city | foo  | 0 0 |
36         And the places
37             | osm | class    | type           | name | admin | geometry |
38             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
39         When importing
40         And sending search query "foo"
41          | dups |
42          | 1    |
43         Then results contain
44          | osm_type |
45          | R |
46         When marking for delete R1
47         Then placex contains
48          | object | linked_place_id |
49          | N1     | - |
50         When sending search query "foo"
51          | dups |
52          | 1    |
53         Then results contain
54          | osm_type |
55          | N |
56
57     Scenario: Remove linked place when linking relation is added
58         Given the places
59             | osm | class | type | name | geometry |
60             | N1  | place | city | foo  | 0 0 |
61         When importing
62         And sending search query "foo"
63          | dups |
64          | 1    |
65         Then results contain
66          | osm_type |
67          | N |
68         When updating places
69          | osm | class    | type           | name   | admin | geometry |
70          | R1  | boundary | administrative | foo    | 8     | poly-area:0.1 |
71         Then placex contains
72          | object | linked_place_id |
73          | N1     | R1 |
74         When sending search query "foo"
75          | dups |
76          | 1    |
77         Then results contain
78          | osm_type |
79          | R |
80
81     Scenario: Remove linked place when linking relation is renamed
82         Given the places
83             | osm | class | type | name | geometry |
84             | N1  | place | city | foo  | 0 0 |
85         And the places
86          | osm | class    | type           | name   | admin | geometry |
87          | R1  | boundary | administrative | foobar | 8     | poly-area:0.1 |
88         When importing
89         And sending search query "foo"
90          | dups |
91          | 1    |
92         Then results contain
93          | osm_type |
94          | N |
95         When updating places
96          | osm | class    | type           | name   | admin | geometry |
97          | R1  | boundary | administrative | foo    | 8     | poly-area:0.1 |
98         Then placex contains
99          | object | linked_place_id |
100          | N1     | R1 |
101         When sending search query "foo"
102          | dups |
103          | 1    |
104         Then results contain
105          | osm_type |
106          | R |
107
108     Scenario: Update linking relation when linkee name is updated
109         Given the places
110          | osm | class    | type           | name | admin | geometry |
111          | R1  | boundary | administrative | rel  | 8     | poly-area:0.1 |
112         And the places
113          | osm | class    | type        | name+name:de | admin | geometry |
114          | N3  | place    | city           | pnt  | 30    | 0.00001 0 |
115         And the relations
116          | id | members  |
117          | 1  | N3:label |
118         When importing
119         Then placex contains
120          | object | linked_place_id | name+_place_name:de |
121          | R1     | -               | pnt  |
122         And placex contains
123          | object | linked_place_id | name+name:de |
124          | N3     | R1              | pnt  |
125         When updating places
126          | osm | class    | type        | name+name:de | admin | geometry |
127          | N3  | place    | city        | newname  | 30    | 0.00001 0 |
128         Then placex contains
129          | object | linked_place_id | name+name:de |
130          | N3     | R1              | newname  |
131         And placex contains
132          | object | linked_place_id | name+_place_name:de |
133          | R1     | -               | newname  |
134
135     Scenario: Update linking relation when linkee name is deleted
136         Given the places
137          | osm | class    | type           | name | admin | geometry |
138          | R1  | boundary | administrative | rel  | 8     | poly-area:0.1 |
139         And the places
140          | osm | class    | type           | name | admin | geometry |
141          | N3  | place    | city           | pnt  | 30    | 0.00001 0 |
142         And the relations
143          | id | members  |
144          | 1  | N3:label |
145         When importing
146         Then placex contains
147          | object | linked_place_id | name+_place_name | name+name |
148          | R1     | -               | pnt              | rel       |
149         And placex contains
150          | object | linked_place_id | name+name |
151          | N3     | R1              | pnt  |
152         When sending search query "pnt"
153         Then results contain
154           | osm |
155           | R1  |
156         When updating places
157          | osm | class    | type        | name+name:de | admin | geometry |
158          | N3  | place    | city        | depnt        | 30    | 0.00001 0 |
159         Then placex contains
160          | object | linked_place_id | name+name:de |
161          | N3     | R1              | depnt  |
162         And placex contains
163          | object | linked_place_id | name+_place_name:de | name+name |
164          | R1     | -               | depnt               | rel       |
165         When sending search query "pnt"
166         Then exactly 0 results are returned
167
168     Scenario: Updating linkee extratags keeps linker's extratags
169         Given the named places
170          | osm | class    | type           | extra+wikidata | admin | geometry |
171          | R1  | boundary | administrative | 34             | 8     | poly-area:0.1 |
172         And the named places
173          | osm | class    | type           | geometry |
174          | N3  | place    | city           | 0.00001 0 |
175         And the relations
176          | id | members  |
177          | 1  | N3:label |
178         When importing
179         Then placex contains
180          | object | extratags |
181          | R1     | 'wikidata' : '34', 'linked_place' : 'city' |
182         When updating places
183          | osm | class    | type        | name    | extra+oneway | admin | geometry |
184          | N3  | place    | city        | newname | yes          | 30    | 0.00001 0 |
185         Then placex contains
186          | object | extratags |
187          | R1     | 'wikidata' : '34', 'oneway' : 'yes', 'linked_place' : 'city' |
188
189     Scenario: Remove linked_place info when linkee is removed
190         Given the places
191             | osm | class | type | name | geometry |
192             | N1  | place | city | foo  | 0 0 |
193         And the places
194             | osm | class    | type           | name | admin | geometry |
195             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
196         When importing
197         Then placex contains
198             | object | extratags |
199             | R1     | 'linked_place' : 'city' |
200         When marking for delete N1
201         Then placex contains
202             | object | extratags |
203             | R1     |  |
204
205     Scenario: Update linked_place info when linkee type changes
206         Given the places
207             | osm | class | type | name | geometry |
208             | N1  | place | city | foo  | 0 0 |
209         And the places
210             | osm | class    | type           | name | admin | geometry |
211             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
212         When importing
213         Then placex contains
214             | object | extratags |
215             | R1     | 'linked_place' : 'city' |
216         When updating places
217             | osm | class | type | name | geometry |
218             | N1  | place | town | foo  | 0 0 |
219         Then placex contains
220             | object | extratags |
221             | R1     | 'linked_place' : 'town' |