test/configuration_test.rb in geocoder-1.1.1 vs test/configuration_test.rb in geocoder-1.1.2
- old
+ new
@@ -1,13 +1,103 @@
# encoding: utf-8
require 'test_helper'
class ConfigurationTest < Test::Unit::TestCase
+ def setup
+ Geocoder::Configuration.set_defaults
+ end
def test_exception_raised_on_bad_lookup_config
Geocoder::Configuration.lookup = :stoopid
assert_raises Geocoder::ConfigurationError do
Geocoder.search "something dumb"
end
end
+ # --- class method configuration ---
+ def test_configurated_by_class_method
+ Geocoder::Configuration.units = :mi
+ distance = Geocoder::Calculations.distance_between([0,0], [0,1]).round
+ assert_not_equal 111, distance
+ assert_equal 69, distance
+
+ Geocoder::Configuration.units = :km
+ distance = Geocoder::Calculations.distance_between([0,0], [0,1]).round
+ assert_equal 111, distance
+ assert_not_equal 69, distance
+
+ Geocoder::Configuration.distances = :spherical
+ angle = Geocoder::Calculations.bearing_between([50,-85], [40.750354, -73.993371]).round
+ assert_equal 136, angle
+ assert_not_equal 130, angle
+
+ Geocoder::Configuration.distances = :linear
+ angle = Geocoder::Calculations.bearing_between([50,-85], [40.750354, -73.993371]).round
+ assert_not_equal 136, angle
+ assert_equal 130, angle
+ end
+
+ # --- Geocoder#configure distances configuration ---
+ def test_geocoder_configuration
+ # DSL
+ Geocoder.configure do |config|
+ config.units = :mi
+ config.distances = :linear
+ end
+
+ assert_equal Geocoder::Configuration.units, :mi
+ distance = Geocoder::Calculations.distance_between([0,0], [0,1]).round
+ assert_not_equal 111, distance
+ assert_equal 69, distance
+
+ assert_equal Geocoder::Configuration.distances, :linear
+ angle = Geocoder::Calculations.bearing_between([50,-85], [40.750354, -73.993371]).round
+ assert_not_equal 136, angle
+ assert_equal 130, angle
+
+ # Direct
+ Geocoder.configure.units = :km
+ Geocoder.configure.distances = :spherical
+
+ assert_equal Geocoder::Configuration.units, :km
+ distance = Geocoder::Calculations.distance_between([0,0], [0,1]).round
+ assert_equal 111, distance
+ assert_not_equal 69, distance
+
+ assert_equal Geocoder::Configuration.distances, :spherical
+ angle = Geocoder::Calculations.bearing_between([50,-85], [40.750354, -73.993371]).round
+ assert_equal 136, angle
+ assert_not_equal 130, angle
+ end
+
+ # Geocoder per-model configuration
+ def test_model_configuration
+ Landmark.reverse_geocoded_by :latitude, :longitude, :method => :spherical, :units => :km
+ assert_equal :km, Landmark.geocoder_options[:units]
+ assert_equal :spherical, Landmark.geocoder_options[:method]
+
+ v = Landmark.new(*landmark_params(:msg))
+ v.latitude = 0
+ v.longitude = 0
+ assert_equal 111, v.distance_to([0,1]).round
+ v.latitude = 40.750354
+ v.longitude = -73.993371
+ assert_equal 136, v.bearing_from([50,-85]).round
+ end
+
+ def test_configuration_chain
+ v = Landmark.new(*landmark_params(:msg))
+ v.latitude = 0
+ v.longitude = 0
+
+ # method option > global configuration
+ Geocoder.configure.units = :km
+ assert_equal 69, v.distance_to([0,1], :mi).round
+
+ # per-model configuration > global configuration
+ Landmark.reverse_geocoded_by :latitude, :longitude, :method => :spherical, :units => :mi
+ assert_equal 69, v.distance_to([0,1]).round
+
+ # method option > per-model configuration
+ assert_equal 111, v.distance_to([0,1], :km).round
+ end
end