]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/db/update/parenting.feature
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / test / bdd / db / update / parenting.feature
index 99199de4fe24469450570090e50cc344eabbac0a..1a23d903d37c50dd70525a911082d64dd83b9895 100644 (file)
 @DB
 Feature: Update parenting of objects
 
 @DB
 Feature: Update parenting of objects
 
-Scenario: POI inside building inherits addr:street change
-        Given the scene building-on-street-corner
+    Scenario: POI inside building inherits addr:street change
+        Given the grid
+         | 10 |  |   |  |   |   |   | 11 |
+         |    |  | 5 |  |   | 6 |   |    |
+         |    |  |   |  |   |   |   |    |
+         |    |  |   |  | 1 |   |   |    |
+         | 12 |  | 8 |  |   | 7 |   |    |
         And the named places
         And the named places
-         | osm | class   | type       | geometry |
-         | N1  | amenity | bank       | :n-inner |
-         | N2  | shop    | bakery     | :n-edge-NS |
-         | N3  | shop    | supermarket| :n-edge-WE |
+         | osm | class   | type  |
+         | N1  | amenity | bank  |
         And the places
          | osm | class    | type | street  | housenr | geometry |
         And the places
          | osm | class    | type | street  | housenr | geometry |
-         | W1  | building | yes  | nowhere | 3       | :w-building |
+         | W1  | building | yes  | nowhere | 3       | (5,6,7,8,5) |
         And the places
          | osm | class    | type        | name | geometry |
         And the places
          | osm | class    | type        | name | geometry |
-         | W2  | highway  | primary     | bar  | :w-WE |
-         | W3  | highway  | residential | foo  | :w-NS |
+         | W2  | highway  | primary     | bar  | 10,11 |
+         | W3  | highway  | residential | foo  | 10,12 |
         When importing
         Then placex contains
          | object | parent_place_id | housenumber |
          | W1     | W2              | 3 |
         When importing
         Then placex contains
          | object | parent_place_id | housenumber |
          | W1     | W2              | 3 |
-         | N1     | W3              | 3 |
-         | N2     | W3              | 3 |
-         | N3     | W2              | 3 |
+         | N1     | W2              | 3 |
         When updating places
          | osm | class    | type | street | addr_place | housenr | geometry    |
         When updating places
          | osm | class    | type | street | addr_place | housenr | geometry    |
-         | W1  | building | yes  | foo    | nowhere    | 3       | :w-building |
+         | W1  | building | yes  | foo    | nowhere    | 3       | (5,6,7,8,5) |
         And updating places
         And updating places
-         | osm | class   | type       | name | geometry |
-         | N3  | shop    | supermarket| well | :n-edge-WE |
+         | osm | class   | type | name |
+         | N1  | amenity | bank | well |
         Then placex contains
          | object | parent_place_id | housenumber |
          | W1     | W3              | 3 |
          | N1     | W3              | 3 |
         Then placex contains
          | object | parent_place_id | housenumber |
          | W1     | W3              | 3 |
          | N1     | W3              | 3 |
-         | N2     | W3              | 3 |
-         | N3     | W3              | 3 |
+
+
+    Scenario: Housenumber is reparented when street gets name matching addr:street
+        Given the grid
+         | 1 |    |   | 2 |
+         |   | 10 |   |   |
+         |   |    |   |   |
+         | 3 |    |   | 4 |
+        And the places
+         | osm | class   | type        | name     | geometry |
+         | W1  | highway | residential | A street | 1,2      |
+         | W2  | highway | residential | B street | 3,4      |
+        And the places
+         | osm | class    | type | housenr | street   | geometry |
+         | N1  | building | yes  | 3       | X street | 10       |
+        When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | W1              |
+        When updating places
+         | osm | class   | type        | name     | geometry |
+         | W2  | highway | residential | X street | 3,4      |
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | W2              |
+
+
+    Scenario: Housenumber is reparented when street looses name matching addr:street
+        Given the grid
+         | 1 |    |   | 2 |
+         |   | 10 |   |   |
+         |   |    |   |   |
+         | 3 |    |   | 4 |
+        And the places
+         | osm | class   | type        | name     | geometry |
+         | W1  | highway | residential | A street | 1,2      |
+         | W2  | highway | residential | X street | 3,4      |
+        And the places
+         | osm | class    | type | housenr | street   | geometry |
+         | N1  | building | yes  | 3       | X street | 10       |
+        When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | W2              |
+        When updating places
+         | osm | class   | type        | name     | geometry |
+         | W2  | highway | residential | B street | 3,4      |
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | W1              |
+
+
+    Scenario: Housenumber is reparented when street gets name matching addr:street
+        Given the grid
+         | 1 |    |   | 2 |
+         |   | 10 |   |   |
+         |   |    |   |   |
+         | 3 |    |   | 4 |
+        And the places
+         | osm | class   | type        | name     | geometry |
+         | W1  | highway | residential | A street | 1,2      |
+         | W2  | highway | residential | B street | 3,4      |
+        And the places
+         | osm | class    | type | housenr | street   | geometry |
+         | N1  | building | yes  | 3       | X street | 10       |
+        When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | W1              |
+        When updating places
+         | osm | class   | type        | name     | geometry |
+         | W2  | highway | residential | X street | 3,4      |
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | W2              |
+
+
+    # Invalidation of geometries currently disabled for addr:place matches.
+    @Fail
+    Scenario: Housenumber is reparented when place is renamed to matching addr:place
+        Given the grid
+         | 1 |    |   | 2 |
+         |   | 10 | 4 |   |
+         |   |    |   |   |
+         |   |    | 5 |   |
+        And the places
+         | osm | class   | type        | name     | geometry |
+         | W1  | highway | residential | A street | 1,2      |
+         | N5  | place   | village     | Bdorf    | 5        |
+         | N4  | place   | village     | Other    | 4        |
+        And the places
+         | osm | class    | type | housenr | addr_place | geometry |
+         | N1  | building | yes  | 3       | Cdorf      | 10       |
+        When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | N4              |
+        When updating places
+         | osm | class   | type        | name     | geometry |
+         | N5  | place   | village     | Cdorf    | 5        |
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | N5              |
+
+
+    Scenario: Housenumber is reparented when it looses a matching addr:place
+        Given the grid
+         | 1 |    |   | 2 |
+         |   | 10 | 4 |   |
+         |   |    |   |   |
+         |   |    | 5 |   |
+        And the places
+         | osm | class   | type        | name     | geometry |
+         | W1  | highway | residential | A street | 1,2      |
+         | N5  | place   | village     | Bdorf    | 5        |
+         | N4  | place   | village     | Other    | 4        |
+        And the places
+         | osm | class    | type | housenr | addr_place | geometry |
+         | N1  | building | yes  | 3       | Bdorf      | 10       |
+        When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | N5              |
+        When updating places
+         | osm | class   | type        | name     | geometry |
+         | N5  | place   | village     | Cdorf    | 5        |
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | N4              |