-
Alex Reisner authored
Auto-detect which one is being used. It's necessary to continue supporting 1.0 because of the existing data in people's caches. See discussion: http://github.com/alexreisner/geocoder/pull/307
Alex Reisner authoredAuto-detect which one is being used. It's necessary to continue supporting 1.0 because of the existing data in people's caches. See discussion: http://github.com/alexreisner/geocoder/pull/307
services_test.rb 5.41 KiB
# encoding: utf-8
require 'test_helper'
class ServicesTest < Test::Unit::TestCase
def test_query_url_contains_values_in_params_hash
Geocoder::Lookup.all_services_except_test.each do |l|
next if l == :google_premier # TODO: need to set keys to test
next if l == :freegeoip # does not use query string
url = Geocoder::Lookup.get(l).send(:query_url, Geocoder::Query.new(
"test", :params => {:one_in_the_hand => "two in the bush"}
))
assert_match /one_in_the_hand=two\+in\+the\+bush/, url,
"Lookup #{l} does not appear to support arbitrary params in URL"
end
end
# --- Google ---
def test_google_result_components
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "Manhattan",
result.address_components_of_type(:sublocality).first['long_name']
end
def test_google_returns_city_when_no_locality_in_result
result = Geocoder.search("no locality").first
assert_equal "Haram", result.city
end
def test_google_city_results_returns_nil_if_no_matching_component_types
result = Geocoder.search("no city data").first
assert_equal nil, result.city
end
def test_google_precision
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "ROOFTOP",
result.precision
end
def test_google_query_url_contains_bounds
lookup = Geocoder::Lookup::Google.new
url = lookup.send(:query_url, Geocoder::Query.new(
"Some Intersection",
:bounds => [[40.0, -120.0], [39.0, -121.0]]
))
assert_match /bounds=40.0+%2C-120.0+%7C39.0+%2C-121.0+/, url
end
# --- Google Premier ---
def test_google_premier_result_components
Geocoder::Configuration.lookup = :google_premier
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "Manhattan",
result.address_components_of_type(:sublocality).first['long_name']
end
def test_google_premier_query_url
Geocoder::Configuration.api_key = ["deadbeef", "gme-test", "test-dev"]
assert_equal "http://maps.googleapis.com/maps/api/geocode/json?address=Madison+Square+Garden%2C+New+York%2C+NY&channel=test-dev&client=gme-test&language=en&sensor=false&signature=doJvJqX7YJzgV9rJ0DnVkTGZqTg=",
Geocoder::Lookup::GooglePremier.new.send(:query_url, Geocoder::Query.new("Madison Square Garden, New York, NY"))
end
# --- Yahoo ---
def test_yahoo_v1_no_results
Geocoder::Configuration.lookup = :yahoo
assert_equal [], Geocoder.search("no results v1")
end
def test_yahoo_v1_result_components
Geocoder::Configuration.lookup = :yahoo
result = Geocoder.search("madison square garden v1").first
assert_equal "10001", result.postal_code
end
def test_yahoo_v1_address_formatting
Geocoder::Configuration.lookup = :yahoo
result = Geocoder.search("madison square garden v1").first
assert_equal "Madison Square Garden, New York, NY 10001, United States", result.address
end
def test_yahoo_v2_no_results
Geocoder::Configuration.lookup = :yahoo
assert_equal [], Geocoder.search("no results")
end
def test_yahoo_v2_result_components
Geocoder::Configuration.lookup = :yahoo
result = Geocoder.search("madison square garden v2").first
assert_equal "10001", result.postal_code
end
def test_yahoo_v2_address_formatting
Geocoder::Configuration.lookup = :yahoo
result = Geocoder.search("madison square garden v2").first
assert_equal "Madison Square Garden, New York, NY 10001, United States", result.address
end
# --- Yandex ---
def test_yandex_with_invalid_key
# keep test output clean: suppress timeout warning
orig = $VERBOSE; $VERBOSE = nil
Geocoder::Configuration.lookup = :yandex
assert_equal [], Geocoder.search("invalid key")
$VERBOSE = orig
end
# --- Geocoder.ca ---
def test_geocoder_ca_result_components
Geocoder::Configuration.lookup = :geocoder_ca
result = Geocoder.search([45.423733, -75.676333]).first
assert_equal "CA", result.country_code
assert_equal "289 Somerset ST E, Ottawa, ON K1N6W1, Canada", result.address
end
# --- FreeGeoIp ---
def test_freegeoip_result_on_ip_address_search
result = Geocoder.search("74.200.247.59").first
assert result.is_a?(Geocoder::Result::Freegeoip)
end
def test_freegeoip_result_components
result = Geocoder.search("74.200.247.59").first
assert_equal "Plano, TX 75093, United States", result.address
end
# --- Bing ---
def test_bing_result_components
Geocoder::Configuration.lookup = :bing
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "Madison Square Garden, NY", result.address
assert_equal "NY", result.state
assert_equal "New York", result.city
end
def test_bing_no_results
Geocoder::Configuration.lookup = :bing
results = Geocoder.search("no results")
assert_equal 0, results.length
end
# --- Nominatim ---
def test_nominatim_result_components
Geocoder::Configuration.lookup = :nominatim
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "10001", result.postal_code
end
def test_nominatim_address_formatting
Geocoder::Configuration.lookup = :nominatim
result = Geocoder.search("Madison Square Garden, New York, NY").first
assert_equal "Madison Square Garden, West 31st Street, Long Island City, New York City, New York, 10001, United States of America",
result.address
end
end