Add Google Map of voters
[selectricity-live] / vendor / plugins / geokit / test / multi_geocoder_test.rb
diff --git a/vendor/plugins/geokit/test/multi_geocoder_test.rb b/vendor/plugins/geokit/test/multi_geocoder_test.rb
new file mode 100644 (file)
index 0000000..57f326c
--- /dev/null
@@ -0,0 +1,44 @@
+require File.join(File.dirname(__FILE__), 'base_geocoder_test')
+
+GeoKit::Geocoders::provider_order=[:google,:yahoo,:us]
+
+class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
+  
+  def setup
+    super
+    @failure = GeoKit::GeoLoc.new
+  end
+  
+  def test_successful_first
+    GeoKit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@success)
+    assert_equal @success, GeoKit::Geocoders::MultiGeocoder.geocode(@address)
+  end
+  
+  def test_failover
+    GeoKit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@failure)
+    GeoKit::Geocoders::YahooGeocoder.expects(:geocode).with(@address).returns(@success)
+    assert_equal @success, GeoKit::Geocoders::MultiGeocoder.geocode(@address)    
+  end
+  
+  def test_double_failover
+    GeoKit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@failure)
+    GeoKit::Geocoders::YahooGeocoder.expects(:geocode).with(@address).returns(@failure)
+    GeoKit::Geocoders::UsGeocoder.expects(:geocode).with(@address).returns(@success)
+    assert_equal @success, GeoKit::Geocoders::MultiGeocoder.geocode(@address)    
+  end
+  
+  def test_failure
+    GeoKit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@failure)
+    GeoKit::Geocoders::YahooGeocoder.expects(:geocode).with(@address).returns(@failure)
+    GeoKit::Geocoders::UsGeocoder.expects(:geocode).with(@address).returns(@failure)
+    assert_equal @failure, GeoKit::Geocoders::MultiGeocoder.geocode(@address)    
+  end
+
+  def test_invalid_provider
+    temp = GeoKit::Geocoders::provider_order
+    GeoKit::Geocoders.provider_order = [:bogus]
+    assert_equal @failure, GeoKit::Geocoders::MultiGeocoder.geocode(@address)    
+    GeoKit::Geocoders.provider_order = temp
+  end
+
+end
\ No newline at end of file

Benjamin Mako Hill || Want to submit a patch?