From 34b420450a58302c5ddca1f566f75cae190a3173 Mon Sep 17 00:00:00 2001 From: Christian Ott Date: Sat, 12 Nov 2016 00:54:21 +0100 Subject: [PATCH] Testing Geokit::Geocoders::useragent, Bing geocode fix with options param, reverse_geocode accepts :provider_order param --- lib/geokit/geocoders/bing.rb | 2 +- lib/geokit/multi_geocoder.rb | 6 +++-- test/test_useragent.rb | 46 ++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 test/test_useragent.rb diff --git a/lib/geokit/geocoders/bing.rb b/lib/geokit/geocoders/bing.rb index 59089b42..d7bd4f4e 100644 --- a/lib/geokit/geocoders/bing.rb +++ b/lib/geokit/geocoders/bing.rb @@ -51,7 +51,7 @@ def self.extract_location(xml) full_address: 'Address/FormattedAddress', city: 'Address/Locality', state: 'Address/AdminDistrict', - district: 'Address/AdminDistrict2', + province: 'Address/AdminDistrict2', zip: 'Address/PostalCode', country: 'Address/CountryRegion', lat: 'Point/Latitude', diff --git a/lib/geokit/multi_geocoder.rb b/lib/geokit/multi_geocoder.rb index ad832bd5..bf9ea3e3 100644 --- a/lib/geokit/multi_geocoder.rb +++ b/lib/geokit/multi_geocoder.rb @@ -45,8 +45,10 @@ def self.do_geocode(address, *args) # This method will call one or more geocoders in the order specified in # the configuration until one of the geocoders work, only this time it's # going to try to reverse geocode a geographical point. - def self.do_reverse_geocode(latlng, *_args) - Geokit::Geocoders.provider_order.each do |provider| + def self.do_reverse_geocode(latlng, *args) + provider_order = provider_order_for(latlng, args) + + provider_order.each do |provider| klass = geocoder(provider) begin res = klass.send :reverse_geocode, latlng diff --git a/test/test_useragent.rb b/test/test_useragent.rb new file mode 100644 index 00000000..eaa63363 --- /dev/null +++ b/test/test_useragent.rb @@ -0,0 +1,46 @@ +require 'test/unit' +require 'webmock/test_unit' + +require File.join(File.dirname(__FILE__), '../lib/geokit.rb') + +class UserAgentTest < Test::Unit::TestCase + + NETHTTPDEFAULT = 'Ruby' + NETHTTPDEFAULTHEADERS = {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3'} + TYPHOEUSDEFAULT = 'Typhoeus - https://github.com/typhoeus/typhoeus' + TYPHOEUSDEFAULTHEADERS = {'Expect'=>''} + TESTAGENT = 'MyAgent' + URL = 'http://www.example.com' + + def test_nethttp_useragent_set_to_testagent + stub_request(:get, URL).with(:headers => NETHTTPDEFAULTHEADERS.merge('User-Agent' => TESTAGENT)) + + Geokit::Geocoders::useragent = TESTAGENT + Geokit::NetAdapter::NetHttp.do_get(URL) + assert_requested :get, URL + end + + def test_nethttp_useragent_set_to_default + stub_request(:get, URL).with(:headers => NETHTTPDEFAULTHEADERS.merge('User-Agent' => NETHTTPDEFAULT)) + + Geokit::Geocoders::useragent = nil + Geokit::NetAdapter::NetHttp.do_get(URL) + assert_requested :get, URL + end + + def test_typhoeus_set_to_testagent + stub_request(:get, URL).with(:headers => TYPHOEUSDEFAULTHEADERS.merge('User-Agent' => TESTAGENT)) + + Geokit::Geocoders::useragent = TESTAGENT + Geokit::NetAdapter::Typhoeus.do_get(URL) + assert_requested :get, URL + end + + def test_typhoeus_set_to_default + stub_request(:get, URL).with(:headers => TYPHOEUSDEFAULTHEADERS.merge('User-Agent' => TYPHOEUSDEFAULT)) + + Geokit::Geocoders::useragent = nil + Geokit::NetAdapter::Typhoeus.do_get(URL) + assert_requested :get, URL + end +end