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_bounds.rb
CHANGED
data/test/test_ca_geocoder.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
2
|
-
|
3
|
-
Geokit::Geocoders::CaGeocoder.key = "SOMEKEYVALUE"
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
2
|
|
5
3
|
class CaGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
4
|
CA_SUCCESS = <<-EOF
|
@@ -12,32 +10,34 @@ class CaGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
12
10
|
EOF
|
13
11
|
|
14
12
|
def setup
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
geocoder_class.key = 'SOMEKEYVALUE'
|
14
|
+
@ca_full_hash = { street_address: '2105 West 32nd Avenue',
|
15
|
+
city: 'Vancouver', state: 'BC' }
|
16
|
+
@ca_full_txt = '2105 West 32nd Avenue Vancouver BC'
|
18
17
|
end
|
19
18
|
|
20
19
|
def test_geocoder_with_geo_loc_with_account
|
21
20
|
response = MockSuccess.new
|
22
21
|
response.expects(:body).returns(CA_SUCCESS)
|
23
|
-
url =
|
24
|
-
|
25
|
-
verify(
|
22
|
+
url = 'http://geocoder.ca/?locate=2105+West+32nd+Avenue+Vancouver+BC&auth=SOMEKEYVALUE&geoit=xml'
|
23
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
24
|
+
verify(geocode(@ca_full_txt))
|
26
25
|
end
|
27
26
|
|
28
27
|
def test_service_unavailable
|
29
28
|
response = MockFailure.new
|
30
|
-
url =
|
31
|
-
|
32
|
-
assert !
|
29
|
+
url = 'http://geocoder.ca/?locate=2105+West+32nd+Avenue+Vancouver+BC&auth=SOMEKEYVALUE&geoit=xml'
|
30
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(response)
|
31
|
+
assert !geocode(@ca_full_txt).success
|
33
32
|
end
|
34
33
|
|
35
34
|
private
|
36
35
|
|
37
36
|
def verify(location)
|
38
|
-
assert_equal
|
39
|
-
assert_equal
|
40
|
-
assert_equal
|
37
|
+
assert_equal 'BC', location.state
|
38
|
+
assert_equal 'BC', location.province # alias
|
39
|
+
assert_equal 'Vancouver', location.city
|
40
|
+
assert_equal '49.243086,-123.153684', location.ll
|
41
41
|
assert !location.is_us?
|
42
42
|
end
|
43
43
|
end
|
data/test/test_fcc_geocoder.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class FCCGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
4
|
def setup
|
5
5
|
super
|
6
6
|
@la = Geokit::LatLng.new(34.05, -118.25)
|
7
|
+
@base_url = 'https://data.fcc.gov/api/block/find'
|
7
8
|
end
|
8
9
|
|
9
10
|
def assert_url(expected_url)
|
10
|
-
assert_equal expected_url, TestHelper.
|
11
|
+
assert_equal expected_url, TestHelper.last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
|
11
12
|
end
|
12
13
|
|
13
14
|
def test_fcc_reverse_geocode
|
14
|
-
|
15
|
-
|
16
|
-
res = Geokit::Geocoders::FCCGeocoder.reverse_geocode(@la)
|
15
|
+
url = "#{@base_url}?format=json&latitude=34.05&longitude=-118.25"
|
16
|
+
res = reverse_geocode(@la, :fcc_reverse_geocode)
|
17
17
|
assert_url url
|
18
|
-
assert_equal res.country_code,
|
19
|
-
assert_equal res.state,
|
20
|
-
assert_equal res.district,
|
21
|
-
end
|
18
|
+
assert_equal res.country_code, 'US'
|
19
|
+
assert_equal res.state, 'CA'
|
20
|
+
assert_equal res.district, 'Los Angeles'
|
22
21
|
end
|
23
22
|
end
|
@@ -1,23 +1,21 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class FreeGeoIpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
@ip =
|
6
|
+
@ip = '74.125.237.209'
|
7
7
|
end
|
8
8
|
|
9
9
|
def assert_url(expected_url)
|
10
|
-
assert_equal expected_url, TestHelper.
|
10
|
+
assert_equal expected_url, TestHelper.last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_free_geo_ip_geocode
|
14
|
-
|
15
|
-
|
16
|
-
res = Geokit::Geocoders::FreeGeoIpGeocoder.geocode(@ip)
|
14
|
+
url = "http://freegeoip.net/xml/#{@ip}"
|
15
|
+
res = geocode(@ip, :free_geo_ip_geocode)
|
17
16
|
assert_url url
|
18
|
-
assert_equal res.city,
|
19
|
-
assert_equal res.state,
|
20
|
-
assert_equal res.country_code,
|
21
|
-
end
|
17
|
+
assert_equal res.city, 'Mountain View'
|
18
|
+
assert_equal res.state, 'CA'
|
19
|
+
assert_equal res.country_code, 'US'
|
22
20
|
end
|
23
21
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class GeoPluginGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
4
|
IP_SUCCESS = <<-EOF
|
@@ -21,52 +21,51 @@ class GeoPluginGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
21
21
|
|
22
22
|
def setup
|
23
23
|
super
|
24
|
-
@ip =
|
25
|
-
@success.provider =
|
24
|
+
@ip = '74.125.237.209'
|
25
|
+
@success.provider = 'geo_plugin'
|
26
|
+
@base_url = 'http://www.geoplugin.net/xml.gp'
|
26
27
|
end
|
27
28
|
|
28
29
|
def assert_url(expected_url)
|
29
|
-
assert_equal expected_url, TestHelper.
|
30
|
+
assert_equal expected_url, TestHelper.last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
|
30
31
|
end
|
31
32
|
|
32
33
|
def test_geo_plugin_geocode
|
33
|
-
|
34
|
-
|
35
|
-
res = Geokit::Geocoders::GeoPluginGeocoder.geocode(@ip)
|
34
|
+
url = "#{@base_url}?ip=#{@ip}"
|
35
|
+
res = geocode(@ip, :geo_plugin_geocode)
|
36
36
|
assert_url url
|
37
|
-
assert_equal res.city,
|
38
|
-
assert_equal res.state,
|
39
|
-
assert_equal res.country_code,
|
40
|
-
end
|
37
|
+
assert_equal res.city, 'Mountain View'
|
38
|
+
assert_equal res.state, 'CA'
|
39
|
+
assert_equal res.country_code, 'US'
|
41
40
|
end
|
42
41
|
|
43
42
|
def test_successful_lookup
|
44
43
|
success = MockSuccess.new
|
45
44
|
success.expects(:body).returns(IP_SUCCESS)
|
46
|
-
url = "
|
47
|
-
|
48
|
-
location =
|
45
|
+
url = "#{@base_url}?ip=200.150.38.66"
|
46
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(success)
|
47
|
+
location = geocode('200.150.38.66')
|
49
48
|
assert_not_nil location
|
50
49
|
assert_equal(-19.916700, location.lat)
|
51
50
|
assert_equal(-43.933300, location.lng)
|
52
|
-
assert_equal
|
53
|
-
assert_equal
|
54
|
-
assert_equal
|
55
|
-
assert_equal
|
51
|
+
assert_equal 'Belo Horizonte', location.city
|
52
|
+
assert_equal 'Minas Gerais', location.state
|
53
|
+
assert_equal 'BR', location.country_code
|
54
|
+
assert_equal 'geo_plugin', location.provider
|
56
55
|
assert location.success?
|
57
56
|
end
|
58
57
|
|
59
58
|
def test_invalid_ip
|
60
|
-
location =
|
59
|
+
location = geocode('pixrum')
|
61
60
|
assert_not_nil location
|
62
61
|
assert !location.success?
|
63
62
|
end
|
64
63
|
|
65
64
|
def test_service_unavailable
|
66
65
|
failure = MockFailure.new
|
67
|
-
url = "
|
68
|
-
|
69
|
-
location =
|
66
|
+
url = "#{@base_url}?ip=69.10.10.10"
|
67
|
+
geocoder_class.expects(:call_geocoder_service).with(url).returns(failure)
|
68
|
+
location = geocode('69.10.10.10')
|
70
69
|
assert_not_nil location
|
71
70
|
assert !location.success?
|
72
71
|
end
|
@@ -1,22 +1,20 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
class GeobytesGeocoderTest < BaseGeocoderTest #:nodoc: all
|
3
3
|
def setup
|
4
4
|
super
|
5
|
-
@ip =
|
5
|
+
@ip = '12.12.12.12'
|
6
6
|
end
|
7
7
|
|
8
8
|
def assert_url(expected_url)
|
9
|
-
assert_equal expected_url, TestHelper.
|
9
|
+
assert_equal expected_url, TestHelper.last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_geobytes_geocoder
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
assert_equal res.country_code, "US"
|
20
|
-
end
|
13
|
+
url = "http://getcitydetails.geobytes.com/GetCityDetails?fqcn=#{@ip}"
|
14
|
+
res = geocode(@ip, :geobytes_geocode)
|
15
|
+
assert_url url
|
16
|
+
assert_equal res.city, 'New York'
|
17
|
+
assert_equal res.state, 'NY'
|
18
|
+
assert_equal res.country_code, 'US'
|
21
19
|
end
|
22
20
|
end
|
@@ -1,32 +1,30 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
2
|
-
|
3
|
-
Geokit::Geocoders::GeocodioGeocoder.key = "723d41115152d224fd74727df34727c444537f7"
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
2
|
|
5
3
|
class GeocodioGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
4
|
def setup
|
7
5
|
super
|
8
|
-
@full_address =
|
9
|
-
@second_address =
|
6
|
+
@full_address = '1 Infinite Loop, Cupertino, CA 95014'
|
7
|
+
@second_address = '300 Brannan St, San Francisco, CA 94107'
|
8
|
+
|
9
|
+
geocoder_class.key = @keys['geocodio']['key']
|
10
10
|
end
|
11
11
|
|
12
12
|
def assert_url(expected_url)
|
13
|
-
assert_equal expected_url, TestHelper.
|
13
|
+
assert_equal expected_url, TestHelper.last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_geocodio_geocode
|
17
|
-
|
18
|
-
|
19
|
-
url = "http://api.geocod.io/v1/geocode?q=#{Geokit::Inflector.url_escape(@full_address)}&api_key=723d41115152d224fd74727df34727c444537f7"
|
17
|
+
res = geocode(@full_address, :geocodio_geocode)
|
18
|
+
url = "http://api.geocod.io/v1/geocode?q=#{escape(@full_address)}&api_key=723d41115152d224fd74727df34727c444537f7"
|
20
19
|
|
21
|
-
|
20
|
+
assert_url url
|
22
21
|
|
23
|
-
|
24
|
-
end
|
22
|
+
verify(res)
|
25
23
|
end
|
26
24
|
|
27
25
|
def verify(location)
|
28
|
-
assert_equal location.city,
|
29
|
-
assert_equal location.zip,
|
26
|
+
assert_equal location.city, 'Cupertino'
|
27
|
+
assert_equal location.zip, '95014'
|
30
28
|
assert_equal location.lat, 37.331669
|
31
29
|
assert_equal location.lng, -122.03074
|
32
30
|
end
|
data/test/test_geoloc.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 GeoLocTest < Test::Unit::TestCase #:nodoc: all
|
4
4
|
def setup
|
@@ -7,7 +7,7 @@ class GeoLocTest < Test::Unit::TestCase #:nodoc: all
|
|
7
7
|
|
8
8
|
def test_is_us
|
9
9
|
assert !@loc.is_us?
|
10
|
-
@loc.country_code =
|
10
|
+
@loc.country_code = 'US'
|
11
11
|
assert @loc.is_us?
|
12
12
|
end
|
13
13
|
|
@@ -20,44 +20,44 @@ class GeoLocTest < Test::Unit::TestCase #:nodoc: all
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_street_number
|
23
|
-
@loc.street_address =
|
24
|
-
assert_equal
|
23
|
+
@loc.street_address = '123 Spear St.'
|
24
|
+
assert_equal '123', @loc.street_number
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_street_name
|
28
|
-
@loc.street_address =
|
29
|
-
assert_equal
|
28
|
+
@loc.street_address = '123 Spear St.'
|
29
|
+
assert_equal 'Spear St.', @loc.street_name
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_city
|
33
|
-
@loc.city =
|
34
|
-
assert_equal
|
33
|
+
@loc.city = 'san francisco'
|
34
|
+
assert_equal 'San Francisco', @loc.city
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_full_address
|
38
|
-
@loc.city =
|
39
|
-
@loc.state =
|
40
|
-
@loc.zip =
|
41
|
-
@loc.country_code =
|
42
|
-
assert_equal
|
43
|
-
@loc.full_address =
|
44
|
-
assert_equal
|
38
|
+
@loc.city = 'San Francisco'
|
39
|
+
@loc.state = 'CA'
|
40
|
+
@loc.zip = '94105'
|
41
|
+
@loc.country_code = 'US'
|
42
|
+
assert_equal 'San Francisco, CA, 94105, US', @loc.full_address
|
43
|
+
@loc.full_address = 'Irving, TX, 75063, US'
|
44
|
+
assert_equal 'Irving, TX, 75063, US', @loc.full_address
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_formatted_address
|
48
48
|
@loc.formatted_address = nil
|
49
|
-
@loc.full_address =
|
50
|
-
assert_equal
|
51
|
-
@loc.formatted_address =
|
52
|
-
@loc.full_address =
|
53
|
-
assert_equal
|
49
|
+
@loc.full_address = 'Irving, TX, 75063, US'
|
50
|
+
assert_equal 'Irving, TX, 75063, US', @loc.formatted_address
|
51
|
+
@loc.formatted_address = 'San Francisco, CA, 94105, US'
|
52
|
+
@loc.full_address = 'Irving, TX, 75063, US'
|
53
|
+
assert_equal 'San Francisco, CA, 94105, US', @loc.formatted_address
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_hash
|
57
|
-
@loc.city =
|
58
|
-
@loc.state =
|
59
|
-
@loc.zip =
|
60
|
-
@loc.country_code =
|
57
|
+
@loc.city = 'San Francisco'
|
58
|
+
@loc.state = 'CA'
|
59
|
+
@loc.zip = '94105'
|
60
|
+
@loc.country_code = 'US'
|
61
61
|
@another = Geokit::GeoLoc.new @loc.to_hash
|
62
62
|
assert_equal @loc, @another
|
63
63
|
end
|
@@ -67,46 +67,45 @@ class GeoLocTest < Test::Unit::TestCase #:nodoc: all
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def test_to_yaml
|
70
|
-
@loc.city =
|
71
|
-
@loc.state_code =
|
72
|
-
@loc.zip =
|
73
|
-
@loc.country_code =
|
70
|
+
@loc.city = 'San Francisco'
|
71
|
+
@loc.state_code = 'CA'
|
72
|
+
@loc.zip = '94105'
|
73
|
+
@loc.country_code = 'US'
|
74
74
|
|
75
75
|
yaml = YAML.parse(@loc.to_yaml)
|
76
76
|
case yaml.class.to_s
|
77
|
-
when
|
77
|
+
when 'YAML::Syck::Map', 'Syck::Map'
|
78
78
|
tag = yaml.type_id
|
79
79
|
children = yaml.value.sort_by { |k, _| k.value }.flatten.map(&:value)
|
80
|
-
when
|
80
|
+
when 'Psych::Nodes::Mapping'
|
81
81
|
tag = yaml.tag
|
82
82
|
children = yaml.children.map(&:value)
|
83
|
-
when
|
83
|
+
when 'Psych::Nodes::Document'
|
84
84
|
tag = yaml.root.tag
|
85
85
|
children = yaml.root.children.map(&:value)
|
86
86
|
end
|
87
87
|
assert_match(/.*object:Geokit::GeoLoc$/, tag)
|
88
88
|
assert_equal [
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
"zip", "94105"
|
89
|
+
'city', 'San Francisco',
|
90
|
+
'country_code', 'US',
|
91
|
+
'full_address', '',
|
92
|
+
'lat', '',
|
93
|
+
'lng', '',
|
94
|
+
'precision', 'unknown',
|
95
|
+
'state', '',
|
96
|
+
'state_code', 'CA',
|
97
|
+
'state_name', '',
|
98
|
+
'street_address', '',
|
99
|
+
'street_name', '',
|
100
|
+
'street_number', '',
|
101
|
+
'sub_premise', '',
|
102
|
+
'success', 'false',
|
103
|
+
'zip', '94105'
|
105
104
|
], children
|
106
105
|
end
|
107
106
|
|
108
107
|
def test_neighborhood
|
109
|
-
@loc.neighborhood =
|
110
|
-
assert_equal @loc.neighborhood,
|
108
|
+
@loc.neighborhood = 'SoMa'
|
109
|
+
assert_equal @loc.neighborhood, 'SoMa'
|
111
110
|
end
|
112
111
|
end
|
@@ -1,45 +1,41 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class GeonamesGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
@city =
|
7
|
-
|
6
|
+
@city = 'Adelaide'
|
7
|
+
geocoder_class.key = 'demo'
|
8
8
|
end
|
9
9
|
|
10
10
|
def assert_url(expected_url)
|
11
|
-
assert_equal expected_url, TestHelper.
|
11
|
+
assert_equal expected_url, TestHelper.last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_geonames_missing_key
|
15
|
-
|
15
|
+
geocoder_class.key = nil
|
16
16
|
exception = assert_raise(Geokit::Geocoders::GeocodeError) do
|
17
|
-
|
17
|
+
geocode(@city)
|
18
18
|
end
|
19
|
-
assert_equal(
|
19
|
+
assert_equal('Geonames requires a key to use their service.', exception.message)
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_geonames_geocode
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
assert_equal res.city, "Adelaide"
|
32
|
-
end
|
23
|
+
url = "http://api.geonames.org/postalCodeSearch?placename=#{@city}&maxRows=10&username=demo"
|
24
|
+
res = geocode(@city, :geonames_geocode)
|
25
|
+
assert_url url
|
26
|
+
assert_equal res.country_code, 'AU'
|
27
|
+
assert_equal res.state, 'SA'
|
28
|
+
assert_equal res.state_name, 'South Australia'
|
29
|
+
assert_equal res.state_code, 'SA'
|
30
|
+
assert_equal res.city, 'Adelaide'
|
33
31
|
end
|
34
32
|
|
35
33
|
def test_geonames_geocode_premium
|
36
34
|
# note this test will not actually return results because a valid premium
|
37
35
|
# username is required so we are just testing if the url is correct
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
assert_url url
|
43
|
-
end
|
36
|
+
geocoder_class.premium = true
|
37
|
+
url = "http://ws.geonames.net/postalCodeSearch?placename=#{@city}&maxRows=10&username=demo"
|
38
|
+
geocode(@city, :geonames_geocode_premium)
|
39
|
+
assert_url url
|
44
40
|
end
|
45
41
|
end
|