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_inflector.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
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 InflectorTest < Test::Unit::TestCase #:nodoc: all
|
5
5
|
def test_titleize
|
6
|
-
assert_equal
|
7
|
-
assert_equal
|
8
|
-
assert_equal
|
9
|
-
assert_equal
|
6
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar Grove')
|
7
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar grove')
|
8
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('sugar Grove')
|
9
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('sugar grove')
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_titleize_with_unicode
|
@@ -19,7 +19,7 @@ class InflectorTest < Test::Unit::TestCase #:nodoc: all
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_url_escape
|
22
|
-
assert_equal
|
23
|
-
assert_equal
|
22
|
+
assert_equal '%E4%B8%8A%E6%B5%B7%E5%B8%82%E5%BE%90%E6%B1%87%E5%8C%BA%E6%BC%95%E6%BA%AA%E5%8C%97%E8%B7%AF1111%E5%8F%B7', Geokit::Inflector.url_escape("上海市徐汇区漕溪北路1111号")
|
23
|
+
assert_equal '%C3%BC%C3%B6%C3%A4', Geokit::Inflector.url_escape("üöä")
|
24
24
|
end
|
25
25
|
end
|
data/test/test_ipgeocoder.rb
CHANGED
@@ -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 IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
5
|
IP_FAILURE = <<-EOF
|
@@ -31,77 +31,78 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
31
31
|
EOF
|
32
32
|
|
33
33
|
PRIVATE_IPS_TO_TEST = [
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
'10.10.10.10',
|
35
|
+
'172.16.1.3',
|
36
|
+
'172.22.3.42',
|
37
|
+
'172.30.254.164',
|
38
|
+
'192.168.1.1',
|
39
|
+
'0.0.0.0',
|
40
|
+
'127.0.0.1',
|
41
|
+
'240.3.4.5',
|
42
|
+
'225.1.6.55',
|
43
43
|
].freeze
|
44
44
|
|
45
45
|
def setup
|
46
46
|
super
|
47
|
-
@success.provider =
|
47
|
+
@success.provider = 'ip'
|
48
|
+
@base_url = 'http://api.hostip.info/get_html.php'
|
48
49
|
end
|
49
50
|
|
50
51
|
def test_successful_lookup
|
51
52
|
success = MockSuccess.new
|
52
53
|
success.expects(:body).returns(IP_SUCCESS)
|
53
|
-
url = "
|
54
|
+
url = "#{@base_url}?ip=12.215.42.19&position=true"
|
54
55
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(success)
|
55
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
56
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('12.215.42.19')
|
56
57
|
assert_not_nil location
|
57
58
|
assert_equal 41.7696, location.lat
|
58
59
|
assert_equal(-88.4588, location.lng)
|
59
|
-
assert_equal
|
60
|
-
assert_equal
|
61
|
-
assert_equal
|
62
|
-
assert_equal
|
60
|
+
assert_equal 'Sugar Grove', location.city
|
61
|
+
assert_equal 'IL', location.state
|
62
|
+
assert_equal 'US', location.country_code
|
63
|
+
assert_equal 'ip', location.provider
|
63
64
|
assert location.success?
|
64
65
|
end
|
65
66
|
|
66
67
|
def test_unicoded_lookup
|
67
68
|
success = MockSuccess.new
|
68
69
|
success.expects(:body).returns(IP_UNICODED)
|
69
|
-
url = "
|
70
|
+
url = "#{@base_url}?ip=12.215.42.19&position=true"
|
70
71
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(success)
|
71
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
72
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('12.215.42.19')
|
72
73
|
assert_not_nil location
|
73
74
|
assert_equal 57.7167, location.lat
|
74
75
|
assert_equal 12.9167, location.lng
|
75
76
|
assert_equal "Bor\303\245s", location.city
|
76
77
|
assert_nil location.state
|
77
|
-
assert_equal
|
78
|
-
assert_equal
|
78
|
+
assert_equal 'SE', location.country_code
|
79
|
+
assert_equal 'ip', location.provider
|
79
80
|
assert location.success?
|
80
81
|
end
|
81
82
|
|
82
83
|
def test_non_unicoded_lookup
|
83
84
|
success = MockSuccess.new
|
84
85
|
success.stubs(:body).returns(IP_LATIN)
|
85
|
-
success.stubs(:[]).with(
|
86
|
-
url = "
|
86
|
+
success.stubs(:[]).with('content-type').returns('text/plain; charset=iso-8859-1')
|
87
|
+
url = "#{@base_url}?ip=201.23.177.144&position=true"
|
87
88
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(success)
|
88
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
89
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('201.23.177.144')
|
89
90
|
assert_not_nil location
|
90
91
|
assert_equal(-20.8, location.lat)
|
91
92
|
assert_equal(-49.3833, location.lng)
|
92
93
|
assert_equal "São José Do Rio Prêto", location.city
|
93
94
|
assert_nil location.state
|
94
|
-
assert_equal
|
95
|
-
assert_equal
|
95
|
+
assert_equal 'BR', location.country_code
|
96
|
+
assert_equal 'ip', location.provider
|
96
97
|
assert location.success?
|
97
98
|
end
|
98
99
|
|
99
100
|
def test_failed_lookup
|
100
101
|
failure = MockSuccess.new
|
101
102
|
failure.expects(:body).returns(IP_FAILURE)
|
102
|
-
url = "
|
103
|
+
url = "#{@base_url}?ip=128.178.0.0&position=true"
|
103
104
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
104
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
105
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('128.178.0.0')
|
105
106
|
assert_not_nil location
|
106
107
|
assert !location.success?
|
107
108
|
end
|
@@ -117,16 +118,16 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
117
118
|
|
118
119
|
def test_invalid_ip
|
119
120
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).never
|
120
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
121
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('blah')
|
121
122
|
assert_not_nil location
|
122
123
|
assert !location.success?
|
123
124
|
end
|
124
125
|
|
125
126
|
def test_service_unavailable
|
126
127
|
failure = MockFailure.new
|
127
|
-
url = "
|
128
|
+
url = "#{@base_url}?ip=12.215.42.19&position=true"
|
128
129
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
129
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
130
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('12.215.42.19')
|
130
131
|
assert_not_nil location
|
131
132
|
assert !location.success?
|
132
133
|
end
|
data/test/test_latlng.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
|
class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
4
4
|
def setup
|
@@ -9,19 +9,19 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
9
9
|
|
10
10
|
def valid_reverse_geocoding_result
|
11
11
|
location = Geokit::GeoLoc.new(
|
12
|
-
city:
|
13
|
-
country_code:
|
12
|
+
city: 'Essen',
|
13
|
+
country_code: 'DE',
|
14
14
|
lat: 51.4578329,
|
15
15
|
lng: 7.0166848,
|
16
|
-
provider:
|
17
|
-
state:
|
18
|
-
street_address:
|
19
|
-
zip:
|
16
|
+
provider: 'google',
|
17
|
+
state: 'Nordrhein-Westfalen',
|
18
|
+
street_address: 'Porscheplatz 1',
|
19
|
+
zip: '45127',
|
20
20
|
)
|
21
21
|
|
22
|
-
location.full_address =
|
23
|
-
location.precision =
|
24
|
-
location.provider =
|
22
|
+
location.full_address = 'Porscheplatz 1, 45127 Essen, Deutschland'
|
23
|
+
location.precision = 'address'
|
24
|
+
location.provider = 'google'
|
25
25
|
location.success = true
|
26
26
|
location
|
27
27
|
end
|
@@ -201,12 +201,12 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
201
201
|
Geokit::Geocoders::MultiGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
|
202
202
|
res = point.reverse_geocode
|
203
203
|
|
204
|
-
assert_equal
|
205
|
-
assert_equal
|
206
|
-
assert_equal
|
207
|
-
assert_equal
|
204
|
+
assert_equal 'Nordrhein-Westfalen', res.state
|
205
|
+
assert_equal 'Essen', res.city
|
206
|
+
assert_equal '45127', res.zip
|
207
|
+
assert_equal '51.4578329,7.0166848', res.ll # slightly dif from yahoo
|
208
208
|
assert res.is_us? == false
|
209
|
-
assert_equal
|
209
|
+
assert_equal 'Porscheplatz 1, 45127 Essen, Deutschland', res.full_address # slightly different from yahoo
|
210
210
|
end
|
211
211
|
|
212
212
|
def test_reverse_geocoding_using_specific_geocoder
|
@@ -214,13 +214,13 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
214
214
|
Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
|
215
215
|
res = point.reverse_geocode(using: Geokit::Geocoders::GoogleGeocoder)
|
216
216
|
|
217
|
-
assert_equal
|
218
|
-
assert_equal
|
219
|
-
assert_equal
|
220
|
-
assert_equal
|
217
|
+
assert_equal 'Nordrhein-Westfalen', res.state
|
218
|
+
assert_equal 'Essen', res.city
|
219
|
+
assert_equal '45127', res.zip
|
220
|
+
assert_equal '51.4578329,7.0166848', res.ll # slightly dif from yahoo
|
221
221
|
assert res.is_us? == false
|
222
|
-
assert_equal
|
223
|
-
assert_equal
|
222
|
+
assert_equal 'Porscheplatz 1, 45127 Essen, Deutschland', res.full_address # slightly different from yahoo
|
223
|
+
assert_equal 'google', res.provider
|
224
224
|
end
|
225
225
|
|
226
226
|
def test_reverse_geocoding_using_specific_geocoder_short_syntax
|
@@ -228,13 +228,13 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
228
228
|
Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
|
229
229
|
res = point.reverse_geocode(using: :google)
|
230
230
|
|
231
|
-
assert_equal
|
232
|
-
assert_equal
|
233
|
-
assert_equal
|
234
|
-
assert_equal
|
231
|
+
assert_equal 'Nordrhein-Westfalen', res.state
|
232
|
+
assert_equal 'Essen', res.city
|
233
|
+
assert_equal '45127', res.zip
|
234
|
+
assert_equal '51.4578329,7.0166848', res.ll # slightly dif from yahoo
|
235
235
|
assert res.is_us? == false
|
236
|
-
assert_equal
|
237
|
-
assert_equal
|
236
|
+
assert_equal 'Porscheplatz 1, 45127 Essen, Deutschland', res.full_address # slightly different from yahoo
|
237
|
+
assert_equal 'google', res.provider
|
238
238
|
end
|
239
239
|
|
240
240
|
def test_to_dms
|
@@ -256,7 +256,7 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
256
256
|
end
|
257
257
|
|
258
258
|
def test_invalid_units
|
259
|
-
expected_exception_message =
|
259
|
+
expected_exception_message = 'feet is an unsupported unit of length.'
|
260
260
|
|
261
261
|
exception = assert_raise(ArgumentError) do
|
262
262
|
@loc_a.distance_to(@loc_e, units: :feet)
|
data/test/test_map_quest.rb
CHANGED
@@ -1,53 +1,49 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class MapQuestGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
@full_address =
|
7
|
-
@google_full_hash = {street_address:
|
8
|
-
@google_city_hash = {city:
|
6
|
+
@full_address = '100 Spear St Apt. 5, San Francisco, CA, 94105-1522, US'
|
7
|
+
@google_full_hash = {street_address: '100 Spear St Apt. 5', city: 'San Francisco', state: 'CA', zip: '94105', country_code: 'US'}
|
8
|
+
@google_city_hash = {city: 'San Francisco', state: 'CA'}
|
9
9
|
|
10
10
|
@google_full_loc = Geokit::GeoLoc.new(@google_full_hash)
|
11
11
|
@google_city_loc = Geokit::GeoLoc.new(@google_city_hash)
|
12
|
+
|
13
|
+
@key = @keys['map_quest']['key']
|
14
|
+
geocoder_class.key = @key
|
15
|
+
@base_url = 'https://www.mapquestapi.com/geocoding/v1'
|
12
16
|
end
|
13
17
|
|
14
18
|
def test_map_quest_full_address_with_geo_loc
|
15
|
-
|
16
|
-
key = "Fmjtd%7Cluur2d0125%2C2s%3Do5-9a8lhz"
|
17
|
-
Geokit::Geocoders::MapQuestGeocoder.key = key
|
18
|
-
url = "https://www.mapquestapi.com/geocoding/v1/address?key=#{key}&location=100+Spear+St+Apt.+5%2C+San+Francisco%2C+CA%2C+94105%2C+US"
|
19
|
+
url = "#{@base_url}/address?key=#{@key}&location=100+Spear+St+Apt.+5%2C+San+Francisco%2C+CA%2C+94105%2C+US"
|
19
20
|
TestHelper.expects(:last_url).with(url)
|
20
|
-
res =
|
21
|
-
assert_equal
|
22
|
-
assert_equal
|
21
|
+
res = geocode(@google_full_loc, :map_quest_full)
|
22
|
+
assert_equal 'CA', res.state
|
23
|
+
assert_equal 'San Francisco', res.city
|
23
24
|
assert_array_in_delta [37.7921509, -122.394], res.to_a # slightly dif from yahoo
|
24
25
|
assert res.is_us?
|
25
|
-
assert_equal
|
26
|
-
assert_equal
|
27
|
-
end
|
26
|
+
assert_equal '100 Spear St, Apt 5, San Francisco, CA, 94105-1500, US', res.full_address # slightly different from yahoo
|
27
|
+
assert_equal 'map_quest', res.provider
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_reverse_geocode
|
31
|
-
|
32
|
-
|
33
|
-
madrid.lat
|
34
|
-
key = "Fmjtd%7Cluur2d0125%2C2s%3Do5-9a8lhz"
|
35
|
-
Geokit::Geocoders::MapQuestGeocoder.key = key
|
36
|
-
url = "https://www.mapquestapi.com/geocoding/v1/reverse?key=#{key}&location=#{madrid.lat},#{madrid.lng}"
|
31
|
+
madrid = Geokit::GeoLoc.new
|
32
|
+
madrid.lat, madrid.lng = '40.4167413', '-3.7032498'
|
33
|
+
url = "#{@base_url}/reverse?key=#{@key}&location=#{madrid.lat},#{madrid.lng}"
|
37
34
|
TestHelper.expects(:last_url).with(url)
|
38
|
-
res =
|
35
|
+
res = reverse_geocode(madrid.ll, :map_quest_reverse_madrid)
|
39
36
|
|
40
37
|
assert_equal madrid.lat.to_s.slice(1..5), res.lat.to_s.slice(1..5)
|
41
38
|
assert_equal madrid.lng.to_s.slice(1..5), res.lng.to_s.slice(1..5)
|
42
|
-
assert_equal
|
43
|
-
assert_equal
|
39
|
+
assert_equal 'ES', res.country_code
|
40
|
+
assert_equal 'map_quest', res.provider
|
44
41
|
|
45
|
-
assert_equal
|
46
|
-
assert_equal
|
42
|
+
assert_equal 'Madrid', res.city
|
43
|
+
assert_equal 'Comunidad de Madrid', res.state
|
47
44
|
|
48
45
|
assert_equal nil, res.country
|
49
|
-
assert_equal
|
46
|
+
assert_equal '28014', res.zip
|
50
47
|
assert_equal true, res.success
|
51
|
-
end
|
52
48
|
end
|
53
49
|
end
|
@@ -1,44 +1,54 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
2
|
-
|
3
|
-
Geokit::Geocoders::MapboxGeocoder.key = ""
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
2
|
|
5
3
|
class MapboxGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
4
|
def setup
|
5
|
+
geocoder_class.key = ''
|
7
6
|
super
|
8
|
-
@address =
|
7
|
+
@address = '1714 14th Street NW, Washington, DC'
|
9
8
|
@latlng = Geokit::LatLng.new(38.913175, -77.032458)
|
10
|
-
@city =
|
9
|
+
@city = 'Washington, DC'
|
10
|
+
@state = 'District of Columbia'
|
11
|
+
|
12
|
+
geocoder_class.key = @keys['mapbox']['key']
|
11
13
|
end
|
12
14
|
|
13
15
|
def test_forward_geocode
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
16
|
+
res = geocode(@address, :mapbox_forward_geocode)
|
17
|
+
assert_equal 38.913184, res.lat
|
18
|
+
assert_equal(-77.031952, res.lng)
|
19
|
+
assert_equal 'United States', res.country
|
20
|
+
assert_equal 'District of Columbia', res.state
|
21
|
+
assert_equal '20009', res.zip
|
22
|
+
assert_equal 'zip', res.precision
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_reverse_geocode
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
26
|
+
res = reverse_geocode(@latlng, :mapbox_reverse_geocode)
|
27
|
+
assert_equal 'United States', res.country
|
28
|
+
assert_equal 'District of Columbia', res.state
|
29
|
+
assert_equal '20009', res.zip
|
30
|
+
assert_equal 'zip', res.precision
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_city_only
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
res = geocode(@city, :mapbox_forward_geocode_city_only)
|
35
|
+
assert_equal 38.895, res.lat
|
36
|
+
assert_equal(-77.0366, res.lng)
|
37
|
+
assert_equal 'United States', res.country
|
38
|
+
assert_equal 'District of Columbia', res.state
|
39
|
+
assert_equal 'Washington', res.city
|
40
|
+
assert_equal '20004', res.zip
|
41
|
+
assert_equal 'zip', res.precision
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_state_only
|
45
|
+
res = geocode(@state, :mapbox_forward_geocode_state_only)
|
46
|
+
assert_equal 38.89657, res.lat
|
47
|
+
assert_equal(-76.990661, res.lng)
|
48
|
+
assert_equal 'United States', res.country
|
49
|
+
assert_equal 'District of Columbia', res.state
|
50
|
+
assert_nil res.city
|
51
|
+
assert_nil res.zip
|
52
|
+
assert_equal 'state', res.precision
|
43
53
|
end
|
44
54
|
end
|
data/test/test_mappable.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
|
# Test distances from http://www.csgnetwork.com/degreelenllavcalc.html
|
4
4
|
class MappableTest < Test::Unit::TestCase #:nodoc: all
|
@@ -66,6 +66,6 @@ class MappableTest < Test::Unit::TestCase #:nodoc: all
|
|
66
66
|
exception = assert_raise(ArgumentError) do
|
67
67
|
TestMappable.get_units!(units: :feet)
|
68
68
|
end
|
69
|
-
assert_equal
|
69
|
+
assert_equal 'feet is an unsupported unit of length.', exception.message
|
70
70
|
end
|
71
71
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class MaxmindGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
@ip =
|
6
|
+
@ip = '118.210.47.142'
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_ip_from_autralia
|
@@ -13,14 +13,14 @@ class MaxmindGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
13
13
|
location.expects(:city).with(@ip).returns(city)
|
14
14
|
city.stubs(:latitude).returns(-34.9287)
|
15
15
|
city.stubs(:longitude).returns(138.5986)
|
16
|
-
city.stubs(:city_name).returns(
|
17
|
-
city.stubs(:region_name).returns(
|
18
|
-
city.stubs(:postal_code).returns(
|
19
|
-
city.stubs(:country_code2).returns(
|
16
|
+
city.stubs(:city_name).returns('Adelaide')
|
17
|
+
city.stubs(:region_name).returns('Australia')
|
18
|
+
city.stubs(:postal_code).returns('')
|
19
|
+
city.stubs(:country_code2).returns('AU')
|
20
20
|
|
21
|
-
res =
|
22
|
-
assert_equal
|
23
|
-
assert_equal
|
21
|
+
res = geocode(@ip)
|
22
|
+
assert_equal 'Adelaide', res.city
|
23
|
+
assert_equal 'AU', res.country_code
|
24
24
|
assert_equal true, res.success
|
25
25
|
assert res.city
|
26
26
|
end
|
@@ -32,14 +32,14 @@ class MaxmindGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
32
32
|
location.expects(:city).with(@ip).returns(city)
|
33
33
|
city.stubs(:latitude).returns(-34)
|
34
34
|
city.stubs(:longitude).returns(-56)
|
35
|
-
city.stubs(:city_name).returns(
|
36
|
-
city.stubs(:region_name).returns(
|
37
|
-
city.stubs(:postal_code).returns(
|
38
|
-
city.stubs(:country_code2).returns(
|
35
|
+
city.stubs(:city_name).returns('Canelones')
|
36
|
+
city.stubs(:region_name).returns('')
|
37
|
+
city.stubs(:postal_code).returns('')
|
38
|
+
city.stubs(:country_code2).returns('UR')
|
39
39
|
|
40
|
-
res =
|
41
|
-
assert_equal
|
42
|
-
assert_equal
|
40
|
+
res = geocode(@ip)
|
41
|
+
assert_equal 'Canelones', res.city
|
42
|
+
assert_equal 'UR', res.country_code
|
43
43
|
assert_equal true, res.success
|
44
44
|
assert res.city
|
45
45
|
end
|