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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.hound.yml +2 -0
  4. data/.rubocop.yml +358 -0
  5. data/.travis.yml +4 -4
  6. data/CHANGELOG.md +16 -0
  7. data/Gemfile +3 -3
  8. data/README.markdown +19 -4
  9. data/Rakefile +11 -16
  10. data/fixtures/keys.yml +9 -0
  11. data/fixtures/vcr_cassettes/google_postal_town.yml +117 -0
  12. data/fixtures/vcr_cassettes/mapbox_forward_geocode.yml +30 -30
  13. data/fixtures/vcr_cassettes/mapbox_forward_geocode_city_only.yml +25 -25
  14. data/fixtures/vcr_cassettes/mapbox_forward_geocode_state_only.yml +71 -0
  15. data/fixtures/vcr_cassettes/mapbox_reverse_geocode.yml +25 -25
  16. data/fixtures/vcr_cassettes/test_component_filtering_off.yml +390 -0
  17. data/fixtures/vcr_cassettes/test_component_filtering_on.yml +164 -0
  18. data/fixtures/vcr_cassettes/test_component_filtering_on_without_filter.yml +404 -0
  19. data/geokit.gemspec +24 -23
  20. data/lib/geokit.rb +7 -7
  21. data/lib/geokit/core_ext.rb +1 -1
  22. data/lib/geokit/geo_loc.rb +25 -19
  23. data/lib/geokit/geocoders.rb +21 -30
  24. data/lib/geokit/geocoders/bing.rb +5 -4
  25. data/lib/geokit/geocoders/ca_geocoder.rb +10 -11
  26. data/lib/geokit/geocoders/fcc.rb +9 -9
  27. data/lib/geokit/geocoders/free_geo_ip.rb +8 -8
  28. data/lib/geokit/geocoders/geo_plugin.rb +7 -7
  29. data/lib/geokit/geocoders/geobytes.rb +10 -10
  30. data/lib/geokit/geocoders/geocodio.rb +14 -14
  31. data/lib/geokit/geocoders/geonames.rb +12 -12
  32. data/lib/geokit/geocoders/google.rb +89 -61
  33. data/lib/geokit/geocoders/ip.rb +9 -14
  34. data/lib/geokit/geocoders/mapbox.rb +30 -30
  35. data/lib/geokit/geocoders/mapquest.rb +12 -12
  36. data/lib/geokit/geocoders/maxmind.rb +1 -1
  37. data/lib/geokit/geocoders/opencage.rb +19 -19
  38. data/lib/geokit/geocoders/openstreetmap.rb +21 -19
  39. data/lib/geokit/geocoders/ripe.rb +7 -7
  40. data/lib/geokit/geocoders/us_geocoder.rb +5 -5
  41. data/lib/geokit/geocoders/yahoo.rb +46 -46
  42. data/lib/geokit/geocoders/yandex.rb +18 -17
  43. data/lib/geokit/inflectors.rb +5 -5
  44. data/lib/geokit/lat_lng.rb +5 -4
  45. data/lib/geokit/multi_geocoder.rb +4 -2
  46. data/lib/geokit/net_adapter/net_http.rb +3 -2
  47. data/lib/geokit/net_adapter/typhoeus.rb +2 -1
  48. data/lib/geokit/version.rb +1 -1
  49. data/test/coverage_loader.rb +25 -0
  50. data/test/helper.rb +18 -87
  51. data/test/test_base_geocoder.rb +44 -11
  52. data/test/test_bing_geocoder.rb +40 -48
  53. data/test/test_bounds.rb +1 -1
  54. data/test/test_ca_geocoder.rb +15 -15
  55. data/test/test_fcc_geocoder.rb +8 -9
  56. data/test/test_free_geo_ip_geocoder.rb +8 -10
  57. data/test/test_geo_plugin_geocoder.rb +21 -22
  58. data/test/test_geobytes_geocoder.rb +9 -11
  59. data/test/test_geocodio_geocoder.rb +12 -14
  60. data/test/test_geoloc.rb +48 -49
  61. data/test/test_geonames_geocoder.rb +19 -23
  62. data/test/test_google_geocoder.rb +197 -189
  63. data/test/test_inflector.rb +7 -7
  64. data/test/test_ipgeocoder.rb +32 -31
  65. data/test/test_latlng.rb +28 -28
  66. data/test/test_map_quest.rb +23 -27
  67. data/test/test_mapbox_geocoder.rb +38 -28
  68. data/test/test_mappable.rb +2 -2
  69. data/test/test_maxmind_geocoder.rb +16 -16
  70. data/test/test_multi_geocoder.rb +5 -5
  71. data/test/test_multi_ip_geocoder.rb +3 -3
  72. data/test/test_net_adapter.rb +4 -4
  73. data/test/test_opencage_geocoder.rb +58 -67
  74. data/test/test_openstreetmap_geocoder.rb +67 -65
  75. data/test/test_polygon.rb +4 -22
  76. data/test/test_ripe_geocoder.rb +21 -26
  77. data/test/test_us_geocoder.rb +21 -21
  78. data/test/test_useragent.rb +46 -0
  79. data/test/test_yahoo_geocoder.rb +35 -47
  80. data/test/test_yandex_geocoder.rb +29 -27
  81. data/test/vcr_loader.rb +18 -0
  82. metadata +20 -6
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), "helper")
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("").returns(@failure)
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("").returns(@failure)
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__), "helper")
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 = "10.10.10.10"
8
- @success = Geokit::GeoLoc.new({city: "SAN FRANCISCO", state: "CA", country_code: "US", lat: 37.7742, lng: -122.417068})
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
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), "helper")
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 = {"name" => "json"}
26
+ RESULT_HASH = {'name' => 'json'}
27
27
 
