geocoder 1.1.9 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of geocoder might be problematic. Click here for more details.

Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +9 -5
  4. data/CHANGELOG.md +19 -0
  5. data/README.md +175 -10
  6. data/Rakefile +1 -1
  7. data/gemfiles/Gemfile.mongoid-2.4.x +1 -0
  8. data/lib/generators/geocoder/maxmind/geolite_city_generator.rb +28 -0
  9. data/lib/generators/geocoder/maxmind/geolite_country_generator.rb +28 -0
  10. data/lib/generators/geocoder/maxmind/templates/migration/geolite_city.rb +27 -0
  11. data/lib/generators/geocoder/maxmind/templates/migration/geolite_country.rb +17 -0
  12. data/lib/geocoder.rb +4 -12
  13. data/lib/geocoder/cache.rb +3 -2
  14. data/lib/geocoder/calculations.rb +39 -0
  15. data/lib/geocoder/configuration.rb +1 -7
  16. data/lib/geocoder/ip_address.rb +12 -0
  17. data/lib/geocoder/lookup.rb +10 -1
  18. data/lib/geocoder/lookups/baidu.rb +7 -6
  19. data/lib/geocoder/lookups/baidu_ip.rb +54 -0
  20. data/lib/geocoder/lookups/base.rb +37 -9
  21. data/lib/geocoder/lookups/bing.rb +10 -5
  22. data/lib/geocoder/lookups/cloudmade.rb +35 -0
  23. data/lib/geocoder/lookups/freegeoip.rb +5 -1
  24. data/lib/geocoder/lookups/geocodio.rb +42 -0
  25. data/lib/geocoder/lookups/google_premier.rb +1 -1
  26. data/lib/geocoder/lookups/here.rb +62 -0
  27. data/lib/geocoder/lookups/mapquest.rb +2 -1
  28. data/lib/geocoder/lookups/maxmind_local.rb +58 -0
  29. data/lib/geocoder/lookups/nominatim.rb +8 -0
  30. data/lib/geocoder/lookups/smarty_streets.rb +45 -0
  31. data/lib/geocoder/lookups/yahoo.rb +1 -1
  32. data/lib/geocoder/models/active_record.rb +5 -3
  33. data/lib/geocoder/models/base.rb +1 -4
  34. data/lib/geocoder/models/mongo_base.rb +4 -2
  35. data/lib/geocoder/query.rb +4 -4
  36. data/lib/geocoder/railtie.rb +1 -1
  37. data/lib/geocoder/request.rb +10 -8
  38. data/lib/geocoder/results/baidu_ip.rb +62 -0
  39. data/lib/geocoder/results/cloudmade.rb +39 -0
  40. data/lib/geocoder/results/geocodio.rb +66 -0
  41. data/lib/geocoder/results/here.rb +62 -0
  42. data/lib/geocoder/results/maxmind_local.rb +49 -0
  43. data/lib/geocoder/results/smarty_streets.rb +106 -0
  44. data/lib/geocoder/results/test.rb +20 -3
  45. data/lib/geocoder/results/yandex.rb +7 -3
  46. data/lib/geocoder/sql.rb +16 -15
  47. data/lib/geocoder/stores/active_record.rb +6 -2
  48. data/lib/geocoder/stores/base.rb +8 -1
  49. data/lib/geocoder/version.rb +1 -1
  50. data/lib/maxmind_database.rb +109 -0
  51. data/lib/oauth_util.rb +1 -1
  52. data/lib/tasks/geocoder.rake +3 -1
  53. data/lib/tasks/maxmind.rake +73 -0
  54. data/test/fixtures/baidu_ip_202_198_16_3 +19 -0
  55. data/test/fixtures/baidu_ip_invalid_key +1 -0
  56. data/test/fixtures/baidu_ip_no_results +1 -0
  57. data/test/fixtures/cloudmade_invalid_key +1 -0
  58. data/test/fixtures/cloudmade_madison_square_garden +1 -0
  59. data/test/fixtures/cloudmade_no_results +1 -0
  60. data/test/fixtures/geocodio_1101_pennsylvania_ave +1 -0
  61. data/test/fixtures/geocodio_bad_api_key +3 -0
  62. data/test/fixtures/geocodio_invalid +4 -0
  63. data/test/fixtures/geocodio_no_results +1 -0
  64. data/test/fixtures/geocodio_over_query_limit +4 -0
  65. data/test/fixtures/here_madison_square_garden +72 -0
  66. data/test/fixtures/here_no_results +8 -0
  67. data/test/fixtures/nominatim_over_limit +1 -0
  68. data/test/fixtures/smarty_streets_11211 +1 -0
  69. data/test/fixtures/smarty_streets_madison_square_garden +47 -0
  70. data/test/fixtures/smarty_streets_no_results +1 -0
  71. data/test/fixtures/yandex_canada_rue_dupuis_14 +446 -0
  72. data/test/fixtures/yandex_new_york +1 -0
  73. data/test/integration/http_client_test.rb +25 -0
  74. data/test/mongoid_test_helper.rb +2 -2
  75. data/test/test_helper.rb +98 -30
  76. data/test/{active_record_test.rb → unit/active_record_test.rb} +4 -3
  77. data/test/{cache_test.rb → unit/cache_test.rb} +3 -1
  78. data/test/{calculations_test.rb → unit/calculations_test.rb} +22 -13
  79. data/test/{configuration_test.rb → unit/configuration_test.rb} +4 -27
  80. data/test/{error_handling_test.rb → unit/error_handling_test.rb} +10 -9
  81. data/test/{geocoder_test.rb → unit/geocoder_test.rb} +26 -7
  82. data/test/{https_test.rb → unit/https_test.rb} +4 -3
  83. data/test/unit/ip_address_test.rb +24 -0
  84. data/test/{lookup_test.rb → unit/lookup_test.rb} +33 -20
  85. data/test/unit/lookups/bing_test.rb +68 -0
  86. data/test/unit/lookups/dstk_test.rb +26 -0
  87. data/test/unit/lookups/esri_test.rb +48 -0
  88. data/test/unit/lookups/freegeoip_test.rb +27 -0
  89. data/test/unit/lookups/geocoder_ca_test.rb +17 -0
  90. data/test/unit/lookups/geocodio_test.rb +55 -0
  91. data/test/unit/lookups/google_premier_test.rb +22 -0
  92. data/test/unit/lookups/google_test.rb +84 -0
  93. data/test/unit/lookups/mapquest_test.rb +60 -0
  94. data/test/unit/lookups/maxmind_local_test.rb +28 -0
  95. data/test/unit/lookups/maxmind_test.rb +63 -0
  96. data/test/unit/lookups/nominatim_test.rb +31 -0
  97. data/test/unit/lookups/smarty_streets_test.rb +71 -0
  98. data/test/unit/lookups/yahoo_test.rb +35 -0
  99. data/test/{method_aliases_test.rb → unit/method_aliases_test.rb} +5 -4
  100. data/test/unit/model_test.rb +38 -0
  101. data/test/{mongoid_test.rb → unit/mongoid_test.rb} +10 -9
  102. data/test/unit/near_test.rb +87 -0
  103. data/test/{oauth_util_test.rb → unit/oauth_util_test.rb} +3 -2
  104. data/test/{proxy_test.rb → unit/proxy_test.rb} +2 -1
  105. data/test/{query_test.rb → unit/query_test.rb} +7 -8
  106. data/test/unit/rake_task_test.rb +21 -0
  107. data/test/{request_test.rb → unit/request_test.rb} +8 -2
  108. data/test/{result_test.rb → unit/result_test.rb} +29 -1
  109. data/test/{test_mode_test.rb → unit/test_mode_test.rb} +12 -1
  110. metadata +80 -27
  111. data/test/custom_block_test.rb +0 -32
  112. data/test/integration/smoke_test.rb +0 -26
  113. data/test/near_test.rb +0 -61
  114. data/test/services_test.rb +0 -393
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class GooglePremierTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(lookup: :google_premier)
9
+ set_api_key!(:google_premier)
10
+ end
11
+
12
+ def test_result_components
13
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
14
+ assert_equal "Manhattan", result.address_components_of_type(:sublocality).first['long_name']
15
+ end
16
+
17
+ def test_query_url
18
+ Geocoder.configure(google_premier: {api_key: ["deadbeef", "gme-test", "test-dev"]})
19
+ query = Geocoder::Query.new("Madison Square Garden, New York, NY")
20
+ assert_equal "http://maps.googleapis.com/maps/api/geocode/json?address=Madison+Square+Garden%2C+New+York%2C+NY&channel=test-dev&client=gme-test&language=en&sensor=false&signature=doJvJqX7YJzgV9rJ0DnVkTGZqTg=", query.url
21
+ end
22
+ end
@@ -0,0 +1,84 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class GoogleTest < GeocoderTestCase
6
+
7
+ def test_google_result_components
8
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
9
+ assert_equal "Manhattan",
10
+ result.address_components_of_type(:sublocality).first['long_name']
11
+ end
12
+
13
+ def test_google_result_components_contains_route
14
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
15
+ assert_equal "Penn Plaza",
16
+ result.address_components_of_type(:route).first['long_name']
17
+ end
18
+
19
+ def test_google_result_components_contains_street_number
20
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
21
+ assert_equal "4",
22
+ result.address_components_of_type(:street_number).first['long_name']
23
+ end
24
+
25
+ def test_google_returns_city_when_no_locality_in_result
26
+ result = Geocoder.search("no locality").first
27
+ assert_equal "Haram", result.city
28
+ end
29
+
30
+ def test_google_city_results_returns_nil_if_no_matching_component_types
31
+ result = Geocoder.search("no city data").first
32
+ assert_equal nil, result.city
33
+ end
34
+
35
+ def test_google_street_address_returns_formatted_street_address
36
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
37
+ assert_equal "4 Penn Plaza", result.street_address
38
+ end
39
+
40
+ def test_google_precision
41
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
42
+ assert_equal "ROOFTOP",
43
+ result.precision
44
+ end
45
+
46
+ def test_google_query_url_contains_bounds
47
+ lookup = Geocoder::Lookup::Google.new
48
+ url = lookup.query_url(Geocoder::Query.new(
49
+ "Some Intersection",
50
+ :bounds => [[40.0, -120.0], [39.0, -121.0]]
51
+ ))
52
+ assert_match(/bounds=40.0+%2C-120.0+%7C39.0+%2C-121.0+/, url)
53
+ end
54
+
55
+ def test_google_query_url_contains_region
56
+ lookup = Geocoder::Lookup::Google.new
57
+ url = lookup.query_url(Geocoder::Query.new(
58
+ "Some Intersection",
59
+ :region => "gb"
60
+ ))
61
+ assert_match(/region=gb/, url)
62
+ end
63
+
64
+ def test_google_query_url_contains_components_when_given_as_string
65
+ lookup = Geocoder::Lookup::Google.new
66
+ url = lookup.query_url(Geocoder::Query.new(
67
+ "Some Intersection",
68
+ :components => "locality:ES"
69
+ ))
70
+ formatted = "components=" + CGI.escape("locality:ES")
71
+ assert url.include?(formatted), "Expected #{formatted} to be included in #{url}"
72
+ end
73
+
74
+ def test_google_query_url_contains_components_when_given_as_array
75
+ lookup = Geocoder::Lookup::Google.new
76
+ url = lookup.query_url(Geocoder::Query.new(
77
+ "Some Intersection",
78
+ :components => ["country:ES", "locality:ES"]
79
+ ))
80
+ formatted = "components=" + CGI.escape("country:ES|locality:ES")
81
+ assert url.include?(formatted), "Expected #{formatted} to be included in #{url}"
82
+ end
83
+
84
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class MapquestTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(lookup: :mapquest)
9
+ set_api_key!(:mapquest)
10
+ end
11
+
12
+ def test_url_contains_api_key
13
+ Geocoder.configure(mapquest: {api_key: "abc123"})
14
+ query = Geocoder::Query.new("Bluffton, SC")
15
+ assert_equal "http://www.mapquestapi.com/geocoding/v1/address?key=abc123&location=Bluffton%2C+SC", query.url
16
+ end
17
+
18
+ def test_url_for_version_2
19
+ Geocoder.configure(mapquest: {api_key: "abc123", version: 2})
20
+ query = Geocoder::Query.new("Bluffton, SC")
21
+ assert_equal "http://www.mapquestapi.com/geocoding/v2/address?key=abc123&location=Bluffton%2C+SC", query.url
22
+ end
23
+
24
+ def test_url_for_open_street_maps
25
+ Geocoder.configure(mapquest: {api_key: "abc123", open: true})
26
+ query = Geocoder::Query.new("Bluffton, SC")
27
+ assert_equal "http://open.mapquestapi.com/geocoding/v1/address?key=abc123&location=Bluffton%2C+SC", query.url
28
+ end
29
+
30
+ def test_result_components
31
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
32
+ assert_equal "10001", result.postal_code
33
+ assert_equal "46 West 31st Street, New York, NY, 10001, US", result.address
34
+ end
35
+
36
+ def test_no_results
37
+ assert_equal [], Geocoder.search("no results")
38
+ end
39
+
40
+ def test_raises_exception_when_invalid_request
41
+ Geocoder.configure(always_raise: [Geocoder::InvalidRequest])
42
+ assert_raises Geocoder::InvalidRequest do
43
+ Geocoder.search("invalid request")
44
+ end
45
+ end
46
+
47
+ def test_raises_exception_when_invalid_api_key
48
+ Geocoder.configure(always_raise: [Geocoder::InvalidApiKey])
49
+ assert_raises Geocoder::InvalidApiKey do
50
+ Geocoder.search("invalid api key")
51
+ end
52
+ end
53
+
54
+ def test_raises_exception_when_error
55
+ Geocoder.configure(always_raise: [Geocoder::Error])
56
+ assert_raises Geocoder::Error do
57
+ Geocoder.search("error")
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class MaxmindLocalTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(ip_lookup: :maxmind_local)
9
+ end
10
+
11
+ def test_result_attributes
12
+ result = Geocoder.search('8.8.8.8').first
13
+ assert_equal 'Mountain View, CA 94043, United States', result.address
14
+ assert_equal 'Mountain View', result.city
15
+ assert_equal 'CA', result.state
16
+ assert_equal 'United States', result.country
17
+ assert_equal 'US', result.country_code
18
+ assert_equal '94043', result.postal_code
19
+ assert_equal 37.41919999999999, result.latitude
20
+ assert_equal -122.0574, result.longitude
21
+ assert_equal [37.41919999999999, -122.0574], result.coordinates
22
+ end
23
+
24
+ def test_loopback
25
+ results = Geocoder.search('127.0.0.1')
26
+ assert_equal [], results
27
+ end
28
+ end
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class MaxmindTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(ip_lookup: :maxmind)
9
+ end
10
+
11
+ def test_maxmind_result_on_ip_address_search
12
+ Geocoder.configure(maxmind: {service: :city_isp_org})
13
+ result = Geocoder.search("74.200.247.59").first
14
+ assert result.is_a?(Geocoder::Result::Maxmind)
15
+ end
16
+
17
+ def test_maxmind_result_knows_country_service_name
18
+ Geocoder.configure(maxmind: {service: :country})
19
+ assert_equal :country, Geocoder.search("24.24.24.21").first.service_name
20
+ end
21
+
22
+ def test_maxmind_result_knows_city_service_name
23
+ Geocoder.configure(maxmind: {service: :city})
24
+ assert_equal :city, Geocoder.search("24.24.24.22").first.service_name
25
+ end
26
+
27
+ def test_maxmind_result_knows_city_isp_org_service_name
28
+ Geocoder.configure(maxmind: {service: :city_isp_org})
29
+ assert_equal :city_isp_org, Geocoder.search("24.24.24.23").first.service_name
30
+ end
31
+
32
+ def test_maxmind_result_knows_omni_service_name
33
+ Geocoder.configure(maxmind: {service: :omni})
34
+ assert_equal :omni, Geocoder.search("24.24.24.24").first.service_name
35
+ end
36
+
37
+ def test_maxmind_special_result_components
38
+ Geocoder.configure(maxmind: {service: :omni})
39
+ result = Geocoder.search("24.24.24.24").first
40
+ assert_equal "Road Runner", result.isp_name
41
+ assert_equal "Cable/DSL", result.netspeed
42
+ assert_equal "rr.com", result.domain
43
+ end
44
+
45
+ def test_maxmind_raises_exception_when_service_not_configured
46
+ Geocoder.configure(maxmind: {service: nil})
47
+ assert_raises Geocoder::ConfigurationError do
48
+ Geocoder::Query.new("24.24.24.24").url
49
+ end
50
+ end
51
+
52
+ def test_maxmind_works_when_loopback_address_on_omni
53
+ Geocoder.configure(maxmind: {service: :omni})
54
+ result = Geocoder.search("127.0.0.1").first
55
+ assert_equal "", result.country_code
56
+ end
57
+
58
+ def test_maxmind_works_when_loopback_address_on_country
59
+ Geocoder.configure(maxmind: {service: :country})
60
+ result = Geocoder.search("127.0.0.1").first
61
+ assert_equal "", result.country_code
62
+ end
63
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class NominatimTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(lookup: :nominatim)
9
+ set_api_key!(:nominatim)
10
+ end
11
+
12
+ def test_result_components
13
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
14
+ assert_equal "10001", result.postal_code
15
+ assert_equal "Madison Square Garden, West 31st Street, Long Island City, New York City, New York, 10001, United States of America", result.address
16
+ end
17
+
18
+ def test_host_configuration
19
+ Geocoder.configure(nominatim: {host: "local.com"})
20
+ query = Geocoder::Query.new("Bluffton, SC")
21
+ assert_match %r(http://local\.com), query.url
22
+ end
23
+
24
+ def test_raises_exception_when_over_query_limit
25
+ Geocoder.configure(:always_raise => [Geocoder::OverQueryLimitError])
26
+ l = Geocoder::Lookup.get(:nominatim)
27
+ assert_raises Geocoder::OverQueryLimitError do
28
+ l.send(:results, Geocoder::Query.new("over limit"))
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,71 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class SmartyStreetsTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(lookup: :smarty_streets)
9
+ set_api_key!(:smarty_streets)
10
+ end
11
+
12
+ def test_url_contains_api_key
13
+ Geocoder.configure(:smarty_streets => {:api_key => 'blah'})
14
+ query = Geocoder::Query.new("Bluffton, SC")
15
+ assert_equal "http://api.smartystreets.com/street-address?auth-token=blah&street=Bluffton%2C+SC", query.url
16
+ end
17
+
18
+ def test_query_for_address_geocode
19
+ query = Geocoder::Query.new("42 Wallaby Way Sydney, AU")
20
+ assert_match /api\.smartystreets\.com\/street-address\?/, query.url
21
+ end
22
+
23
+ def test_query_for_zipcode_geocode
24
+ query = Geocoder::Query.new("22204")
25
+ assert_match /api\.smartystreets\.com\/zipcode\?/, query.url
26
+ end
27
+
28
+ def test_query_for_zipfour_geocode
29
+ query = Geocoder::Query.new("22204-1603")
30
+ assert_match /api\.smartystreets\.com\/zipcode\?/, query.url
31
+ end
32
+
33
+ def test_smarty_streets_result_components
34
+ result = Geocoder.search("Madison Square Garden, New York, NY").first
35
+ assert_equal "Penn", result.street
36
+ assert_equal "10121", result.zipcode
37
+ assert_equal "1703", result.zip4
38
+ assert_equal "New York", result.city
39
+ assert_equal "36061", result.fips
40
+ assert !result.zipcode_endpoint?
41
+ end
42
+
43
+ def test_smarty_streets_result_components_with_zipcode_only_query
44
+ result = Geocoder.search("11211").first
45
+ assert_equal "Brooklyn", result.city
46
+ assert_equal "New York", result.state
47
+ assert_equal "NY", result.state_code
48
+ assert result.zipcode_endpoint?
49
+ end
50
+
51
+ def test_no_results
52
+ results = Geocoder.search("no results")
53
+ assert_equal 0, results.length
54
+ end
55
+
56
+ def test_raises_exception_on_error_http_status
57
+ error_statuses = {
58
+ '400' => Geocoder::InvalidRequest,
59
+ '401' => Geocoder::RequestDenied,
60
+ '402' => Geocoder::OverQueryLimitError
61
+ }
62
+ Geocoder.configure(always_raise: error_statuses.values)
63
+ lookup = Geocoder::Lookup.get(:smarty_streets)
64
+ error_statuses.each do |code, err|
65
+ assert_raises err do
66
+ response = MockHttpResponse.new(code: code.to_i)
67
+ lookup.send(:check_response_for_errors!, response)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..", "..")
3
+ require 'test_helper'
4
+
5
+ class YahooTest < GeocoderTestCase
6
+
7
+ def setup
8
+ Geocoder.configure(lookup: :yahoo)
9
+ set_api_key!(:yahoo)
10
+ end
11
+
12
+ def test_no_results
13
+ assert_equal [], Geocoder.search("no results")
14
+ end
15
+
16
+ def test_error
17
+ silence_warnings do
18
+ assert_equal [], Geocoder.search("error")
19
+ end
20
+ end
21
+
22
+ def test_result_components
23
+ result = Geocoder.search("madison square garden").first
24
+ assert_equal "10001", result.postal_code
25
+ assert_equal "Madison Square Garden, New York, NY 10001, United States", result.address
26
+ end
27
+
28
+ def test_raises_exception_when_over_query_limit
29
+ Geocoder.configure(:always_raise => [Geocoder::OverQueryLimitError])
30
+ l = Geocoder::Lookup.get(:yahoo)
31
+ assert_raises Geocoder::OverQueryLimitError do
32
+ l.send(:results, Geocoder::Query.new("over limit"))
33
+ end
34
+ end
35
+ end
@@ -1,23 +1,24 @@
1
1
  # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..")
2
3
  require 'test_helper'
3
4
 
4
- class MethodAliasesTest < Test::Unit::TestCase
5
+ class MethodAliasesTest < GeocoderTestCase
5
6
 
6
7
  def test_distance_from_is_alias_for_distance_to
7
- v = Venue.new(*venue_params(:msg))
8
+ v = Place.new(*geocoded_object_params(:msg))
8
9
  v.latitude, v.longitude = [40.750354, -73.993371]
9
10
  assert_equal v.distance_from([30, -94]), v.distance_to([30, -94])
10
11
  end
11
12
 
12
13
  def test_fetch_coordinates_is_alias_for_geocode
13
- v = Venue.new(*venue_params(:msg))
14
+ v = Place.new(*geocoded_object_params(:msg))
14
15
  coords = [40.750354, -73.993371]
15
16
  assert_equal coords, v.fetch_coordinates
16
17
  assert_equal coords, [v.latitude, v.longitude]
17
18
  end
18
19
 
19
20
  def test_fetch_address_is_alias_for_reverse_geocode
20
- v = Landmark.new(*landmark_params(:msg))
21
+ v = PlaceReverseGeocoded.new(*reverse_geocoded_object_params(:msg))
21
22
  address = "4 Penn Plaza, New York, NY 10001, USA"
22
23
  assert_equal address, v.fetch_address
23
24
  assert_equal address, v.address
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ $: << File.join(File.dirname(__FILE__), "..")
3
+ require 'test_helper'
4
+
5
+ class ModelTest < GeocoderTestCase
6
+
7
+ def test_geocode_with_block_runs_block
8
+ e = PlaceWithCustomResultsHandling.new(*geocoded_object_params(:msg))
9
+ coords = [40.750354, -73.993371]
10
+ e.geocode
11
+ assert_equal coords.map{ |c| c.to_s }.join(','), e.coords_string
12
+ end
13
+
14
+ def test_geocode_with_block_doesnt_auto_assign_coordinates
15
+ e = PlaceWithCustomResultsHandling.new(*geocoded_object_params(:msg))
16
+ e.geocode
17
+ assert_nil e.latitude
18
+ assert_nil e.longitude
19
+ end
20
+
21
+ def test_reverse_geocode_with_block_runs_block
22
+ e = PlaceReverseGeocodedWithCustomResultsHandling.new(*reverse_geocoded_object_params(:msg))
23
+ e.reverse_geocode
24
+ assert_equal "US", e.country
25
+ end
26
+
27
+ def test_reverse_geocode_with_block_doesnt_auto_assign_address
28
+ e = PlaceReverseGeocodedWithCustomResultsHandling.new(*reverse_geocoded_object_params(:msg))
29
+ e.reverse_geocode
30
+ assert_nil e.address
31
+ end
32
+
33
+ def test_units_and_method
34
+ PlaceReverseGeocoded.reverse_geocoded_by :latitude, :longitude, method: :spherical, units: :km
35
+ assert_equal :km, PlaceReverseGeocoded.geocoder_options[:units]
36
+ assert_equal :spherical, PlaceReverseGeocoded.geocoder_options[:method]
37
+ end
38
+ end