# encoding: utf-8 class IpGeocoderTest < BaseGeocoderTest #:nodoc: all IP_SUCCESS=<<-EOF Belo Horizonte Minas Gerais 0 0 BR Brazil SA -19.916700 -43.933300 BRL R$ 2.2575001717 EOF def setup super @success.provider = "geoPlugin" end def test_successful_lookup success = MockSuccess.new success.expects(:body).returns(IP_SUCCESS) url = 'http://www.geoplugin.net/xml.gp?ip=200.150.38.66' Geokit::Geocoders::GeoPluginGeocoder.expects(:call_geocoder_service).with(url).returns(success) location = Geokit::Geocoders::GeoPluginGeocoder.geocode('200.150.38.66') assert_not_nil location assert_equal -19.916700, location.lat assert_equal -43.933300, location.lng assert_equal "Belo Horizonte", location.city assert_equal "Minas Gerais", location.state assert_equal "BR", location.country_code assert_equal "geoPlugin", location.provider assert location.success? end def test_invalid_ip location = Geokit::Geocoders::GeoPluginGeocoder.geocode("pixrum") assert_not_nil location assert !location.success? end def test_service_unavailable failure = MockFailure.new url = 'http://www.geoplugin.net/xml.gp?ip=10.10.10.10' Geokit::Geocoders::GeoPluginGeocoder.expects(:call_geocoder_service).with(url).returns(failure) location = Geokit::Geocoders::GeoPluginGeocoder.geocode("10.10.10.10") assert_not_nil location assert !location.success? end end