geokit 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|