Skip to content

Commit

Permalink
Add predirectional to Geocodio::Address
Browse files Browse the repository at this point in the history
This adds the previously missed support for predirectionals to instances
of Geocodio::Address. When given an address such as '54 West Colorado
Boulevard Pasadena CA 91105', the result contains a predirectional of
'W'. Previously, this predirectional ended up being dropped as an
attribute (though it remained in the formatted_address/to_s method,
which is the main interface used).

Signed-off-by: David Celis <me@davidcel.is>
  • Loading branch information
davidcelis committed Feb 2, 2014
1 parent 7beebf5 commit 97caa33
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 39 deletions.
14 changes: 8 additions & 6 deletions lib/geocodio/address.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module Geocodio
class Address
attr_accessor :number
attr_accessor :predirectional
attr_accessor :street
attr_accessor :suffix
attr_accessor :city
Expand All @@ -19,12 +20,13 @@ class Address

def initialize(payload = {})
if payload['address_components']
@number = payload['address_components']['number']
@street = payload['address_components']['street']
@suffix = payload['address_components']['suffix']
@city = payload['address_components']['city']
@state = payload['address_components']['state']
@zip = payload['address_components']['zip']
@number = payload['address_components']['number']
@predirectional = payload['address_components']['predirectional']
@street = payload['address_components']['street']
@suffix = payload['address_components']['suffix']
@city = payload['address_components']['city']
@state = payload['address_components']['state']
@zip = payload['address_components']['zip']
end

if payload['location']
Expand Down
40 changes: 24 additions & 16 deletions spec/address_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,36 @@
context 'when parsed' do
subject(:address) do
VCR.use_cassette('parse') do
geocodio.parse('1 Infinite Loop Cupertino CA 95014')
geocodio.parse('54 West Colorado Boulevard Pasadena CA 91105')
end
end

it 'has a number' do
expect(address.number).to eq('1')
expect(address.number).to eq('54')
end

it 'has a predirectional' do
expect(address.predirectional).to eq('W')
end

it 'has a street' do
expect(address.street).to eq('Infinite')
expect(address.street).to eq('Colorado')
end

it 'has a suffix' do
expect(address.suffix).to eq('Loop')
expect(address.suffix).to eq('Blvd')
end

it 'has a city' do
expect(address.city).to eq('Cupertino')
expect(address.city).to eq('Pasadena')
end

it 'has a state' do
expect(address.state).to eq('CA')
end

it 'has a zip' do
expect(address.zip).to eq('95014')
expect(address.zip).to eq('91105')
end

it 'does not have a latitude' do
Expand All @@ -52,42 +56,46 @@
context 'when geocoded' do
subject(:address) do
VCR.use_cassette('geocode') do
geocodio.geocode('1 Infinite Loop Cupertino CA 95014').best
geocodio.geocode('54 West Colorado Boulevard Pasadena CA 91105').best
end
end

it 'has a number' do
expect(address.number).to eq('1')
expect(address.number).to eq('54')
end

it 'has a predirectional' do
expect(address.predirectional).to eq('W')
end

it 'has a street' do
expect(address.street).to eq('Infinite')
expect(address.street).to eq('Colorado')
end

it 'has a suffix' do
expect(address.suffix).to eq('Loop')
expect(address.suffix).to eq('Blvd')
end

it 'has a city' do
expect(address.city).to eq('Monta Vista')
expect(address.city).to eq('Pasadena')
end

it 'has a state' do
expect(address.state).to eq('CA')
end

it 'has a zip' do
expect(address.zip).to eq('95014')
expect(address.zip).to eq('91105')
end

it 'has a latitude' do
expect(address.latitude).to eq(37.331669)
expect(address.lat).to eq(37.331669)
expect(address.latitude).to eq(34.145760590909)
expect(address.lat).to eq(34.145760590909)
end

it 'has a longitude' do
expect(address.longitude).to eq(-122.03074)
expect(address.lng).to eq(-122.03074)
expect(address.longitude).to eq(-118.15204363636)
expect(address.lng).to eq(-118.15204363636)
end

it 'has an accuracy' do
Expand Down
4 changes: 2 additions & 2 deletions spec/client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

describe Geocodio::Client do
let(:geocodio) { Geocodio::Client.new }
let(:address) { '1 Infinite Loop Cupertino CA 95014' }
let(:address) { '54 West Colorado Boulevard Pasadena CA 91105' }

it 'requires an API key' do
VCR.use_cassette('invalid_key') do
Expand All @@ -22,7 +22,7 @@
VCR.use_cassette('geocode') do
addresses = geocodio.geocode(address)

expect(addresses.size).to eq(1)
expect(addresses.size).to eq(2)
expect(addresses).to be_a(Geocodio::AddressSet)
end
end
Expand Down
14 changes: 7 additions & 7 deletions spec/vcr_cassettes/geocode.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions spec/vcr_cassettes/invalid_key.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions spec/vcr_cassettes/parse.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 97caa33

Please sign in to comment.