diff --git a/lib/geocoder/query.rb b/lib/geocoder/query.rb index c8e8c298d07e2d3c7a067712245e8eda417d6aae..79a992337b2af7b269bcca54273d1a96abee3368 100644 --- a/lib/geocoder/query.rb +++ b/lib/geocoder/query.rb @@ -32,7 +32,7 @@ module Geocoder # appropriate to the Query text. # def lookup - if ip_address? + if ip_address? || (options[:ip_lookup] && options[:lookup].nil?) name = options[:ip_lookup] || Configuration.ip_lookup || Geocoder::Lookup.ip_services.first else name = options[:lookup] || Configuration.lookup || Geocoder::Lookup.street_services.first diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 3b63b462dc98e9deeed9c46d2c0e4da00c4039d5..7d3ff7ae95100275de0045c44769bbb5e2968f03 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -49,4 +49,14 @@ class QueryTest < GeocoderTestCase query = Geocoder::Query.new("address", :lookup => :nominatim) assert_equal Geocoder::Lookup::Nominatim, query.lookup.class end + + def test_force_specify_ip_lookup + query = Geocoder::Query.new("address", :ip_lookup => :baidu_ip) + assert !query.ip_address? + assert_equal Geocoder::Lookup::BaiduIp, query.lookup.class + + query = Geocoder::Query.new("address", :ip_lookup => :baidu_ip, :lookup => :bing) + assert !query.ip_address? + assert_equal Geocoder::Lookup::Bing, query.lookup.class + end end