From 3cc4a205ca50da87fbba389ba0f588463a88c008 Mon Sep 17 00:00:00 2001
From: Alex Reisner <alex@alexreisner.com>
Date: Fri, 24 Aug 2012 23:12:53 -0400
Subject: [PATCH] Make all tests pass after adding :test lookup.

---
 lib/geocoder/results/test.rb | 24 +++++-------------------
 test/error_handling_test.rb  |  6 +++---
 test/lookup_test.rb          |  2 +-
 test/result_test.rb          |  2 +-
 test/test_helper.rb          |  4 ++++
 test/test_mode_test.rb       | 19 +++++++++----------
 6 files changed, 23 insertions(+), 34 deletions(-)

diff --git a/lib/geocoder/results/test.rb b/lib/geocoder/results/test.rb
index d029d1a7..fd0c2e0e 100644
--- a/lib/geocoder/results/test.rb
+++ b/lib/geocoder/results/test.rb
@@ -4,26 +4,12 @@ module Geocoder
   module Result
     class Test < Base
 
-      def address
-        @data['address']
+      %w[latitude longitude city state state_code province
+      province_code postal_code country country_code address].each do |attr|
+        define_method(attr) do
+          @data[attr.to_s] || @data[attr.to_sym]
+        end
       end
-
-      def state
-        @data['state']
-      end
-
-      def state_code
-        @data['state_code']
-      end
-
-      def country
-        @data['country']
-      end
-
-      def country_code
-        @data['country_code']
-      end
-
     end
   end
 end
diff --git a/test/error_handling_test.rb b/test/error_handling_test.rb
index ca4cec56..9d84bdfd 100644
--- a/test/error_handling_test.rb
+++ b/test/error_handling_test.rb
@@ -10,7 +10,7 @@ class ErrorHandlingTest < Test::Unit::TestCase
   def test_does_not_choke_on_timeout
     # keep test output clean: suppress timeout warning
     orig = $VERBOSE; $VERBOSE = nil
-    all_lookups.each do |l|
+    all_lookups_except_test.each do |l|
       Geocoder::Configuration.lookup = l
       assert_nothing_raised { Geocoder.search("timeout") }
     end
@@ -19,7 +19,7 @@ class ErrorHandlingTest < Test::Unit::TestCase
 
   def test_always_raise_timeout_error
     Geocoder::Configuration.always_raise = [TimeoutError]
-    all_lookups.each do |l|
+    all_lookups_except_test.each do |l|
       lookup = Geocoder.send(:get_lookup, l)
       assert_raises TimeoutError do
         lookup.send(:results, "timeout")
@@ -29,7 +29,7 @@ class ErrorHandlingTest < Test::Unit::TestCase
 
   def test_always_raise_socket_error
     Geocoder::Configuration.always_raise = [SocketError]
-    all_lookups.each do |l|
+    all_lookups_except_test.each do |l|
       lookup = Geocoder.send(:get_lookup, l)
       assert_raises SocketError do
         lookup.send(:results, "socket_error")
diff --git a/test/lookup_test.rb b/test/lookup_test.rb
index 0b627c71..9cce80b7 100644
--- a/test/lookup_test.rb
+++ b/test/lookup_test.rb
@@ -4,7 +4,7 @@ require 'test_helper'
 class LookupTest < Test::Unit::TestCase
 
   def test_search_returns_empty_array_when_no_results
-    all_lookups.each do |l|
+    all_lookups_except_test.each do |l|
       lookup = Geocoder.send(:get_lookup, l)
       assert_equal [], lookup.send(:results, "no results"),
         "Lookup #{l} does not return empty array when no results."
diff --git a/test/result_test.rb b/test/result_test.rb
index 6fa14207..85bb0f4f 100644
--- a/test/result_test.rb
+++ b/test/result_test.rb
@@ -4,7 +4,7 @@ require 'test_helper'
 class ResultTest < Test::Unit::TestCase
 
   def test_result_has_required_attributes
-    all_lookups.each do |l|
+    all_lookups_except_test.each do |l|
       Geocoder::Configuration.lookup = l
       result = Geocoder.search([45.423733, -75.676333]).first
       assert_result_has_required_attributes(result)
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 864a819c..8ac6b3e0 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -281,6 +281,10 @@ class Test::Unit::TestCase
     Geocoder.valid_lookups
   end
 
+  def all_lookups_except_test
+    Geocoder.valid_lookups - [:test]
+  end
+
   def street_lookups
     all_lookups - [:freegeoip]
   end
diff --git a/test/test_mode_test.rb b/test/test_mode_test.rb
index ec8b4db1..32dcd546 100644
--- a/test/test_mode_test.rb
+++ b/test/test_mode_test.rb
@@ -5,6 +5,7 @@ class TestModeTest < Test::Unit::TestCase
 
   def setup
     @_original_lookup = Geocoder::Configuration.lookup
+    Geocoder::Configuration.lookup = :test
   end
 
   def teardown
@@ -13,17 +14,17 @@ class TestModeTest < Test::Unit::TestCase
   end
 
   def test_search_with_known_stub
-    Geocoder::Configuration.lookup = :test
+    coordinates = [40.7143528, -74.0059731]
     attributes = {
-      'latitude'   => 40.7143528,
-      'longitude'  => -74.0059731,
-      'address'    => 'New York, NY, USA',
-      'state'      => 'New York',
-      'state_code' => 'NY',
-      'country'    => 'United States',
+      'coordinates'  => coordinates,
+      'latitude'     => coordinates[0],
+      'longitude'    => coordinates[1],
+      'address'      => 'New York, NY, USA',
+      'state'        => 'New York',
+      'state_code'   => 'NY',
+      'country'      => 'United States',
       'country_code' => 'US',
     }
-    coordinates = [attributes['latitude'], attributes['longitude']]
 
     Geocoder::Lookup::Test.add_stub("New York, NY", [attributes])
 
@@ -42,8 +43,6 @@ class TestModeTest < Test::Unit::TestCase
   end
 
   def test_search_with_unknown_stub
-    Geocoder::Configuration.lookup = :test
-
     assert_raise ArgumentError do
       Geocoder.search("New York, NY")
     end
-- 
GitLab