X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/19e9748874afa4419d89cc36e12613ad57ee867a..8c54a274e7180b0e06f9581bc16305f87c8ae412:/test/bdd/db/import/linking.feature diff --git a/test/bdd/db/import/linking.feature b/test/bdd/db/import/linking.feature index 0954ed4e..915c13b3 100644 --- a/test/bdd/db/import/linking.feature +++ b/test/bdd/db/import/linking.feature @@ -14,7 +14,22 @@ Feature: Linking of places | R13 | - | | N256 | - | - Scenario: Waterways are linked when in waterway relations + Scenario: Postcode areas cannot be linked + Given the grid + | 1 | | 2 | + | | 9 | | + | 4 | | 3 | + And the named places + | osm | class | type | addr+postcode | extra+wikidata | geometry | + | R13 | boundary | postal_code | 123 | Q87493 | (1,2,3,4,1) | + | N25 | place | suburb | 123 | Q87493 | 9 | + When importing + Then placex contains + | object | linked_place_id | + | R13 | - | + | N25 | - | + + Scenario: Waterways are linked when in waterway relations Given the scene split-road And the places | osm | class | type | name | geometry | @@ -32,7 +47,7 @@ Feature: Linking of places | W2 | R13 | | R13 | - | | R23 | - | - When searching for "rhein" + When sending search query "rhein" Then results contain | osm_type | | R | @@ -40,11 +55,11 @@ Feature: Linking of places Scenario: Relations are not linked when in waterway relations Given the scene split-road And the places - | osm | class | type | name | geometry | - | W1 | waterway | river | Rhein | :w-2 | - | W2 | waterway | river | Rhein | :w-3 | - | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 | - | R2 | waterway | river | Limmat| :w-4a | + | osm | class | type | name | geometry | + | W1 | waterway | stream | Rhein | :w-2 | + | W2 | waterway | river | Rhein | :w-3 | + | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 | + | R2 | waterway | river | Limmat| :w-4a | And the relations | id | members | tags+type | | 1 | R2 | waterway | @@ -69,11 +84,11 @@ Feature: Linking of places | object | linked_place_id | | R1 | - | - Scenario: Waterways are not linked when waterway types don't match + Scenario: Waterways are not linked when the way type is not a river feature Given the scene split-road And the places | osm | class | type | name | geometry | - | W1 | waterway | drain | Rhein | :w-2 | + | W1 | waterway | lock | Rhein | :w-2 | | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 | And the relations | id | members | tags+type | @@ -83,7 +98,7 @@ Feature: Linking of places | object | linked_place_id | | W1 | - | | R1 | - | - When searching for "rhein" + When sending search query "rhein" Then results contain | ID | osm_type | | 0 | R | @@ -104,7 +119,133 @@ Feature: Linking of places | object | linked_place_id | | W1 | - | | W2 | R1 | - When searching for "rhein2" + When sending search query "rhein2" Then results contain | osm_type | | W | + + # github #573 + Scenario: Boundaries should only be linked to places + Given the named places + | osm | class | type | extra+wikidata | admin | geometry | + | R1 | boundary | administrative | 34 | 8 | poly-area:0.1 | + And the named places + | osm | class | type | geometry | + | N3 | natural | island | 0.00001 0 | + | N3 | place | city | 0.00001 0 | + And the relations + | id | members | + | 1 | N3:label | + When importing + Then placex contains + | object | linked_place_id | + | N3:natural | - | + | N3:place | R1 | + + Scenario: Nodes with 'role' label are always linked + Given the places + | osm | class | type | admin | name | geometry | + | R13 | boundary | administrative | 6 | Garbo | poly-area:0.1 | + | N2 | place | hamlet | 15 | Vario | 0.006 0.00001 | + And the relations + | id | members | tags+type | + | 13 | N2:label | boundary | + When importing + Then placex contains + | object | linked_place_id | + | N2 | R13 | + And placex contains + | object | centroid | name+name | extratags+linked_place | + | R13 | 0.006 0.00001 | Garbo | hamlet | + + Scenario: Boundaries with place tags are linked against places with same type + Given the places + | osm | class | type | admin | name | extra+place | geometry | + | R13 | boundary | administrative | 4 | Berlin | city |poly-area:0.1 | + And the places + | osm | class | type | name | geometry | + | N2 | place | city | Berlin | 0.006 0.00001 | + When importing + Then placex contains + | object | linked_place_id | + | N2 | R13 | + And placex contains + | object | rank_address | + | R13 | 16 | + When sending search query "" + | city | + | Berlin | + Then results contain + | ID | osm_type | osm_id | + | 0 | R | 13 | + When sending search query "" + | state | + | Berlin | + Then results contain + | ID | osm_type | osm_id | + | 0 | R | 13 | + + + Scenario: Boundaries without place tags only link against same admin level + Given the places + | osm | class | type | admin | name | geometry | + | R13 | boundary | administrative | 4 | Berlin |poly-area:0.1 | + And the places + | osm | class | type | name | geometry | + | N2 | place | city | Berlin | 0.006 0.00001 | + When importing + Then placex contains + | object | linked_place_id | + | N2 | - | + And placex contains + | object | rank_address | + | R13 | 8 | + When sending search query "" + | state | + | Berlin | + Then results contain + | ID | osm_type | osm_id | + | 0 | R | 13 | + When sending search query "" + | city | + | Berlin | + Then results contain + | ID | osm_type | osm_id | + | 0 | N | 2 | + + # github #1352 + Scenario: Do not use linked centroid when it is outside the area + Given the named places + | osm | class | type | admin | geometry | + | R13 | boundary | administrative | 4 | poly-area:0.01 | + And the named places + | osm | class | type | geometry | + | N2 | place | city | 0.1 0.1 | + And the relations + | id | members | tags+type | + | 13 | N2:label | boundary | + When importing + Then placex contains + | object | linked_place_id | + | N2 | R13 | + And placex contains + | object | centroid | + | R13 | in geometry | + + Scenario: Place nodes can only be linked once + Given the named places + | osm | class | type | extra+wikidata | geometry | + | N2 | place | city | Q1234 | 0 0 | + And the named places + | osm | class | type | extra+wikidata | admin | geometry | + | R1 | boundary | administrative | Q1234 | 8 | poly-area:0.1 | + | R2 | boundary | administrative | Q1234 | 9 | poly-area:0.01 | + When importing + Then placex contains + | object | linked_place_id | + | N2 | R1 | + And placex contains + | object | extratags | + | R1 | 'linked_place' : 'city', 'wikidata': 'Q1234' | + | R2 | 'wikidata': 'Q1234' | +