+ Scenario: admin levels overlapping a place area are not demoted
+ Given the named places
+ | osm | class | type | admin | geometry |
+ | R10 | place | city | 15 | (0 0, 0 2, 2 0, 0 0) |
+ | R20 | boundary | administrative | 6 | (-1 0, 0 1, 1 0, -1 0) |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R10 | 16 | 16 |
+ | R20 | 12 | 12 |
+
+ Scenario: admin levels with equal area as a place area are not demoted
+ Given the named places
+ | osm | class | type | admin | geometry |
+ | R10 | place | city | 15 | (0 0, 0 2, 2 0, 0 0) |
+ | R20 | boundary | administrative | 6 | (0 0, 0 2, 2 0, 0 0) |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R10 | 16 | 16 |
+ | R20 | 12 | 12 |
+
+
+ Scenario: adjacent admin_levels are considered the same object when they have the same wikidata
+ Given the named places
+ | osm | class | type | admin | extra+wikidata | geometry |
+ | N20 | place | square | 15 | Q123 | 0.1 0.1 |
+ | R23 | boundary | administrative | 10 | Q444 | (0 0, 0 1, 1 1, 1 0, 0 0) |
+ | R21 | boundary | administrative | 9 | Q444 | (0 0, 0 1, 1 1, 1 0, 0 0) |
+ | R22 | boundary | administrative | 8 | Q444 | (0 0, 0 1, 1 1, 1 0, 0 0) |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R23 | 20 | 0 |
+ | R21 | 18 | 0 |
+ | R22 | 16 | 16 |
+ Then place_addressline contains
+ | object | address | cached_rank_address |
+ | N20 | R22 | 16 |
+ Then place_addressline doesn't contain
+ | object | address |
+ | N20 | R21 |
+ | N20 | R23 |
+
+ Scenario: adjacent admin_levels are considered different objects when they have different wikidata
+ Given the named places
+ | osm | class | type | admin | extra+wikidata | geometry |
+ | N20 | place | square | 15 | Q123 | 0.1 0.1 |
+ | R21 | boundary | administrative | 9 | Q4441 | (0 0, 0 1, 1 1, 1 0, 0 0) |
+ | R22 | boundary | administrative | 8 | Q444 | (0 0, 0 1, 1 1, 1 0, 0 0) |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R21 | 18 | 18 |
+ | R22 | 16 | 16 |
+ Then place_addressline contains
+ | object | address | cached_rank_address |
+ | N20 | R22 | 16 |
+ | N20 | R21 | 18 |
+
+ Scenario: Mixes of admin boundaries and place areas I
+ Given the grid
+ | 1 | | 10 | | | 2 |
+ | | 9 | | | | |
+ | 20| | 21 | | | |
+ | 4 | | 11 | | | 3 |
+ And the places
+ | osm | class | type | admin | name | geometry |
+ | R1 | boundary | administrative | 5 | Greater London | (1,2,3,4,1) |
+ | R2 | boundary | administrative | 8 | Kensington | (1,10,11,4,1) |
+ And the places
+ | osm | class | type | name | geometry |
+ | R10 | place | city | London | (1,2,3,4,1) |
+ | N9 | place | town | Fulham | 9 |
+ | W1 | highway | residential | Lots Grove | 20,21 |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R1 | 10 | 10 |
+ | R10 | 16 | 16 |
+ | R2 | 16 | 18 |
+ | N9 | 18 | 18 |
+ And place_addressline contains
+ | object | address | isaddress | cached_rank_address |
+ | W1 | R1 | True | 10 |
+ | W1 | R10 | True | 16 |
+ | W1 | R2 | True | 18 |
+ | W1 | N9 | False | 18 |
+
+
+ Scenario: Mixes of admin boundaries and place areas II
+ Given the grid
+ | 1 | | 10 | | 5 | 2 |
+ | | 9 | | | | |
+ | 20| | 21 | | | |
+ | 4 | | 11 | | 6 | 3 |
+ And the places
+ | osm | class | type | admin | name | geometry |
+ | R1 | boundary | administrative | 5 | Greater London | (1,2,3,4,1) |
+ | R2 | boundary | administrative | 8 | London | (1,5,6,4,1) |
+ And the places
+ | osm | class | type | name | geometry |
+ | R10 | place | city | Westminster | (1,10,11,4,1) |
+ | N9 | place | town | Fulham | 9 |
+ | W1 | highway | residential | Lots Grove | 20,21 |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R1 | 10 | 10 |
+ | R2 | 16 | 16 |
+ | R10 | 16 | 18 |
+ | N9 | 18 | 18 |
+ And place_addressline contains
+ | object | address | isaddress | cached_rank_address |
+ | W1 | R1 | True | 10 |
+ | W1 | R10 | True | 18 |
+ | W1 | R2 | True | 16 |
+ | W1 | N9 | False | 18 |