Created
June 25, 2013 19:09
-
-
Save mwlang/5861421 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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