From 6a0c249071bb7673808f48aa4835b19abc6376dc Mon Sep 17 00:00:00 2001
From: Thu Trang Pham <thuutrangpham@gmail.com>
Date: Thu, 29 Jan 2015 21:48:22 -0500
Subject: [PATCH] Force specfify ip_lookup on search, even when ip_address?
 fails

---
 lib/geocoder/query.rb   |  2 +-
 test/unit/query_test.rb | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/lib/geocoder/query.rb b/lib/geocoder/query.rb
index c8e8c298..79a99233 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 3b63b462..7d3ff7ae 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
-- 
GitLab