Skip to content

Instantly share code, notes, and snippets.

@mwlang
Created June 25, 2013 19:09
Show Gist options
  • Save mwlang/5861421 to your computer and use it in GitHub Desktop.
Save mwlang/5861421 to your computer and use it in GitHub Desktop.
require 'minitest_helper'
ADDRESSES = {
toledo_ohio: {
street1: '',
city: 'Toledo',
state: '',
zip: '',
country: 'United States',
expected_obfuscated_street: '',
expected_full_address: 'Toledo,United States',
expected_latitude: 41.6639383,
expected_longitude: -83.555212,
expected_accuracy: 4,
},
toledo_spain: {
street1: '',
city: 'Toledo',
state: '',
zip: '',
country: 'Spain',
expected_obfuscated_street: '',
expected_full_address: 'Toledo,Spain',
expected_latitude: 39.8628316,
expected_longitude: -4.0273231,
expected_accuracy: 4,
},
uruguay: {
street1: 'Pure Life',
city: 'Punta del Este',
state: '',
zip: '20100',
country: 'Uruguay',
expected_obfuscated_street: 'Pure Life',
expected_full_address: 'Pure Life,Punta del Este,20100,Uruguay',
expected_latitude: -34.9666667,
expected_longitude: -54.95,
expected_accuracy: 4,
},
thailand: {
street1: '63/22 Moo 5 Chong Mon Beach Villa 3',
city: 'Koh Samui',
state: 'Suratthani',
zip: '84320',
country: 'Thailand',
expected_obfuscated_street: 'Moo 5 Chong Mon Beach Villa',
expected_full_address: '63/22 Moo 5 Chong Mon Beach Villa 3,Koh Samui,Suratthani,84320,Thailand',
expected_latitude: 9.544635,
expected_longitude: 100.0247788,
expected_accuracy: 5,
},
}
EXPECTED_KEYS = [:expected_obfuscated_street, :expected_full_address, :expected_latitude, :expected_longitude, :expected_accuracy, :expected_bogus_zip]
ADDRESSES.each_pair do |address_name, values|
describe address_name do
before do
VCR.insert_cassette("geo_coordinate_#{address_name}")
end
after do
VCR.eject_cassette
end
describe GeoCoordinate do
let(:params) { values.except(*EXPECTED_KEYS) }
let(:full_street) { params[:street1] }
let(:city) { params[:city] }
let(:state) { params[:state] }
let(:zip) { params[:zip] }
let(:country) { params[:country] }
let(:expected_obfuscated_street) { values[:expected_obfuscated_street] }
let(:expected_full_address) { values[:expected_full_address] }
let(:expected_latitude) { values[:expected_latitude] }
let(:expected_longitude) { values[:expected_longitude] }
let(:expected_accuracy) { values[:expected_accuracy] }
let(:expected_bogus_zip) { !!values[:expected_bogus_zip] }
let(:property) { Property.new(params) }
let(:geo_coordinate) { GeoCoordinate.new(property) }
it 'should have full street name' do
geo_coordinate.street.must_equal full_street
end
it 'should obfuscate the street number and box number' do
geo_coordinate.obfuscated_street.must_equal expected_obfuscated_street
end
it "should have full_address" do
geo_coordinate.full_address.must_equal expected_full_address
end
it "should have 7 for accuracy threshold level" do
geo_coordinate.accuracy_threshold_level.must_equal 7
end
it "should have 8 for accuracy threshold level" do
GeoCoordinate.new(property, :address).accuracy_threshold_level.must_equal 8
end
it "should have an accuracy of :street" do
geo_coordinate.accuracy.must_equal expected_accuracy
end
it "should have expected bogus_zip?" do
geo_coordinate.bogus_zip?(zip).must_equal expected_bogus_zip
end
it "should have latitude" do
geo_coordinate.latitude.must_equal expected_latitude
end
it "should have longitude" do
geo_coordinate.longitude.must_equal expected_longitude
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment