]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/update/linked_places.feature
switch BDD tests to always use search API
[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+name:de |
121          | R1     | -               | pnt  |
122          | N3     | R1              | pnt  |
123         When updating places
124          | osm | class    | type        | name+name:de | admin | geometry |
125          | N3  | place    | city        | newname  | 30    | 0.00001 0 |
126         Then placex contains
127          | object | linked_place_id | name+name:de |
128          | N3     | R1              | newname  |
129          | R1     | -               | newname  |
130
131     Scenario: Updating linkee extratags keeps linker's extratags
132         Given the named places
133          | osm | class    | type           | extra+wikidata | admin | geometry |
134          | R1  | boundary | administrative | 34             | 8     | poly-area:0.1 |
135         And the named places
136          | osm | class    | type           | geometry |
137          | N3  | place    | city           | 0.00001 0 |
138         And the relations
139          | id | members  |
140          | 1  | N3:label |
141         When importing
142         Then placex contains
143          | object | extratags |
144          | R1     | 'wikidata' : '34', 'linked_place' : 'city' |
145         When updating places
146          | osm | class    | type        | name    | extra+oneway | admin | geometry |
147          | N3  | place    | city        | newname | yes          | 30    | 0.00001 0 |
148         Then placex contains
149          | object | extratags |
150          | R1     | 'wikidata' : '34', 'oneway' : 'yes', 'linked_place' : 'city' |
151
152     Scenario: Remove linked_place info when linkee is removed
153         Given the places
154             | osm | class | type | name | geometry |
155             | N1  | place | city | foo  | 0 0 |
156         And the places
157             | osm | class    | type           | name | admin | geometry |
158             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
159         When importing
160         Then placex contains
161             | object | extratags |
162             | R1     | 'linked_place' : 'city' |
163         When marking for delete N1
164         Then placex contains
165             | object | extratags |
166             | R1     |  |
167
168     Scenario: Update linked_place info when linkee type changes
169         Given the places
170             | osm | class | type | name | geometry |
171             | N1  | place | city | foo  | 0 0 |
172         And the places
173             | osm | class    | type           | name | admin | geometry |
174             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
175         When importing
176         Then placex contains
177             | object | extratags |
178             | R1     | 'linked_place' : 'city' |
179         When updating places
180             | osm | class | type | name | geometry |
181             | N1  | place | town | foo  | 0 0 |
182         Then placex contains
183             | object | extratags |
184             | R1     | 'linked_place' : 'town' |