geokit 1.10.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.hound.yml +2 -0
- data/.rubocop.yml +358 -0
- data/.travis.yml +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile +3 -3
- data/README.markdown +19 -4
- data/Rakefile +11 -16
- data/fixtures/keys.yml +9 -0
- data/fixtures/vcr_cassettes/google_postal_town.yml +117 -0
- data/fixtures/vcr_cassettes/mapbox_forward_geocode.yml +30 -30
- data/fixtures/vcr_cassettes/mapbox_forward_geocode_city_only.yml +25 -25
- data/fixtures/vcr_cassettes/mapbox_forward_geocode_state_only.yml +71 -0
- data/fixtures/vcr_cassettes/mapbox_reverse_geocode.yml +25 -25
- data/fixtures/vcr_cassettes/test_component_filtering_off.yml +390 -0
- data/fixtures/vcr_cassettes/test_component_filtering_on.yml +164 -0
- data/fixtures/vcr_cassettes/test_component_filtering_on_without_filter.yml +404 -0
- data/geokit.gemspec +24 -23
- data/lib/geokit.rb +7 -7
- data/lib/geokit/core_ext.rb +1 -1
- data/lib/geokit/geo_loc.rb +25 -19
- data/lib/geokit/geocoders.rb +21 -30
- data/lib/geokit/geocoders/bing.rb +5 -4
- data/lib/geokit/geocoders/ca_geocoder.rb +10 -11
- data/lib/geokit/geocoders/fcc.rb +9 -9
- data/lib/geokit/geocoders/free_geo_ip.rb +8 -8
- data/lib/geokit/geocoders/geo_plugin.rb +7 -7
- data/lib/geokit/geocoders/geobytes.rb +10 -10
- data/lib/geokit/geocoders/geocodio.rb +14 -14
- data/lib/geokit/geocoders/geonames.rb +12 -12
- data/lib/geokit/geocoders/google.rb +89 -61
- data/lib/geokit/geocoders/ip.rb +9 -14
- data/lib/geokit/geocoders/mapbox.rb +30 -30
- data/lib/geokit/geocoders/mapquest.rb +12 -12
- data/lib/geokit/geocoders/maxmind.rb +1 -1
- data/lib/geokit/geocoders/opencage.rb +19 -19
- data/lib/geokit/geocoders/openstreetmap.rb +21 -19
- data/lib/geokit/geocoders/ripe.rb +7 -7
- data/lib/geokit/geocoders/us_geocoder.rb +5 -5
- data/lib/geokit/geocoders/yahoo.rb +46 -46
- data/lib/geokit/geocoders/yandex.rb +18 -17
- data/lib/geokit/inflectors.rb +5 -5
- data/lib/geokit/lat_lng.rb +5 -4
- data/lib/geokit/multi_geocoder.rb +4 -2
- data/lib/geokit/net_adapter/net_http.rb +3 -2
- data/lib/geokit/net_adapter/typhoeus.rb +2 -1
- data/lib/geokit/version.rb +1 -1
- data/test/coverage_loader.rb +25 -0
- data/test/helper.rb +18 -87
- data/test/test_base_geocoder.rb +44 -11
- data/test/test_bing_geocoder.rb +40 -48
- data/test/test_bounds.rb +1 -1
- data/test/test_ca_geocoder.rb +15 -15
- data/test/test_fcc_geocoder.rb +8 -9
- data/test/test_free_geo_ip_geocoder.rb +8 -10
- data/test/test_geo_plugin_geocoder.rb +21 -22
- data/test/test_geobytes_geocoder.rb +9 -11
- data/test/test_geocodio_geocoder.rb +12 -14
- data/test/test_geoloc.rb +48 -49
- data/test/test_geonames_geocoder.rb +19 -23
- data/test/test_google_geocoder.rb +197 -189
- data/test/test_inflector.rb +7 -7
- data/test/test_ipgeocoder.rb +32 -31
- data/test/test_latlng.rb +28 -28
- data/test/test_map_quest.rb +23 -27
- data/test/test_mapbox_geocoder.rb +38 -28
- data/test/test_mappable.rb +2 -2
- data/test/test_maxmind_geocoder.rb +16 -16
- data/test/test_multi_geocoder.rb +5 -5
- data/test/test_multi_ip_geocoder.rb +3 -3
- data/test/test_net_adapter.rb +4 -4
- data/test/test_opencage_geocoder.rb +58 -67
- data/test/test_openstreetmap_geocoder.rb +67 -65
- data/test/test_polygon.rb +4 -22
- data/test/test_ripe_geocoder.rb +21 -26
- data/test/test_us_geocoder.rb +21 -21
- data/test/test_useragent.rb +46 -0
- data/test/test_yahoo_geocoder.rb +35 -47
- data/test/test_yandex_geocoder.rb +29 -27
- data/test/vcr_loader.rb +18 -0
- metadata +20 -6
data/test/test_multi_geocoder.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
Geokit::Geocoders.provider_order = [:google, :bing, :us]
|
4
4
|
|
@@ -44,9 +44,9 @@ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
44
44
|
t1, t2 = Geokit::Geocoders.provider_order, Geokit::Geocoders.ip_provider_order # will need to reset after
|
45
45
|
Geokit::Geocoders.provider_order = [:google]
|
46
46
|
Geokit::Geocoders.ip_provider_order = [:geo_plugin]
|
47
|
-
Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(
|
47
|
+
Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with('').returns(@failure)
|
48
48
|
Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).never
|
49
|
-
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(
|
49
|
+
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode('')
|
50
50
|
Geokit::Geocoders.provider_order, Geokit::Geocoders.ip_provider_order = t1, t2 # reset to orig values
|
51
51
|
end
|
52
52
|
|
@@ -87,8 +87,8 @@ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
87
87
|
def test_reverse_geocode_with_blank_latlng
|
88
88
|
t1 = Geokit::Geocoders.provider_order # will need to reset after
|
89
89
|
Geokit::Geocoders.provider_order = [:google]
|
90
|
-
Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(
|
91
|
-
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(
|
90
|
+
Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with('').returns(@failure)
|
91
|
+
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode('')
|
92
92
|
Geokit::Geocoders.provider_order = t1 # reset to orig values
|
93
93
|
end
|
94
94
|
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
Geokit::Geocoders.ip_provider_order = [:geo_plugin, :ip]
|
4
4
|
|
5
5
|
class MultiIpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
6
|
def setup
|
7
|
-
@ip_address =
|
8
|
-
@success = Geokit::GeoLoc.new({city:
|
7
|
+
@ip_address = '10.10.10.10'
|
8
|
+
@success = Geokit::GeoLoc.new({city: 'SAN FRANCISCO', state: 'CA', country_code: 'US', lat: 37.7742, lng: -122.417068})
|
9
9
|
@success.success = true
|
10
10
|
@failure = Geokit::GeoLoc.new
|
11
11
|
end
|
data/test/test_net_adapter.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
# Base class for testing geocoders.
|
4
4
|
class NetAdapterTest < Test::Unit::TestCase #:nodoc: all
|
@@ -23,12 +23,12 @@ class NetAdapterTest < Test::Unit::TestCase #:nodoc: all
|
|
23
23
|
end
|
24
24
|
|
25
25
|
RESULT = '{"name":"json"}'
|
26
|
-
RESULT_HASH = {
|
26
|
+
RESULT_HASH = {'name' => 'json'}
|
27
27
|
|
28
28
|
# Defines common test fixtures.
|
29
29
|
def setup
|
30
|
-
@url =
|
31
|
-
@address =
|
30
|
+
@url = 'http://www.cacheme.com'
|
31
|
+
@address = 'San Francisco, CA'
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_cache
|
@@ -1,106 +1,97 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__),
|
2
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
3
3
|
|
4
4
|
class OpencageGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
5
|
def setup
|
6
6
|
super
|
7
|
-
@opencage_full_hash = {street_address:
|
8
|
-
@opencage_city_hash = {city:
|
7
|
+
@opencage_full_hash = {street_address: '100 Spear St', city: 'San Francisco', state: 'CA', zip: '94105', country_code: 'US'}
|
8
|
+
@opencage_city_hash = {city: 'San Francisco', state: 'CA'}
|
9
9
|
@opencage_full_loc = Geokit::GeoLoc.new(@opencage_full_hash)
|
10
10
|
@opencage_city_loc = Geokit::GeoLoc.new(@opencage_city_hash)
|
11
11
|
|
12
12
|
# Note: This is not a real key because having real keys on github
|
13
13
|
# is not advised
|
14
|
-
key =
|
15
|
-
|
14
|
+
key = 'someopencageapikey'
|
15
|
+
geocoder_class.key = key
|
16
|
+
@base_url = 'https://api.opencagedata.com/geocode/v1/json'
|
16
17
|
end
|
17
18
|
|
18
19
|
def test_opencage_full_address
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
assert_equal "opencage", res.provider
|
30
|
-
end
|
20
|
+
url = "#{@base_url}?key=someopencageapikey&query=100+Spear+St%2C+San+Francisco%2C+CA%2C+94105%2C+US&no_annotations=1"
|
21
|
+
TestHelper.expects(:last_url).with(url)
|
22
|
+
res = geocode(@opencage_full_loc, :opencage_full)
|
23
|
+
|
24
|
+
assert_equal 'California', res.state
|
25
|
+
assert_equal 'San Francisco', res.city
|
26
|
+
assert_array_in_delta [37.7921509, -122.394], res.to_a
|
27
|
+
assert res.is_us?
|
28
|
+
assert_equal 'Spear Street 100, San Francisco, California, 94103, US', res.full_address
|
29
|
+
assert_equal 'opencage', res.provider
|
31
30
|
end
|
32
31
|
|
33
32
|
def test_opencage_city
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
assert_equal "opencage", res.provider
|
45
|
-
end
|
33
|
+
url = "#{@base_url}?key=someopencageapikey&query=San+Francisco%2C+CA&no_annotations=1"
|
34
|
+
TestHelper.expects(:last_url).with(url)
|
35
|
+
res = geocode(@opencage_city_loc, :opencage_city)
|
36
|
+
|
37
|
+
assert_equal 'California', res.state
|
38
|
+
assert_equal 'San Francisco', res.city
|
39
|
+
assert_array_in_delta [37.7792768, -122.4192704], res.to_a
|
40
|
+
assert res.is_us?
|
41
|
+
assert_equal 'San Francisco, California, US', res.full_address
|
42
|
+
assert_equal 'opencage', res.provider
|
46
43
|
end
|
47
44
|
|
48
45
|
def test_opencage_reverse
|
49
|
-
|
50
|
-
|
51
|
-
location.lat, location.lng = "40.4167413", "-3.7032498" # Madrid
|
46
|
+
location = Geokit::GeoLoc.new
|
47
|
+
location.lat, location.lng = '40.4167413', '-3.7032498' # Madrid
|
52
48
|
|
53
|
-
|
54
|
-
|
55
|
-
|
49
|
+
url = "#{@base_url}?key=someopencageapikey&query=40.4167413%2C-3.7032498&no_annotations=1"
|
50
|
+
TestHelper.expects(:last_url).with(url)
|
51
|
+
res = geocode(location.ll, :opencage_reverse_madrid)
|
56
52
|
|
57
|
-
|
58
|
-
|
53
|
+
assert_equal 'ES', res.country_code
|
54
|
+
assert_equal 'opencage', res.provider
|
59
55
|
|
60
|
-
|
61
|
-
|
56
|
+
assert_equal 'Madrid', res.city
|
57
|
+
assert_equal 'Community of Madrid', res.state
|
62
58
|
|
63
|
-
|
64
|
-
|
59
|
+
assert_equal 'Spain', res.country
|
60
|
+
assert_equal true, res.success
|
65
61
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
62
|
+
assert_equal "Calle De Zurbano, Chamberí, Madrid, Community of Madrid, 28036, ES", res.full_address
|
63
|
+
assert_equal 28_036, res.zip
|
64
|
+
assert_equal 'Calle De Zurbano', res.street_address
|
70
65
|
end
|
71
66
|
|
72
67
|
def test_opencage_reverse2
|
73
|
-
|
74
|
-
|
75
|
-
location.lat, location.lng = "41.3527177", "21.5497808"
|
68
|
+
location = Geokit::GeoLoc.new
|
69
|
+
location.lat, location.lng = '41.3527177', '21.5497808'
|
76
70
|
|
77
|
-
|
78
|
-
|
79
|
-
|
71
|
+
url = "#{@base_url}?key=someopencageapikey&query=41.3527177%2C21.5497808&no_annotations=1"
|
72
|
+
TestHelper.expects(:last_url).with(url)
|
73
|
+
res = geocode(location.ll, :opencage_reverse_prilep)
|
80
74
|
|
81
|
-
|
82
|
-
|
75
|
+
assert_equal 'MK', res.country_code
|
76
|
+
assert_equal 'opencage', res.provider
|
83
77
|
|
84
|
-
|
85
|
-
|
78
|
+
assert_equal 'Prilep', res.city
|
79
|
+
assert_equal 'Pelagonia Region', res.state
|
86
80
|
|
87
|
-
|
88
|
-
|
89
|
-
|
81
|
+
assert_equal 'Macedonia', res.country
|
82
|
+
assert_equal 10, res.precision
|
83
|
+
assert_equal true, res.success
|
90
84
|
|
91
|
-
|
92
|
-
|
93
|
-
end
|
85
|
+
assert_equal "Прилепски Бранители, Prilep, Pelagonia Region, MK", res.full_address
|
86
|
+
assert_equal "Прилепски Бранители", res.street_address
|
94
87
|
end
|
95
88
|
|
96
89
|
# check if the results are in Spanish if &language=es
|
97
90
|
def test_language_response
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
language_result = Geokit::Geocoders::OpencageGeocoder.geocode("London", language: "es")
|
91
|
+
url = "#{@base_url}?key=someopencageapikey&language=es&query=London&no_annotations=1"
|
92
|
+
TestHelper.expects(:last_url).with(url)
|
93
|
+
language_result = geocode('London', :opencage_language_response_es, language: 'es')
|
102
94
|
|
103
|
-
|
104
|
-
end
|
95
|
+
assert_equal 'Londres', language_result.city
|
105
96
|
end
|
106
97
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__),
|
2
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
3
3
|
|
4
4
|
class OSMGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
5
|
OSM_FULL = <<-EOF.strip
|
@@ -20,95 +20,97 @@ class OSMGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
20
20
|
|
21
21
|
def setup
|
22
22
|
super
|
23
|
-
@osm_full_hash = {street_address:
|
24
|
-
@osm_city_hash = {city:
|
23
|
+
@osm_full_hash = {street_address: '100 Spear St', city: 'San Francisco', state: 'CA', zip: '94105', country_code: 'US'}
|
24
|
+
@osm_city_hash = {city: 'San Francisco', state: 'CA'}
|
25
25
|
@osm_full_loc = Geokit::GeoLoc.new(@osm_full_hash)
|
26
26
|
@osm_city_loc = Geokit::GeoLoc.new(@osm_city_hash)
|
27
|
+
@base_url = 'http://nominatim.openstreetmap.org/search'
|
28
|
+
@reverse_url = 'http://nominatim.openstreetmap.org/reverse'
|
27
29
|
end
|
28
30
|
|
29
31
|
# the testing methods themselves
|
30
32
|
def test_osm_full_address
|
31
33
|
response = MockSuccess.new
|
32
34
|
response.expects(:body).returns(OSM_FULL)
|
33
|
-
url = "
|
34
|
-
|
35
|
-
do_full_address_assertions(
|
35
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@full_address_short_zip)}"
|
36
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
37
|
+
do_full_address_assertions(geocode(@full_address_short_zip))
|
36
38
|
end
|
37
39
|
|
38
40
|
def test_osm_full_address_accuracy
|
39
41
|
response = MockSuccess.new
|
40
42
|
response.expects(:body).returns(OSM_FULL)
|
41
|
-
url = "
|
42
|
-
|
43
|
-
res =
|
44
|
-
assert_equal
|
43
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@full_address_short_zip)}"
|
44
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
45
|
+
res = geocode(@full_address_short_zip)
|
46
|
+
assert_equal 'house', res.accuracy
|
45
47
|
end
|
46
48
|
|
47
49
|
def test_osm_full_address_with_geo_loc
|
48
50
|
response = MockSuccess.new
|
49
51
|
response.expects(:body).returns(OSM_FULL)
|
50
|
-
url = "
|
51
|
-
|
52
|
-
do_full_address_assertions(
|
52
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@full_address_short_zip)}"
|
53
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
54
|
+
do_full_address_assertions(geocode(@osm_full_loc))
|
53
55
|
end
|
54
56
|
|
55
57
|
def test_osm_city
|
56
58
|
response = MockSuccess.new
|
57
59
|
response.expects(:body).returns(OSM_CITY)
|
58
|
-
url = "
|
59
|
-
|
60
|
-
do_city_assertions(
|
60
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@address)}"
|
61
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
62
|
+
do_city_assertions(geocode(@address))
|
61
63
|
end
|
62
64
|
|
63
65
|
def test_osm_city_with_accept_language
|
64
66
|
response = MockSuccess.new
|
65
67
|
response.expects(:body).returns(OSM_CITY)
|
66
|
-
url = "
|
67
|
-
|
68
|
-
do_city_assertions(
|
68
|
+
url = "#{@base_url}?format=json&polygon=0&accept-language=pt-br&addressdetails=1&q=#{escape(@address)}"
|
69
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
70
|
+
do_city_assertions(geocode(@address, {:'accept-language' => 'pt-br'}))
|
69
71
|
end
|
70
72
|
|
71
73
|
def test_osm_city_accuracy
|
72
74
|
response = MockSuccess.new
|
73
75
|
response.expects(:body).returns(OSM_CITY)
|
74
|
-
url = "
|
75
|
-
|
76
|
-
res =
|
77
|
-
assert_equal
|
76
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@address)}"
|
77
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
78
|
+
res = geocode(@address)
|
79
|
+
assert_equal 'county', res.accuracy
|
78
80
|
end
|
79
81
|
|
80
82
|
def test_osm_city_with_geo_loc
|
81
83
|
response = MockSuccess.new
|
82
84
|
response.expects(:body).returns(OSM_CITY)
|
83
|
-
url = "
|
84
|
-
|
85
|
-
do_city_assertions(
|
85
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@address)}"
|
86
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
87
|
+
do_city_assertions(geocode(@osm_city_loc))
|
86
88
|
end
|
87
89
|
|
88
90
|
def test_reverse_geo_coding
|
89
91
|
response = MockSuccess.new
|
90
92
|
response.expects(:body).returns(OSM_REVERSE_PRILEP)
|
91
93
|
prilep = Geokit::GeoLoc.new
|
92
|
-
prilep.lat, prilep.lng =
|
93
|
-
url = "
|
94
|
-
|
95
|
-
res =
|
94
|
+
prilep.lat, prilep.lng = '41.3527177', '21.5497808'
|
95
|
+
url = "#{@reverse_url}?format=json&addressdetails=1&lat=#{prilep.lat}&lon=#{prilep.lng}"
|
96
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
97
|
+
res = reverse_geocode(prilep.ll)
|
96
98
|
|
97
99
|
# OSM does not return the exast lat lng in response
|
98
100
|
# assert_equal prilep.lat.to_s.slice(1..5), res.lat.to_s.slice(1..5)
|
99
101
|
# assert_equal prilep.lng.to_s.slice(1..5), res.lng.to_s.slice(1..5)
|
100
|
-
assert_equal
|
101
|
-
assert_equal
|
102
|
+
assert_equal 'MK', res.country_code
|
103
|
+
assert_equal 'osm', res.provider
|
102
104
|
|
103
|
-
assert_equal
|
105
|
+
assert_equal 'Prilep', res.city
|
104
106
|
assert_nil res.state
|
105
107
|
|
106
|
-
assert_equal
|
108
|
+
assert_equal 'Macedonia', res.country
|
107
109
|
assert_nil res.precision
|
108
110
|
assert_equal true, res.success
|
109
111
|
|
110
|
-
assert_equal
|
111
|
-
assert_equal
|
112
|
+
assert_equal 'Marksova, Prilep, MK', res.full_address
|
113
|
+
assert_equal 'Marksova', res.street_address
|
112
114
|
end
|
113
115
|
|
114
116
|
def test_reverse_geo_code
|
@@ -116,23 +118,23 @@ class OSMGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
116
118
|
response.expects(:body).returns(OSM_REVERSE_MADRID)
|
117
119
|
location = Geokit::GeoLoc.new
|
118
120
|
# Madrid
|
119
|
-
location.lat, location.lng =
|
120
|
-
url = "
|
121
|
-
|
122
|
-
res =
|
121
|
+
location.lat, location.lng = '40.4167413', '-3.7032498'
|
122
|
+
url = "#{@reverse_url}?format=json&addressdetails=1&lat=#{location.lat}&lon=#{location.lng}"
|
123
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
124
|
+
res = reverse_geocode(location.ll)
|
123
125
|
|
124
|
-
assert_equal
|
125
|
-
assert_equal
|
126
|
+
assert_equal 'ES', res.country_code
|
127
|
+
assert_equal 'osm', res.provider
|
126
128
|
|
127
|
-
assert_equal
|
128
|
-
assert_equal
|
129
|
+
assert_equal 'Madrid', res.city
|
130
|
+
assert_equal 'Madrid', res.state
|
129
131
|
|
130
|
-
assert_equal
|
132
|
+
assert_equal 'Spain', res.country
|
131
133
|
assert_equal true, res.success
|
132
134
|
|
133
|
-
assert_equal
|
134
|
-
assert_equal
|
135
|
-
assert_equal
|
135
|
+
assert_equal 'Calle Del Doctor Tolosa Latour, Usera, Madrid, Madrid, 28026, ES', res.full_address
|
136
|
+
assert_equal '28026', res.zip
|
137
|
+
assert_equal 'Calle Del Doctor Tolosa Latour', res.street_address
|
136
138
|
end
|
137
139
|
|
138
140
|
def test_reverse_geo_code_with_accept_language
|
@@ -140,38 +142,38 @@ class OSMGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
140
142
|
response.expects(:body).returns(OSM_REVERSE_MADRID)
|
141
143
|
location = Geokit::GeoLoc.new
|
142
144
|
# Madrid
|
143
|
-
location.lat, location.lng =
|
144
|
-
url = "
|
145
|
-
|
146
|
-
|
145
|
+
location.lat, location.lng = '40.4167413', '-3.7032498'
|
146
|
+
url = "#{@reverse_url}?format=json&addressdetails=1&lat=#{location.lat}&lon=#{location.lng}&accept-language=pt-br"
|
147
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
148
|
+
reverse_geocode(location.ll, {:'accept-language' => 'pt-br'})
|
147
149
|
end
|
148
150
|
|
149
151
|
def test_service_unavailable
|
150
152
|
response = MockFailure.new
|
151
|
-
url = "
|
152
|
-
|
153
|
-
assert !
|
153
|
+
url = "#{@base_url}?format=json&polygon=0&addressdetails=1&q=#{escape(@address)}"
|
154
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
155
|
+
assert !geocode(@osm_city_loc).success
|
154
156
|
end
|
155
157
|
|
156
158
|
private
|
157
159
|
|
158
160
|
# next two methods do the assertions for both address-level and city-level lookups
|
159
161
|
def do_full_address_assertions(res)
|
160
|
-
assert_equal
|
161
|
-
assert_equal
|
162
|
-
assert_equal
|
162
|
+
assert_equal 'California', res.state
|
163
|
+
assert_equal 'San Francisco', res.city
|
164
|
+
assert_equal '37.792391,-122.394024', res.ll
|
163
165
|
assert res.is_us?
|
164
|
-
assert_equal
|
165
|
-
assert_equal
|
166
|
+
assert_equal 'Spear Street 100, San Francisco, California, 94105, US', res.full_address
|
167
|
+
assert_equal 'osm', res.provider
|
166
168
|
end
|
167
169
|
|
168
170
|
def do_city_assertions(res)
|
169
|
-
assert_equal
|
170
|
-
assert_equal
|
171
|
-
assert_equal
|
171
|
+
assert_equal 'California', res.state
|
172
|
+
assert_equal 'San Francisco', res.city
|
173
|
+
assert_equal '37.7340974,-122.3912596', res.ll
|
172
174
|
assert res.is_us?
|
173
|
-
assert_equal
|
175
|
+
assert_equal 'San Francisco, California, US', res.full_address
|
174
176
|
assert_nil res.street_address
|
175
|
-
assert_equal
|
177
|
+
assert_equal 'osm', res.provider
|
176
178
|
end
|
177
179
|
end
|