parse-google-place
Version:
Parse a google place into a normal US address format
103 lines (96 loc) • 2.06 kB
JavaScript
'use strict'
var test = require('tape')
var spok = require('spok')
var place = require('./fixture')
var parseGooglePlace = require('./')
test('basic', (t) => {
spok(t, parseGooglePlace(place), {
streetNumber: '100',
streetName: 'Pine Street',
address: '100 Pine Street',
city: 'Denver',
county: 'Mountain County',
stateShort: 'CO',
stateLong: 'Colorado',
countryShort: 'US',
countryLong: 'United States',
zipCode: '802005'
})
t.end()
})
test('basic with address fallbacks', t => {
spok(t, parseGooglePlace({
address_components: [
{
types: ['street_number'],
long_name: '123'
}
]
}), {
address: '123'
})
spok(t, parseGooglePlace({
address_components: [
{
types: ['route'],
long_name: 'Main St'
}
]
}), {
address: 'Main St'
})
spok(t, parseGooglePlace({
address_components: [
{
types: ['street_number'],
long_name: '123'
},
{
types: ['route'],
long_name: 'Main St'
}
]
}), {
address: '123 Main St'
})
t.end()
})
test('default to empty string', (t) => {
let result = parseGooglePlace({})
t.equal(result.countryShort, '')
t.equal(result.countryLong, '')
t.end()
})
test('city fallbacks', (t) => {
t.equal(parseGooglePlace({
address_components: [{
long_name: 'Town1',
types: ['sublocality']
}]
}).city, 'Town1')
t.equal(parseGooglePlace({
address_components: [{
long_name: 'Town2',
types: ['sublocality_level_1']
}]
}).city, 'Town2')
t.equal(parseGooglePlace({
address_components: [{
long_name: 'Town3',
types: ['neighborhood']
}]
}).city, 'Town3')
t.equal(parseGooglePlace({
address_components: [{
long_name: 'Town4',
types: ['administrative_area_level_3']
}]
}).city, 'Town4')
t.equal(parseGooglePlace({
address_components: [{
long_name: 'Town5',
types: ['administrative_area_level_2']
}]
}).city, 'Town5')
t.end()
})