Nominatim/test/bdd/db/import/postcodes.feature
Sarah Hoffmann 324b1b5575 bdd tests: do not query word table directly
The BDD tests cannot make assumptions about the structure of the
word table anymore because it depends on the tokenizer. Use more
abstract descriptions instead that ask for specific kinds of
tokens.
2021-07-28 11:31:47 +02:00

157 lines
7.2 KiB
Gherkin

@DB
Feature: Import of postcodes
Tests for postcode estimation
Scenario: Postcodes on the object are preferred over those on the address
Given the scene admin-areas
And the named places
| osm | class | type | admin | addr+postcode | geometry |
| R1 | boundary | administrative | 6 | 112 | :b0 |
| R34 | boundary | administrative | 8 | 112 DE | :b1:E |
| R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
And the named places
| osm | class | type | addr+postcode | geometry |
| W93 | highway | residential | 112 DE 344 | :w2N |
| W22 | building | yes | 112 DE 344N | :building:w2N |
When importing
Then placex contains
| object | postcode |
| W22 | 112 DE 344N |
| W93 | 112 DE 344 |
| R4 | 112 DE 34 |
| R34 | 112 DE |
| R1 | 112 |
Scenario: Postcodes from a road are inherited by an attached building
Given the scene admin-areas
And the named places
| osm | class | type | addr+postcode | geometry |
| W93 | highway | residential | 86034 | :w2N |
And the named places
| osm | class | type | geometry |
| W22 | building | yes | :building:w2N |
When importing
Then placex contains
| object | postcode | parent_place_id |
| W22 | 86034 | W93 |
Scenario: Postcodes from the lowest admin area are inherited by ways
Given the scene admin-areas
And the named places
| osm | class | type | admin | addr+postcode | geometry |
| R1 | boundary | administrative | 6 | 112 | :b0 |
| R34 | boundary | administrative | 8 | 112 DE | :b1:E |
| R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
And the named places
| osm | class | type | geometry |
| W93 | highway | residential | :w2N |
When importing
Then placex contains
| object | postcode |
| W93 | 112 DE 34 |
Scenario: Postcodes from the lowest admin area with postcode are inherited by ways
Given the scene admin-areas
And the named places
| osm | class | type | admin | addr+postcode | geometry |
| R1 | boundary | administrative | 6 | 112 | :b0 |
| R34 | boundary | administrative | 8 | 112 DE | :b1:E |
And the named places
| osm | class | type | admin | geometry |
| R4 | boundary | administrative | 10 | :b2:N |
And the named places
| osm | class | type | geometry |
| W93 | highway | residential | :w2N |
When importing
Then placex contains
| object | postcode | parent_place_id |
| W93 | 112 DE | R4 |
Scenario: Postcodes from the lowest admin area are inherited by buildings
Given the scene admin-areas
And the named places
| osm | class | type | admin | addr+postcode | geometry |
| R1 | boundary | administrative | 6 | 112 | :b0 |
| R34 | boundary | administrative | 8 | 112 DE | :b1:E |
| R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
And the named places
| osm | class | type | geometry |
| W22 | building | yes | :building:w2N |
When importing
Then placex contains
| object | postcode |
| W22 | 112 DE 34 |
Scenario: Roads get postcodes from nearby named buildings without other info
Given the scene admin-areas
And the named places
| osm | class | type | geometry |
| W93 | highway | residential | :w2N |
And the named places
| osm | class | type | addr+postcode | geometry |
| W22 | building | yes | 445023 | :building:w2N |
When importing
Then placex contains
| object | postcode |
| W93 | 445023 |
Scenario: Roads get postcodes from nearby unnamed buildings without other info
Given the scene admin-areas
And the named places
| osm | class | type | geometry |
| W93 | highway | residential | :w2N |
And the named places
| osm | class | type | addr+postcode | geometry |
| W22 | place | postcode | 445023 | :building:w2N |
When importing
Then placex contains
| object | postcode |
| W93 | 445023 |
Scenario: Postcodes from admin boundaries are preferred over estimated postcodes
Given the scene admin-areas
And the named places
| osm | class | type | admin | addr+postcode | geometry |
| R1 | boundary | administrative | 6 | 112 | :b0 |
| R34 | boundary | administrative | 8 | 112 DE | :b1:E |
| R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
And the named places
| osm | class | type | geometry |
| W93 | highway | residential | :w2N |
And the named places
| osm | class | type | addr+postcode | geometry |
| W22 | building | yes | 445023 | :building:w2N |
When importing
Then placex contains
| object | postcode |
| W93 | 112 DE 34 |
Scenario: Postcodes are added to the postcode and word table
Given the places
| osm | class | type | addr+postcode | addr+housenumber | geometry |
| N34 | place | house | 01982 | 111 |country:de |
When importing
Then location_postcode contains exactly
| country | postcode | geometry |
| de | 01982 | country:de |
And there are word tokens for postcodes 01982
Scenario: Different postcodes with the same normalization can both be found
Given the places
| osm | class | type | addr+postcode | addr+housenumber | geometry |
| N34 | place | house | EH4 7EA | 111 | country:gb |
| N35 | place | house | E4 7EA | 111 | country:gb |
When importing
Then location_postcode contains exactly
| country | postcode | geometry |
| gb | EH4 7EA | country:gb |
| gb | E4 7EA | country:gb |
When sending search query "EH4 7EA"
Then results contain
| type | display_name |
| postcode | EH4 7EA |
When sending search query "E4 7EA"
Then results contain
| type | display_name |
| postcode | E4 7EA |