diff --git a/lib/geocoder/lookups/maxmind_local.rb b/lib/geocoder/lookups/maxmind_local.rb index 62ed2d643520bf99ba3b236137e48d33071a768f..1045b748f88c04816888965e5e7583eedd7a0ea0 100644 --- a/lib/geocoder/lookups/maxmind_local.rb +++ b/lib/geocoder/lookups/maxmind_local.rb @@ -33,7 +33,9 @@ module Geocoder::Lookup ) end - [GeoIP.new(configuration[:database]).city(query.to_s).to_hash] + result = GeoIP.new(configuration[:database]).city(query.to_s) + + result.nil? ? [] : [result.to_hash] end end end \ No newline at end of file diff --git a/test/maxmind_local_test.rb b/test/maxmind_local_test.rb index cf18b2109bf90879cf846e7313ddfe53fcca1b59..cf72b778f7e8d696979a02e69aba4103df846f74 100644 --- a/test/maxmind_local_test.rb +++ b/test/maxmind_local_test.rb @@ -16,4 +16,12 @@ class MaxmindLocalTest < Test::Unit::TestCase assert_equal result.latitude, 37.41919999999999 assert_equal result.longitude, -122.0574 end + + def test_it_returns_empty_results_when_nothing_is_found + g = Geocoder::Lookup::MaxmindLocal.new + + result = g.search(Geocoder::Query.new('127.0.0.1')) + + assert result.empty?, "Result wasn't empty." + end end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 8b1facaf6b95032af6bdddf7ad5f369fc1263082..9c43f469ec94664f520299a5d88fc1a8c9dca071 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -145,7 +145,11 @@ module Geocoder def results query return [] if query.to_s == "no results" - [{:request=>"8.8.8.8", :ip=>"8.8.8.8", :country_code2=>"US", :country_code3=>"USA", :country_name=>"United States", :continent_code=>"NA", :region_name=>"CA", :city_name=>"Mountain View", :postal_code=>"94043", :latitude=>37.41919999999999, :longitude=>-122.0574, :dma_code=>807, :area_code=>650, :timezone=>"America/Los_Angeles"}] + if query.to_s == '127.0.0.1' + [] + else + [{:request=>"8.8.8.8", :ip=>"8.8.8.8", :country_code2=>"US", :country_code3=>"USA", :country_name=>"United States", :continent_code=>"NA", :region_name=>"CA", :city_name=>"Mountain View", :postal_code=>"94043", :latitude=>37.41919999999999, :longitude=>-122.0574, :dma_code=>807, :area_code=>650, :timezone=>"America/Los_Angeles"}] + end end end