28
28
  # Defines common test fixtures.
29
29
  def setup
30
- @url = "http://www.cacheme.com"
31
- @address = "San Francisco, CA"
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__), "helper")
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: "100 Spear St", city: "San Francisco", state: "CA", zip: "94105", country_code: "US"}
8
- @opencage_city_hash = {city: "San Francisco", state: "CA"}
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 = "someopencageapikey"
15
- Geokit::Geocoders::OpencageGeocoder.key = key
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
- VCR.use_cassette("opencage_full") do
20
- url = "https://api.opencagedata.com/geocode/v1/json?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 = Geokit::Geocoders::OpencageGeocoder.geocode(@opencage_full_loc)
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
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
- VCR.use_cassette("opencage_city") do
35
- url = "https://api.opencagedata.com/geocode/v1/json?key=someopencageapikey&query=San+Francisco%2C+CA&no_annotations=1"
36
- TestHelper.expects(:last_url).with(url)
37
- res = Geokit::Geocoders::OpencageGeocoder.geocode(@opencage_city_loc)
38
-
39
- assert_equal "California", res.state
40
- assert_equal "San Francisco", res.city
41
- assert_array_in_delta [37.7792768, -122.4192704], res.to_a
42
- assert res.is_us?
43
- assert_equal "San Francisco, California, US", res.full_address
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
- VCR.use_cassette("opencage_reverse_madrid") do
50
- location = Geokit::GeoLoc.new
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
- url = "https://api.opencagedata.com/geocode/v1/json?key=someopencageapikey&query=40.4167413%2C-3.7032498&no_annotations=1"
54
- TestHelper.expects(:last_url).with(url)
55
- res = Geokit::Geocoders::OpencageGeocoder.geocode(location.ll)
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
- assert_equal "ES", res.country_code
58
- assert_equal "opencage", res.provider
53
+ assert_equal 'ES', res.country_code
54
+ assert_equal 'opencage', res.provider
59
55
 
60
- assert_equal "Madrid", res.city
61
- assert_equal "Community of Madrid", res.state
56
+ assert_equal 'Madrid', res.city
57
+ assert_equal 'Community of Madrid', res.state
62
58
 
63
- assert_equal "Spain", res.country
64
- assert_equal true, res.success
59
+ assert_equal 'Spain', res.country
60
+ assert_equal true, res.success
65
61
 
66
- assert_equal "Calle De Zurbano, Chamberí, Madrid, Community of Madrid, 28036, ES", res.full_address
67
- assert_equal 28_036, res.zip
68
- assert_equal "Calle De Zurbano", res.street_address
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
- VCR.use_cassette("opencage_reverse_prilep") do
74
- location = Geokit::GeoLoc.new
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
- url = "https://api.opencagedata.com/geocode/v1/json?key=someopencageapikey&query=41.3527177%2C21.5497808&no_annotations=1"
78
- TestHelper.expects(:last_url).with(url)
79
- res = Geokit::Geocoders::OpencageGeocoder.geocode(location.ll)
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
- assert_equal "MK", res.country_code
82
- assert_equal "opencage", res.provider
75
+ assert_equal 'MK', res.country_code
76
+ assert_equal 'opencage', res.provider
83
77
 
84
- assert_equal "Prilep", res.city
85
- assert_equal "Pelagonia Region", res.state
78
+ assert_equal 'Prilep', res.city
79
+ assert_equal 'Pelagonia Region', res.state
86
80
 
87
- assert_equal "Macedonia", res.country
88
- assert_equal 10, res.precision
89
- assert_equal true, res.success
81
+ assert_equal 'Macedonia', res.country
82
+ assert_equal 10, res.precision
83
+ assert_equal true, res.success
90
84
 
