Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion middleware/normalizeParentIds.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ function normalizeParentIds(place) {
// The default values via lodash _.get is used only when the value is `undefined`, in our case it may be null.
let source = _.get(place, `${placeType}_source[0]`) || 'whosonfirst';

const layer = _.get(place, `${placeType}_layer[0]`, placeType);

const placetype_ids = _.get(place, `${placeType}_gid[0]`, null);

// looking forward to the day we can remove all geonames specific hacks, but until then...
Expand All @@ -46,7 +48,7 @@ function normalizeParentIds(place) {
source = place.source;
}

place[`${placeType}_gid`] = [ makeNewId(source, placeType, placetype_ids) ];
place[`${placeType}_gid`] = [ makeNewId(source, layer, placetype_ids) ];
}
});
}
Expand Down
8 changes: 7 additions & 1 deletion middleware/renamePlacenames.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const PARENT_PROPS = require('../helper/placeTypes');
const ADDRESS_PROPS = [
{ name: 'unit', newName: 'unit' },
{ name: 'number', newName: 'housenumber' },
{ name: 'zip', newName: 'postalcode', transform: (value) => { return [value]; } },
{ name: 'zip', newName: 'postalcode', transform: (value) => { return [value]; }, addOriginalId: true },
{ name: 'street', newName: 'street' }
];

Expand Down Expand Up @@ -63,6 +63,12 @@ function renameAddressProperty(place, prop) {
else {
place[prop.newName] = place.address_parts[prop.name];
}

if (prop.addOriginalId) {
place[`${prop.newName}_gid`] = [place.source_id];
place[`${prop.newName}_source`] = [place.source];
place[`${prop.newName}_layer`] = [place.layer];
}
}

module.exports = setup;
53 changes: 53 additions & 0 deletions test/unit/middleware/normalizeParentIds.js
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,59 @@ module.exports.tests.interface = function(test, common) {
});

});

test('address zip may override postalcode parent hierarchy', function(t) {
var input = {
data: [{
'address_parts': { 'number': '815', 'street': 'Tennessee Street', 'zip': '94107.0' },
'parent': {
'country_id': [ '85633793' ],
'country': [ 'United States' ],
'country_a': [ 'USA' ],
'postalcode': [ '94107' ],
'postalcode_id': [ '554784675' ],
},
'source': 'openaddresses',
'source_id': 'us/ca/san_francisco:819b088d2837cf5d',
'layer': 'address',
'country': [ 'United States' ],
'country_a': [ 'USA' ],
'country_gid': ['85633793'],
'postalcode': [ '94107.0' ],
'postalcode_gid': [ 'us/ca/san_francisco:819b088d2837cf5d:819b088d2837cf5d' ],
'postalcode_source': [ 'openaddresses' ],
'postalcode_layer': [ 'address' ],
}]
};

var expected = {
data: [{
'address_parts': { 'number': '815', 'street': 'Tennessee Street', 'zip': '94107.0' },
'parent': {
'country_id': [ '85633793' ],
'country': [ 'United States' ],
'country_a': [ 'USA' ],
'postalcode': [ '94107' ],
'postalcode_id': [ '554784675' ],
},
'source': 'openaddresses',
'source_id': 'us/ca/san_francisco:819b088d2837cf5d',
'layer': 'address',
'country': [ 'United States' ],
'country_a': [ 'USA' ],
'country_gid': [ 'whosonfirst:country:85633793' ],
'postalcode': [ '94107.0' ],
'postalcode_gid': [ 'openaddresses:address:us/ca/san_francisco:819b088d2837cf5d:819b088d2837cf5d' ],
'postalcode_source': [ 'openaddresses' ],
'postalcode_layer': [ 'address' ],
}]
};

normalizer({}, input, function () {
t.deepEqual(input, expected);
t.end();
});
});
};

module.exports.all = function (tape, common) {
Expand Down