| country | postcode | geometry |
| de | 01982 | country:de |
| ch | 4567 | country:ch |
- And word contains
- | word | class | type |
- | 01982 | place | postcode |
- | 4567 | place | postcode |
+ And there are word tokens for postcodes 01982,4567
Scenario: When the last postcode is deleted, it is deleted from postcode and word
Given the places
Then location_postcode contains exactly
| country | postcode | geometry |
| ch | 4567 | country:ch |
- And word contains not
- | word | class | type |
- | 01982 | place | postcode |
- And word contains
- | word | class | type |
- | 4567 | place | postcode |
+ And there are word tokens for postcodes 4567
+ And there are no word tokens for postcodes 01982
Scenario: A postcode is not deleted from postcode and word when it exist in another country
Given the places
| osm | class | type | addr+postcode | addr+housenumber | geometry |
| N34 | place | house | 01982 | 111 |country:de |
- | N35 | place | house | 01982 | 5 |country:ch |
+ | N35 | place | house | 01982 | 5 |country:fr |
When importing
And marking for delete N34
And updating postcodes
Then location_postcode contains exactly
| country | postcode | geometry |
- | ch | 01982 | country:ch |
- And word contains
- | word | class | type |
- | 01982 | place | postcode |
+ | fr | 01982 | country:fr |
+ And there are word tokens for postcodes 01982
Scenario: Updating a postcode is reflected in postcode table
Given the places
Then location_postcode contains exactly
| country | postcode | geometry |
| de | 20453 | country:de |
- And word contains
- | word | class | type |
- | 20453 | place | postcode |
+ And there are word tokens for postcodes 20453
Scenario: When changing from a postcode type, the entry appears in placex
When importing
Then location_postcode contains exactly
| country | postcode | geometry |
| de | 20453 | country:de |
- And word contains
- | word | class | type |
- | 20453 | place | postcode |
+ And there are word tokens for postcodes 20453
Scenario: When changing to a postcode type, the entry disappears from placex
When importing
Then location_postcode contains exactly
| country | postcode | geometry |
| de | 01982 | country:de |
- And word contains
- | word | class | type |
- | 01982 | place | postcode |
+ And there are word tokens for postcodes 01982
+
+ Scenario: When a parent is deleted, the postcode gets a new parent
+ Given the grid with origin DE
+ | 1 | | 3 | 4 |
+ | | 9 | | |
+ | 2 | | 5 | 6 |
+ Given the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | Big | 6 | (1,4,6,2,1) |
+ | R2 | boundary | administrative | Small | 6 | (1,3,5,2,1) |
+ Given the named places
+ | osm | class | type | addr+postcode | geometry |
+ | N9 | place | postcode | 12345 | 9 |
+ When importing
+ And updating postcodes
+ Then location_postcode contains exactly
+ | country | postcode | geometry | parent_place_id |
+ | de | 12345 | 9 | R2 |
+ When marking for delete R2
+ Then location_postcode contains exactly
+ | country | postcode | geometry | parent_place_id |
+ | de | 12345 | 9 | R1 |