91
- assert_equal "Прилепски Бранители, Prilep, Pelagonia Region, MK", res.full_address
92
- assert_equal "Прилепски Бранители", res.street_address
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
- VCR.use_cassette("opencage_language_response_es") do
99
- url = "https://api.opencagedata.com/geocode/v1/json?key=someopencageapikey&language=es&query=London&no_annotations=1"
100
- TestHelper.expects(:last_url).with(url)
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
- assert_equal "Londres", language_result.city
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__), "helper")
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: "100 Spear St", city: "San Francisco", state: "CA", zip: "94105", country_code: "US"}
24
- @osm_city_hash = {city: "San Francisco", state: "CA"}
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@full_address_short_zip)}"
34
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
35
- do_full_address_assertions(Geokit::Geocoders::OSMGeocoder.geocode(@full_address_short_zip))
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@full_address_short_zip)}"
42
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
43
- res = Geokit::Geocoders::OSMGeocoder.geocode(@full_address_short_zip)
44
- assert_equal "house", res.accuracy
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@full_address_short_zip)}"
51
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
52
- do_full_address_assertions(Geokit::Geocoders::OSMGeocoder.geocode(@osm_full_loc))
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@address)}"
59
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
60
- do_city_assertions(Geokit::Geocoders::OSMGeocoder.geocode(@address))
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&accept-language=pt-br&addressdetails=1&q=#{Geokit::Inflector.url_escape(@address)}"
67
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
68
- do_city_assertions(Geokit::Geocoders::OSMGeocoder.geocode(@address, {:'accept-language' => "pt-br"}))
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@address)}"
75
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
76
- res = Geokit::Geocoders::OSMGeocoder.geocode(@address)
77
- assert_equal "county", res.accuracy
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@address)}"
84
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
85
- do_city_assertions(Geokit::Geocoders::OSMGeocoder.geocode(@osm_city_loc))
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 = "41.3527177", "21.5497808"
93
- url = "http://nominatim.openstreetmap.org/reverse?format=json&addressdetails=1&lat=#{prilep.lat}&lon=#{prilep.lng}"
94
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
95
- res = Geokit::Geocoders::OSMGeocoder.do_reverse_geocode(prilep.ll)
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 "MK", res.country_code
101
- assert_equal "osm", res.provider
102
+ assert_equal 'MK', res.country_code
103
+ assert_equal 'osm', res.provider
102
104
 
103
- assert_equal "Prilep", res.city
105
+ assert_equal 'Prilep', res.city
104
106
  assert_nil res.state
105
107
 
106
- assert_equal "Macedonia", res.country
108
+ assert_equal 'Macedonia', res.country
107
109
  assert_nil res.precision
108
110
  assert_equal true, res.success
109
111
 
110
- assert_equal "Marksova, Prilep, MK", res.full_address
111
- assert_equal "Marksova", res.street_address
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 = "40.4167413", "-3.7032498"
120
- url = "http://nominatim.openstreetmap.org/reverse?format=json&addressdetails=1&lat=#{location.lat}&lon=#{location.lng}"
121
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
122
- res = Geokit::Geocoders::OSMGeocoder.do_reverse_geocode(location.ll)
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 "ES", res.country_code
125
- assert_equal "osm", res.provider
126
+ assert_equal 'ES', res.country_code
127
+ assert_equal 'osm', res.provider
126
128
 
127
- assert_equal "Madrid", res.city
128
- assert_equal "Madrid", res.state
129
+ assert_equal 'Madrid', res.city
130
+ assert_equal 'Madrid', res.state
129
131
 
130
- assert_equal "Spain", res.country
132
+ assert_equal 'Spain', res.country
131
133
  assert_equal true, res.success
132
134
 
133
- assert_equal "Calle Del Doctor Tolosa Latour, Usera, Madrid, Madrid, 28026, ES", res.full_address
134
- assert_equal "28026", res.zip
135
- assert_equal "Calle Del Doctor Tolosa Latour", res.street_address
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 = "40.4167413", "-3.7032498"
144
- url = "http://nominatim.openstreetmap.org/reverse?format=json&addressdetails=1&lat=#{location.lat}&lon=#{location.lng}&accept-language=pt-br"
145
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
146
- Geokit::Geocoders::OSMGeocoder.do_reverse_geocode(location.ll, {:'accept-language' => "pt-br"})
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 = "http://nominatim.openstreetmap.org/search?format=json&polygon=0&addressdetails=1&q=#{Geokit::Inflector.url_escape(@address)}"
152
- Geokit::Geocoders::OSMGeocoder.expects(:call_geocoder_service).with(url).returns(response)
153
- assert !Geokit::Geocoders::OSMGeocoder.geocode(@osm_city_loc).success
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 "California", res.state
161
- assert_equal "San Francisco", res.city
162
- assert_equal "37.792391,-122.394024", res.ll
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 "Spear Street 100, San Francisco, California, 94105, US", res.full_address
165
- assert_equal "osm", res.provider
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 "California", res.state
170
- assert_equal "San Francisco", res.city
171
- assert_equal "37.7340974,-122.3912596", res.ll
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 "San Francisco, California, US", res.full_address
175
+ assert_equal 'San Francisco, California, US', res.full_address
174
176
  assert_nil res.street_address
175
- assert_equal "osm", res.provider
177
+ assert_equal 'osm', res.provider
176
178
  end
177
179
  end