node-postal
Version:
International address parsing/normalization at C speed
59 lines (51 loc) • 2.17 kB
JavaScript
var postal = require('../');
var sets = require('simplesets');
var assert = require('assert');
describe('expand', function() {
var expansions;
var expansions2;
describe('expand_address', function() {
it('should correctly expand a US address', function() {
expansions = new sets.Set(postal.expand.expand_address('781 Franklin Ave Crown Hts Brooklyn NY'));
assert(expansions.has('781 franklin avenue crown heights brooklyn new york'));
});
it('should correctly dedupe equivalent addresses', function() {
expansions = new sets.Set(postal.expand.expand_address('30 West Twenty-sixth Street Floor Number 7', {languages: ['en']}));
expansions2 = new sets.Set(postal.expand.expand_address('Thirty W 26th St Fl #7', {languages: ['en']}));
assert(expansions.intersection(expansions2).size() > 0);
});
it('should handle non-ASCII addresses correctly from Node', function() {
expansions = new sets.Set(postal.expand.expand_address('Friedrichstraße 128, Berlin, Germany'));
assert(expansions.has('friedrich strasse 128 berlin germany'));
});
})
})
describe('parser', function() {
var parsed = [];
function has_components(parsed, components) {
var expected = Object.keys(components).length;
var got = 0;
for (var i = 0; i < parsed.length; i++) {
var el = parsed[i];
if (components[el.component] === el.value) {
got++;
}
}
return expected === got;
}
describe('parse_address', function() {
it('should parse a US address', function() {
parsed = postal.parser.parse_address('781 Franklin Ave Crown Heights Brooklyn NYC NY 11216 USA');
assert(has_components(parsed, {
house_number: '781',
road: 'franklin ave',
suburb: 'crown heights',
city_district: 'brooklyn',
city: 'nyc',
state: 'ny',
postcode: '11216',
country: 'usa'
}));
});
})
})