]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/postcodes.feature
Merge pull request #1960 from lonvia/fix-postcodes-duplicated-by-normalization
[nominatim.git] / test / bdd / db / import / postcodes.feature
1 @DB
2 Feature: Import of postcodes
3     Tests for postcode estimation
4
5     Scenario: Postcodes on the object are preferred over those on the address
6         Given the scene admin-areas
7         And the named places
8             | osm | class    | type           | admin | addr+postcode | geometry |
9             | R1  | boundary | administrative | 6     | 112           | :b0      |
10             | R34 | boundary | administrative | 8     | 112 DE        | :b1:E    |
11             | R4  | boundary | administrative | 10    | 112 DE 34     | :b2:N    |
12         And the named places
13             | osm | class    | type        | addr+postcode | geometry |
14             | W93 | highway  | residential | 112 DE 344    | :w2N     |
15             | W22 | building | yes         | 112 DE 344N   | :building:w2N |
16         When importing
17         Then placex contains
18             | object | postcode    |
19             | W22    | 112 DE 344N |
20             | W93    | 112 DE 344  |
21             | R4     | 112 DE 34   |
22             | R34    | 112 DE      |
23             | R1     | 112         |
24
25     Scenario: Postcodes from a road are inherited by an attached building
26         Given the scene admin-areas
27         And the named places
28             | osm | class    | type        | addr+postcode | geometry |
29             | W93 | highway  | residential | 86034         | :w2N     |
30         And the named places
31             | osm | class    | type  | geometry |
32             | W22 | building | yes   | :building:w2N |
33         When importing
34         Then placex contains
35             | object | postcode | parent_place_id |
36             | W22    | 86034    | W93 |
37
38     Scenario: Postcodes from the lowest admin area are inherited by ways
39         Given the scene admin-areas
40         And the named places
41             | osm | class    | type           | admin | addr+postcode | geometry |
42             | R1  | boundary | administrative | 6     | 112           | :b0      |
43             | R34 | boundary | administrative | 8     | 112 DE        | :b1:E    |
44             | R4  | boundary | administrative | 10    | 112 DE 34     | :b2:N    |
45         And the named places
46             | osm | class    | type           | geometry |
47             | W93 | highway  | residential    | :w2N     |
48         When importing
49         Then placex contains
50             | object | postcode  |
51             | W93    | 112 DE 34 |
52
53     Scenario: Postcodes from the lowest admin area with postcode are inherited by ways
54         Given the scene admin-areas
55         And the named places
56             | osm | class    | type           | admin | addr+postcode | geometry |
57             | R1  | boundary | administrative | 6     | 112           | :b0      |
58             | R34 | boundary | administrative | 8     | 112 DE        | :b1:E    |
59         And the named places
60             | osm | class    | type           | admin | geometry |
61             | R4  | boundary | administrative | 10    | :b2:N    |
62         And the named places
63             | osm | class    | type           | geometry |
64             | W93 | highway  | residential    | :w2N     |
65         When importing
66         Then placex contains
67             | object | postcode | parent_place_id |
68             | W93    | 112 DE   | R4 |
69
70     Scenario: Postcodes from the lowest admin area are inherited by buildings
71         Given the scene admin-areas
72         And the named places
73             | osm | class    | type           | admin | addr+postcode | geometry |
74             | R1  | boundary | administrative | 6     | 112           | :b0      |
75             | R34 | boundary | administrative | 8     | 112 DE        | :b1:E    |
76             | R4  | boundary | administrative | 10    | 112 DE 34     | :b2:N    |
77         And the named places
78             | osm | class    | type  | geometry |
79             | W22 | building | yes   | :building:w2N |
80         When importing
81         Then placex contains
82             | object | postcode  |
83             | W22    | 112 DE 34 |
84
85     Scenario: Roads get postcodes from nearby named buildings without other info
86         Given the scene admin-areas
87         And the named places
88             | osm | class    | type           | geometry |
89             | W93 | highway  | residential    | :w2N     |
90         And the named places
91             | osm | class    | type        | addr+postcode | geometry |
92             | W22 | building | yes         | 445023        | :building:w2N |
93         When importing
94         Then placex contains
95             | object | postcode |
96             | W93    | 445023   |
97
98     Scenario: Roads get postcodes from nearby unnamed buildings without other info
99         Given the scene admin-areas
100         And the named places
101             | osm | class    | type           | geometry |
102             | W93 | highway  | residential    | :w2N     |
103         And the named places
104             | osm | class    | type        | addr+postcode | geometry |
105             | W22 | place    | postcode    | 445023        | :building:w2N |
106         When importing
107         Then placex contains
108             | object | postcode |
109             | W93    | 445023   |
110
111     Scenario: Postcodes from admin boundaries are preferred over estimated postcodes
112         Given the scene admin-areas
113         And the named places
114             | osm | class    | type           | admin | addr+postcode | geometry |
115             | R1  | boundary | administrative | 6     | 112           | :b0      |
116             | R34 | boundary | administrative | 8     | 112 DE        | :b1:E    |
117             | R4  | boundary | administrative | 10    | 112 DE 34     | :b2:N    |
118         And the named places
119             | osm | class    | type           | geometry |
120             | W93 | highway  | residential    | :w2N     |
121         And the named places
122             | osm | class    | type        | addr+postcode | geometry |
123             | W22 | building | yes         | 445023        | :building:w2N |
124         When importing
125         Then placex contains
126             | object | postcode  |
127             | W93    | 112 DE 34 |
128
129     Scenario: Postcodes are added to the postcode and word table
130         Given the places
131            | osm | class | type  | addr+postcode | addr+housenumber | geometry |
132            | N34 | place | house | 01982         | 111              |country:de |
133         When importing
134         Then location_postcode contains exactly
135            | country | postcode | geometry |
136            | de      | 01982    | country:de |
137         And word contains
138            | word  | class | type |
139            | 01982 | place | postcode |
140
141     Scenario: Different postcodes with the same normalization can both be found
142         Given the places
143            | osm | class | type  | addr+postcode | addr+housenumber | geometry |
144            | N34 | place | house | EH4 7EA       | 111              | country:gb |
145            | N35 | place | house | E4 7EA        | 111              | country:gb |
146         When importing
147         Then location_postcode contains exactly
148            | country | postcode | geometry |
149            | gb      | EH4 7EA  | country:gb |
150            | gb      | E4 7EA   | country:gb |
151         When searching for "EH4 7EA"
152         Then results contain
153            | type     | placename |
154            | postcode | EH4 7EA      |
155         When searching for "E4 7EA"
156         Then results contain
157            | type     | placename |
158            | postcode | E4 7EA      |