geokit 1.10.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
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