]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/db/update/linked_places.feature
fix bug with keeping linking on updates
[nominatim.git] / test / bdd / db / update / linked_places.feature
index 42e62de57dc27955ab1fca4ddee1ca176c2c2c8f..3dedc46868e942ded66709d13a4be67347bd0a5c 100644 (file)
@@ -2,6 +2,25 @@
 Feature: Updates of linked places
     Tests that linked places are correctly added and deleted.
 
 Feature: Updates of linked places
     Tests that linked places are correctly added and deleted.
 
+    Scenario: Linking is kept when boundary is updated
+        Given the places
+            | osm | class | type | name | geometry |
+            | N1  | place | city | foo  | 0 0 |
+        And the places
+            | osm | class    | type           | name | admin | geometry |
+            | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | N1     | R1 |
+        When updating places
+         | osm | class    | type           | name | name+name:de | admin | geometry |
+         | R1  | boundary | administrative | foo  | Dingens      | 8     | poly-area:0.1 |
+        Then placex contains
+         | object | linked_place_id |
+         | N1     | R1 |
+
+
     Scenario: Add linked place when linking relation is renamed
         Given the places
             | osm | class | type | name | geometry |
     Scenario: Add linked place when linking relation is renamed
         Given the places
             | osm | class | type | name | geometry |
@@ -10,7 +29,9 @@ Feature: Updates of linked places
             | osm | class    | type           | name | admin | geometry |
             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
         When importing
             | osm | class    | type           | name | admin | geometry |
             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
         When importing
-        And searching for "foo" with dups
+        And sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | R |
         Then results contain
          | osm_type |
          | R |
@@ -20,7 +41,9 @@ Feature: Updates of linked places
         Then placex contains
          | object | linked_place_id |
          | N1     | - |
         Then placex contains
          | object | linked_place_id |
          | N1     | - |
-        When searching for "foo" with dups
+        When sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | N |
         Then results contain
          | osm_type |
          | N |
@@ -33,7 +56,9 @@ Feature: Updates of linked places
             | osm | class    | type           | name | admin | geometry |
             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
         When importing
             | osm | class    | type           | name | admin | geometry |
             | R1  | boundary | administrative | foo  | 8     | poly-area:0.1 |
         When importing
-        And searching for "foo" with dups
+        And sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | R |
         Then results contain
          | osm_type |
          | R |
@@ -41,7 +66,9 @@ Feature: Updates of linked places
         Then placex contains
          | object | linked_place_id |
          | N1     | - |
         Then placex contains
          | object | linked_place_id |
          | N1     | - |
-        When searching for "foo" with dups
+        When sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | N |
         Then results contain
          | osm_type |
          | N |
@@ -51,7 +78,9 @@ Feature: Updates of linked places
             | osm | class | type | name | geometry |
             | N1  | place | city | foo  | 0 0 |
         When importing
             | osm | class | type | name | geometry |
             | N1  | place | city | foo  | 0 0 |
         When importing
-        And searching for "foo" with dups
+        And sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | N |
         Then results contain
          | osm_type |
          | N |
@@ -61,7 +90,9 @@ Feature: Updates of linked places
         Then placex contains
          | object | linked_place_id |
          | N1     | R1 |
         Then placex contains
          | object | linked_place_id |
          | N1     | R1 |
-        When searching for "foo" with dups
+        When sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | R |
         Then results contain
          | osm_type |
          | R |
@@ -74,7 +105,9 @@ Feature: Updates of linked places
          | osm | class    | type           | name   | admin | geometry |
          | R1  | boundary | administrative | foobar | 8     | poly-area:0.1 |
         When importing
          | osm | class    | type           | name   | admin | geometry |
          | R1  | boundary | administrative | foobar | 8     | poly-area:0.1 |
         When importing
-        And searching for "foo" with dups
+        And sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | N |
         Then results contain
          | osm_type |
          | N |
@@ -84,7 +117,9 @@ Feature: Updates of linked places
         Then placex contains
          | object | linked_place_id |
          | N1     | R1 |
         Then placex contains
          | object | linked_place_id |
          | N1     | R1 |
-        When searching for "foo" with dups
+        When sending search query "foo"
+         | dups |
+         | 1    |
         Then results contain
          | osm_type |
          | R |
         Then results contain
          | osm_type |
          | R |
@@ -101,8 +136,10 @@ Feature: Updates of linked places
          | 1  | N3:label |
         When importing
         Then placex contains
          | 1  | N3:label |
         When importing
         Then placex contains
-         | object | linked_place_id | name+name:de |
+         | object | linked_place_id | name+_place_name:de |
          | R1     | -               | pnt  |
          | R1     | -               | pnt  |
+        And placex contains
+         | object | linked_place_id | name+name:de |
          | N3     | R1              | pnt  |
         When updating places
          | osm | class    | type        | name+name:de | admin | geometry |
          | N3     | R1              | pnt  |
         When updating places
          | osm | class    | type        | name+name:de | admin | geometry |
@@ -110,8 +147,43 @@ Feature: Updates of linked places
         Then placex contains
          | object | linked_place_id | name+name:de |
          | N3     | R1              | newname  |
         Then placex contains
          | object | linked_place_id | name+name:de |
          | N3     | R1              | newname  |
+        And placex contains
+         | object | linked_place_id | name+_place_name:de |
          | R1     | -               | newname  |
 
          | R1     | -               | newname  |
 
+    Scenario: Update linking relation when linkee name is deleted
+        Given the places
+         | osm | class    | type           | name | admin | geometry |
+         | R1  | boundary | administrative | rel  | 8     | poly-area:0.1 |
+        And the places
+         | osm | class    | type           | name | admin | geometry |
+         | N3  | place    | city           | pnt  | 30    | 0.00001 0 |
+        And the relations
+         | id | members  |
+         | 1  | N3:label |
+        When importing
+        Then placex contains
+         | object | linked_place_id | name+_place_name | name+name |
+         | R1     | -               | pnt              | rel       |
+        And placex contains
+         | object | linked_place_id | name+name |
+         | N3     | R1              | pnt  |
+        When sending search query "pnt"
+        Then results contain
+          | osm |
+          | R1  |
+        When updating places
+         | osm | class    | type        | name+name:de | admin | geometry |
+         | N3  | place    | city        | depnt        | 30    | 0.00001 0 |
+        Then placex contains
+         | object | linked_place_id | name+name:de |
+         | N3     | R1              | depnt  |
+        And placex contains
+         | object | linked_place_id | name+_place_name:de | name+name |
+         | R1     | -               | depnt               | rel       |
+        When sending search query "pnt"
+        Then exactly 0 results are returned
+
     Scenario: Updating linkee extratags keeps linker's extratags
         Given the named places
          | osm | class    | type           | extra+wikidata | admin | geometry |
     Scenario: Updating linkee extratags keeps linker's extratags
         Given the named places
          | osm | class    | type           | extra+wikidata | admin | geometry |