Sha256: 787328bb858e1d102f6d1325ce2b3cf8c70d4d2fee6886dd0e6872b9bd287651

Contents?: true

Size: 1.48 KB

Versions: 13

Compression:

Stored size: 1.48 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')

module Graticule
  module Geocoder
    class MultiTest < Test::Unit::TestCase

      def setup
        @mock_geocoders = [mock("geocoder 1"), mock("geocoder 2")]
        @mock_geocoders.each {|g| g.stubs(:locate) }
        @geocoder = Multi.new(*@mock_geocoders)
      end

      def test_locate_calls_each_geocoder_and_raises_error
        @mock_geocoders.each do |g|
          g.expects(:locate).with('test').raises(Graticule::AddressError)
        end
        assert_raises(Graticule::AddressError) { @geocoder.locate 'test' }
      end

      def test_locate_returns_first_result_without_calling_others
        result = mock("result")
        @mock_geocoders.first.expects(:locate).returns(result)
        @mock_geocoders.last.expects(:locate).never
        assert_equal result, @geocoder.locate('test')
      end
      
      def test_locate_with_custom_block
        @mock_geocoders.first.expects(:locate).returns(1)
        @mock_geocoders.last.expects(:locate).returns(2)
        @geocoder = Multi.new(*@mock_geocoders) {|r| r == 2 }
        assert_equal 2, @geocoder.locate('test')
      end

      def test_locate_with_custom_block_and_no_match
        @mock_geocoders.first.expects(:locate).returns(1)
        @mock_geocoders.last.expects(:locate).returns(2)
        @geocoder = Multi.new(*@mock_geocoders) {|r| r == 3 }
        assert_raises(Graticule::AddressError) { @geocoder.locate('test') }
      end

    end
  end
end

Version data entries

13 entries across 13 versions & 5 rubygems

Version Path
CodeMonkeySteve-graticule-0.2.11 test/unit/graticule/geocoder/multi_test.rb
CodeMonkeySteve-graticule-0.2.12 test/unit/graticule/geocoder/multi_test.rb
aub-graticule-0.2.11 test/unit/graticule/geocoder/multi_test.rb
collectiveidea-graticule-0.2.12 test/unit/graticule/geocoder/multi_test.rb
pepe-graticule-0.2.11 test/unit/graticule/geocoder/multi_test.rb
aub-graticule-0.3.2 test/unit/graticule/geocoder/multi_test.rb
aub-graticule-0.3.1 test/unit/graticule/geocoder/multi_test.rb
aub-graticule-0.3.0 test/unit/graticule/geocoder/multi_test.rb
graticule-0.2.12 test/unit/graticule/geocoder/multi_test.rb
graticule-0.2.10 test/unit/graticule/geocoder/multi_test.rb
graticule-0.2.9 test/unit/graticule/geocoder/multi_test.rb
graticule-0.2.8 test/unit/graticule/geocoder/multi_test.rb
graticule-0.2.7 test/unit/graticule/geocoder/multi_test.rb