geokit 1.6.0 → 1.6.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,13 +3,13 @@ require 'lib/geokit'
3
3
  require 'mocha'
4
4
 
5
5
  class LatLngTest < Test::Unit::TestCase #:nodoc: all
6
-
6
+
7
7
  def setup
8
8
  @loc_a = Geokit::LatLng.new(32.918593,-96.958444)
9
9
  @loc_e = Geokit::LatLng.new(32.969527,-96.990159)
10
10
  @point = Geokit::LatLng.new(@loc_a.lat, @loc_a.lng)
11
11
  end
12
-
12
+
13
13
  def valid_reverse_geocoding_result
14
14
  location = Geokit::GeoLoc.new({
15
15
  :city => "Essen",
@@ -21,19 +21,19 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
21
21
  :street_address => "Porscheplatz 1",
22
22
  :zip => "45127"
23
23
  })
24
-
24
+
25
25
  location.full_address = "Porscheplatz 1, 45127 Essen, Deutschland"
26
26
  location.precision = 'address'
27
27
  location.provider = 'google'
28
28
  location.success = true
29
29
  location
30
30
  end
31
-
31
+
32
32
  def test_distance_between_same_using_defaults
33
33
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a)
34
34
  assert_equal 0, @loc_a.distance_to(@loc_a)
35
35
  end
36
-
36
+
37
37
  def test_distance_between_same_with_miles_and_flat
38
38
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :miles, :formula => :flat)
39
39
  assert_equal 0, @loc_a.distance_to(@loc_a, :units => :miles, :formula => :flat)
@@ -43,32 +43,32 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
43
43
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :kms, :formula => :flat)
44
44
  assert_equal 0, @loc_a.distance_to(@loc_a, :units => :kms, :formula => :flat)
45
45
  end
46
-
46
+
47
47
  def test_distance_between_same_with_nms_and_flat
48
48
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :nms, :formula => :flat)
49
49
  assert_equal 0, @loc_a.distance_to(@loc_a, :units => :nms, :formula => :flat)
50
50
  end
51
-
51
+
52
52
  def test_distance_between_same_with_miles_and_sphere
53
53
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :miles, :formula => :sphere)
54
54
  assert_equal 0, @loc_a.distance_to(@loc_a, :units => :miles, :formula => :sphere)
55
55
  end
56
-
56
+
57
57
  def test_distance_between_same_with_kms_and_sphere
58
58
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :kms, :formula => :sphere)
59
59
  assert_equal 0, @loc_a.distance_to(@loc_a, :units => :kms, :formula => :sphere)
60
60
  end
61
-
61
+
62
62
  def test_distance_between_same_with_nms_and_sphere
63
63
  assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :nms, :formula => :sphere)
64
64
  assert_equal 0, @loc_a.distance_to(@loc_a, :units => :nms, :formula => :sphere)
65
65
  end
66
-
66
+
67
67
  def test_distance_between_diff_using_defaults
68
68
  assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e), 0.01
69
69
  assert_in_delta 3.97, @loc_a.distance_to(@loc_e), 0.01
70
70
  end
71
-
71
+
72
72
  def test_distance_between_diff_with_miles_and_flat
73
73
  assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :miles, :formula => :flat), 0.2
74
74
  assert_in_delta 3.97, @loc_a.distance_to(@loc_e, :units => :miles, :formula => :flat), 0.2
@@ -78,27 +78,27 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
78
78
  assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :kms, :formula => :flat), 0.4
79
79
  assert_in_delta 6.39, @loc_a.distance_to(@loc_e, :units => :kms, :formula => :flat), 0.4
80
80
  end
81
-
81
+
82
82
  def test_distance_between_diff_with_nms_and_flat
83
83
  assert_in_delta 3.334, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :nms, :formula => :flat), 0.4
84
84
  assert_in_delta 3.334, @loc_a.distance_to(@loc_e, :units => :nms, :formula => :flat), 0.4
85
85
  end
86
-
86
+
87
87
  def test_distance_between_diff_with_miles_and_sphere
88
88
  assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :miles, :formula => :sphere), 0.01
89
89
  assert_in_delta 3.97, @loc_a.distance_to(@loc_e, :units => :miles, :formula => :sphere), 0.01
90
90
  end
91
-
91
+
92
92
  def test_distance_between_diff_with_kms_and_sphere
93
93
  assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :kms, :formula => :sphere), 0.01
94
94
  assert_in_delta 6.39, @loc_a.distance_to(@loc_e, :units => :kms, :formula => :sphere), 0.01
95
95
  end
96
-
96
+
97
97
  def test_distance_between_diff_with_nms_and_sphere
98
98
  assert_in_delta 3.454, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :nms, :formula => :sphere), 0.01
99
99
  assert_in_delta 3.454, @loc_a.distance_to(@loc_e, :units => :nms, :formula => :sphere), 0.01
100
100
  end
101
-
101
+
102
102
  def test_manually_mixed_in
103
103
  assert_equal 0, Geokit::LatLng.distance_between(@point, @point)
104
104
  assert_equal 0, @point.distance_to(@point)
@@ -107,15 +107,15 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
107
107
  assert_in_delta 6.39, @point.distance_to(@loc_e, :units => :kms, :formula => :flat), 0.4
108
108
  assert_in_delta 3.334, @point.distance_to(@loc_e, :units => :nms, :formula => :flat), 0.4
109
109
  end
110
-
110
+
111
111
  def test_heading_between
112
112
  assert_in_delta 332, Geokit::LatLng.heading_between(@loc_a,@loc_e), 0.5
113
113
  end
114
114
 
115
115
  def test_heading_to
116
116
  assert_in_delta 332, @loc_a.heading_to(@loc_e), 0.5
117
- end
118
-
117
+ end
118
+
119
119
  def test_class_endpoint
120
120
  endpoint=Geokit::LatLng.endpoint(@loc_a, 332, 3.97)
121
121
  assert_in_delta @loc_e.lat, endpoint.lat, 0.0005
@@ -126,29 +126,29 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
126
126
  endpoint=@loc_a.endpoint(332, 3.97)
127
127
  assert_in_delta @loc_e.lat, endpoint.lat, 0.0005
128
128
  assert_in_delta @loc_e.lng, endpoint.lng, 0.0005
129
- end
130
-
129
+ end
130
+
131
131
  def test_midpoint
132
132
  midpoint=@loc_a.midpoint_to(@loc_e)
133
133
  assert_in_delta 32.944061, midpoint.lat, 0.0005
134
134
  assert_in_delta(-96.974296, midpoint.lng, 0.0005)
135
- end
136
-
135
+ end
136
+
137
137
  def test_normalize
138
138
  lat=37.7690
139
139
  lng=-122.443
140
140
  res=Geokit::LatLng.normalize(lat,lng)
141
- assert_equal res,Geokit::LatLng.new(lat,lng)
141
+ assert_equal res,Geokit::LatLng.new(lat,lng)
142
142
  res=Geokit::LatLng.normalize("#{lat}, #{lng}")
143
- assert_equal res,Geokit::LatLng.new(lat,lng)
143
+ assert_equal res,Geokit::LatLng.new(lat,lng)
144
144
  res=Geokit::LatLng.normalize("#{lat} #{lng}")
145
145
  assert_equal res,Geokit::LatLng.new(lat,lng)
146
146
  res=Geokit::LatLng.normalize("#{lat.to_i} #{lng.to_i}")
147
- assert_equal res,Geokit::LatLng.new(lat.to_i,lng.to_i)
147
+ assert_equal res,Geokit::LatLng.new(lat.to_i,lng.to_i)
148
148
  res=Geokit::LatLng.normalize([lat,lng])
149
149
  assert_equal res,Geokit::LatLng.new(lat,lng)
150
150
  end
151
-
151
+
152
152
  def test_hash
153
153
  lat=37.7690
154
154
  lng=-122.443
@@ -156,7 +156,7 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
156
156
  second = Geokit::LatLng.new(lat,lng)
157
157
  assert_equal first.hash, second.hash
158
158
  end
159
-
159
+
160
160
  def test_eql?
161
161
  lat=37.7690
162
162
  lng=-122.443
@@ -165,45 +165,57 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
165
165
  assert first.eql?(second)
166
166
  assert second.eql?(first)
167
167
  end
168
-
168
+
169
+ def test_valid_when_lat_and_lng_defined
170
+ assert Geokit::LatLng.new(37.7690,-122.443).valid?
171
+ end
172
+
173
+ def test_not_valid_when_lat_is_nil
174
+ assert ! Geokit::LatLng.new(nil,-122.443).valid?
175
+ end
176
+
177
+ def test_not_valid_when_lng_is_nil
178
+ assert ! Geokit::LatLng.new(37.7690,nil).valid?
179
+ end
180
+
169
181
  def test_reverse_geocode
170
182
  point = Geokit::LatLng.new(51.4578329, 7.0166848)
171
183
  Geokit::Geocoders::MultiGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
172
184
  res = point.reverse_geocode
173
-
185
+
174
186
  assert_equal "Nordrhein-Westfalen", res.state
175
- assert_equal "Essen", res.city
187
+ assert_equal "Essen", res.city
176
188
  assert_equal "45127", res.zip
177
189
  assert_equal "51.4578329,7.0166848", res.ll # slightly dif from yahoo
178
190
  assert res.is_us? == false
179
191
  assert_equal "Porscheplatz 1, 45127 Essen, Deutschland", res.full_address #slightly different from yahoo
180
192
  end
181
-
193
+
182
194
  def test_reverse_geocoding_using_specific_geocoder
183
195
  point = Geokit::LatLng.new(51.4578329, 7.0166848)
184
196
  Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
185
197
  res = point.reverse_geocode(:using => Geokit::Geocoders::GoogleGeocoder)
186
198
 
187
199
  assert_equal "Nordrhein-Westfalen", res.state
188
- assert_equal "Essen", res.city
200
+ assert_equal "Essen", res.city
189
201
  assert_equal "45127", res.zip
190
202
  assert_equal "51.4578329,7.0166848", res.ll # slightly dif from yahoo
191
203
  assert res.is_us? == false
192
204
  assert_equal "Porscheplatz 1, 45127 Essen, Deutschland", res.full_address #slightly different from yahoo
193
205
  assert_equal "google", res.provider
194
206
  end
195
-
207
+
196
208
  def test_reverse_geocoding_using_specific_geocoder_short_syntax
197
209
  point = Geokit::LatLng.new(51.4578329, 7.0166848)
198
210
  Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
199
211
  res = point.reverse_geocode(:using => :google)
200
212
 
201
213
  assert_equal "Nordrhein-Westfalen", res.state
202
- assert_equal "Essen", res.city
214
+ assert_equal "Essen", res.city
203
215
  assert_equal "45127", res.zip
204
216
  assert_equal "51.4578329,7.0166848", res.ll # slightly dif from yahoo
205
217
  assert res.is_us? == false
206
218
  assert_equal "Porscheplatz 1, 45127 Essen, Deutschland", res.full_address #slightly different from yahoo
207
219
  assert_equal "google", res.provider
208
220
  end
209
- end
221
+ end
@@ -3,41 +3,41 @@ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
3
3
  Geokit::Geocoders::provider_order=[:google,:yahoo,:us]
4
4
 
5
5
  class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
6
-
6
+
7
7
  def setup
8
8
  super
9
9
  @failure = Geokit::GeoLoc.new
10
10
  end
11
-
11
+
12
12
  def test_successful_first
13
13
  Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@success)
14
14
  assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
15
15
  end
16
-
16
+
17
17
  def test_failover
18
18
  Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
19
19
  Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@success)
20
- assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
20
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
21
21
  end
22
-
22
+
23
23
  def test_double_failover
24
24
  Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
25
25
  Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
26
26
  Geokit::Geocoders::UsGeocoder.expects(:geocode).with(@address, {}).returns(@success)
27
- assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
27
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
28
28
  end
29
-
29
+
30
30
  def test_failure
31
31
  Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
32
32
  Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
33
33
  Geokit::Geocoders::UsGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
34
- assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
34
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
35
35
  end
36
36
 
37
37
  def test_invalid_provider
38
38
  temp = Geokit::Geocoders::provider_order
39
39
  Geokit::Geocoders.provider_order = [:bogus]
40
- assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
40
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
41
41
  Geokit::Geocoders.provider_order = temp
42
42
  end
43
43
 
@@ -55,31 +55,31 @@ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
55
55
  Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@success)
56
56
  assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
57
57
  end
58
-
58
+
59
59
  def test_reverse_geocode_failover
60
60
  Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
61
61
  Geokit::Geocoders::YahooGeocoder.expects(:reverse_geocode).with(@latlng).returns(@success)
62
- assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
62
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
63
63
  end
64
-
64
+
65
65
  def test_reverse_geocode_double_failover
66
66
  Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
67
67
  Geokit::Geocoders::YahooGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
68
68
  Geokit::Geocoders::UsGeocoder.expects(:reverse_geocode).with(@latlng).returns(@success)
69
- assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
69
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
70
70
  end
71
-
71
+
72
72
  def test_reverse_geocode_failure
73
73
  Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
74
74
  Geokit::Geocoders::YahooGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
75
75
  Geokit::Geocoders::UsGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
76
- assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
76
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
77
77
  end
78
78
 
79
79
  def test_reverse_geocode_with_invalid_provider
80
80
  temp = Geokit::Geocoders::provider_order
81
81
  Geokit::Geocoders.provider_order = [:bogus]
82
- assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
82
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
83
83
  Geokit::Geocoders.provider_order = temp
84
84
  end
85
85
 
@@ -90,4 +90,4 @@ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
90
90
  assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode("")
91
91
  Geokit::Geocoders.provider_order = t1 # reset to orig values
92
92
  end
93
- end
93
+ end
@@ -3,31 +3,31 @@ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
3
3
  Geokit::Geocoders::ip_provider_order=[:geo_plugin,:ip]
4
4
 
5
5
  class MultiIpGeocoderTest < BaseGeocoderTest #:nodoc: all
6
-
6
+
7
7
  def setup
8
8
  @ip_address = '10.10.10.10'
9
9
  @success = Geokit::GeoLoc.new({:city=>"SAN FRANCISCO", :state=>"CA", :country_code=>"US", :lat=>37.7742, :lng=>-122.417068})
10
10
  @success.success = true
11
11
  @failure = Geokit::GeoLoc.new
12
12
  end
13
-
13
+
14
14
  def test_successful_first
15
15
  Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address, {}).returns(@success)
16
16
  assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
17
17
  end
18
-
18
+
19
19
  def test_failover
20
20
  Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address, {}).returns(@failure)
21
21
  Geokit::Geocoders::IpGeocoder.expects(:geocode).with(@ip_address, {}).returns(@success)
22
22
  assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
23
23
  end
24
-
24
+
25
25
  def test_failure
26
26
  Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address, {}).returns(@failure)
27
27
  Geokit::Geocoders::IpGeocoder.expects(:geocode).with(@ip_address, {}).returns(@failure)
28
28
  assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
29
29
  end
30
-
30
+
31
31
  def test_invalid_provider
32
32
  temp = Geokit::Geocoders::ip_provider_order
33
33
  Geokit::Geocoders.ip_provider_order = [:bogus]
@@ -3,15 +3,15 @@ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
3
3
  Geokit::Geocoders::geocoder_us = nil
4
4
 
5
5
  class UsGeocoderTest < BaseGeocoderTest #:nodoc: all
6
-
7
- GEOCODER_US_FULL='37.792528,-122.393981,100 Spear St,San Francisco,CA,94105'
8
-
6
+
7
+ GEOCODER_US_FULL='37.792528,-122.393981,100 Spear St,San Francisco,CA,94105'
8
+
9
9
  def setup
10
10
  super
11
11
  @us_full_hash = {:city=>"San Francisco", :state=>"CA"}
12
12
  @us_full_loc = Geokit::GeoLoc.new(@us_full_hash)
13
- end
14
-
13
+ end
14
+
15
15
  def test_geocoder_us
16
16
  response = MockSuccess.new
17
17
  response.expects(:body).returns(GEOCODER_US_FULL)
@@ -19,22 +19,22 @@ class UsGeocoderTest < BaseGeocoderTest #:nodoc: all
19
19
  Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
20
20
  verify(Geokit::Geocoders::UsGeocoder.geocode(@address))
21
21
  end
22
-
22
+
23
23
  def test_geocoder_with_geo_loc
24
24
  response = MockSuccess.new
25
25
  response.expects(:body).returns(GEOCODER_US_FULL)
26
26
  url = "http://geocoder.us/service/csv/geocode?address=#{Geokit::Inflector.url_escape(@address)}"
27
27
  Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
28
- verify(Geokit::Geocoders::UsGeocoder.geocode(@us_full_loc))
28
+ verify(Geokit::Geocoders::UsGeocoder.geocode(@us_full_loc))
29
29
  end
30
-
30
+
31
31
  def test_service_unavailable
32
32
  response = MockFailure.new
33
33
  url = "http://geocoder.us/service/csv/geocode?address=#{Geokit::Inflector.url_escape(@address)}"
34
34
  Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
35
- assert !Geokit::Geocoders::UsGeocoder.geocode(@us_full_loc).success
36
- end
37
-
35
+ assert !Geokit::Geocoders::UsGeocoder.geocode(@us_full_loc).success
36
+ end
37
+
38
38
  def test_all_method
39
39
  response = MockSuccess.new
40
40
  response.expects(:body).returns(GEOCODER_US_FULL)
@@ -43,14 +43,14 @@ class UsGeocoderTest < BaseGeocoderTest #:nodoc: all
43
43
  res=Geokit::Geocoders::UsGeocoder.geocode(@address)
44
44
  assert_equal 1, res.all.size
45
45
  end
46
-
46
+
47
47
  private
48
-
48
+
49
49
  def verify(location)
50
50
  assert_equal "CA", location.state
51
- assert_equal "San Francisco", location.city
52
- assert_equal "37.792528,-122.393981", location.ll
51
+ assert_equal "San Francisco", location.city
52
+ assert_equal "37.792528,-122.393981", location.ll
53
53
  assert location.is_us?
54
- assert_equal "100 Spear St, San Francisco, CA, 94105, US", location.full_address #slightly different from yahoo
54
+ assert_equal "100 Spear St, San Francisco, CA, 94105, US", location.full_address #slightly different from yahoo
55
55
  end
56
- end
56
+ end
@@ -4,17 +4,13 @@ Geokit::Geocoders::yahoo = 'Yahoo'
4
4
 
5
5
  class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
6
6
  YAHOO_FULL=<<-EOF.strip
7
- <?xml version="1.0"?>
8
- <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd"><Result precision="address"><Latitude>37.792406</Latitude><Longitude>-122.39411</Longitude><Address>100 SPEAR ST</Address><City>SAN FRANCISCO</City><State>CA</State><Zip>94105-1522</Zip><Country>US</Country></Result></ResultSet>
9
- <!-- ws01.search.scd.yahoo.com uncompressed/chunked Mon Jan 29 16:23:43 PST 2007 -->
7
+ {"ResultSet":{"version":"1.0","Error":0,"ErrorMessage":"No error","Locale":"us_US","Quality":87,"Found":1,"Results":[{"quality":87,"latitude":"37.792406","longitude":"-122.39411","offsetlat":"37.792332","offsetlon":"-122.394027","radius":500,"name":"","line1":"100 Spear St","line2":"San Francisco, CA 94105-1522","line3":"","line4":"United States","house":"100","street":"Spear St","xstreet":"","unittype":"","unit":"","postal":"94105-1522","neighborhood":"","city":"San Francisco","county":"San Francisco County","state":"California","country":"United States","countrycode":"US","statecode":"CA","countycode":"","uzip":"94105","hash":"0FA06819B5F53E75","woeid":12797156,"woetype":11}]}}
10
8
  EOF
11
9
 
12
10
  YAHOO_CITY=<<-EOF.strip
13
- <?xml version="1.0"?>
14
- <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd"><Result precision="city"><Latitude>37.7742</Latitude><Longitude>-122.417068</Longitude><Address></Address><City>SAN FRANCISCO</City><State>CA</State><Zip></Zip><Country>US</Country></Result></ResultSet>
15
- <!-- ws02.search.scd.yahoo.com uncompressed/chunked Mon Jan 29 18:00:28 PST 2007 -->
11
+ {"ResultSet":{"version":"1.0","Error":0,"ErrorMessage":"No error","Locale":"us_US","Quality":40,"Found":1,"Results":[{"quality":40,"latitude":"37.7742","longitude":"-122.417068","offsetlat":"37.7742","offsetlon":"-122.417068","radius":10700,"name":"","line1":"","line2":"San Francisco, CA","line3":"","line4":"United States","house":"","street":"","xstreet":"","unittype":"","unit":"","postal":"","neighborhood":"","city":"San Francisco","county":"San Francisco County","state":"California","country":"United States","countrycode":"US","statecode":"CA","countycode":"","uzip":"94102","hash":"","woeid":2487956,"woetype":7}]}}
16
12
  EOF
17
-
13
+
18
14
  def setup
19
15
  super
20
16
  @yahoo_full_hash = {:street_address=>"100 Spear St", :city=>"San Francisco", :state=>"CA", :zip=>"94105-1522", :country_code=>"US"}
@@ -22,64 +18,64 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
22
18
  @yahoo_full_loc = Geokit::GeoLoc.new(@yahoo_full_hash)
23
19
  @yahoo_city_loc = Geokit::GeoLoc.new(@yahoo_city_hash)
24
20
  end
25
-
21
+
26
22
  # the testing methods themselves
27
23
  def test_yahoo_full_address
28
24
  response = MockSuccess.new
29
25
  response.expects(:body).returns(YAHOO_FULL)
30
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
26
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@full_address)}"
31
27
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
32
- do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@address))
33
- end
34
-
28
+ do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@full_address))
29
+ end
30
+
35
31
  def test_yahoo_full_address_accuracy
36
32
  response = MockSuccess.new
37
33
  response.expects(:body).returns(YAHOO_FULL)
38
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
34
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@full_address)}"
39
35
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
40
- res = Geokit::Geocoders::YahooGeocoder.geocode(@address)
36
+ res = Geokit::Geocoders::YahooGeocoder.geocode(@full_address)
41
37
  assert_equal 8, res.accuracy
42
38
  end
43
-
39
+
44
40
  def test_yahoo_full_address_with_geo_loc
45
41
  response = MockSuccess.new
46
42
  response.expects(:body).returns(YAHOO_FULL)
47
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@full_address)}"
43
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@full_address)}"
48
44
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
49
45
  do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_full_loc))
50
- end
46
+ end
51
47
 
52
48
  def test_yahoo_city
53
49
  response = MockSuccess.new
54
50
  response.expects(:body).returns(YAHOO_CITY)
55
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
51
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@address)}"
56
52
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
57
53
  do_city_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@address))
58
54
  end
59
-
55
+
60
56
  def test_yahoo_city_accuracy
61
57
  response = MockSuccess.new
62
58
  response.expects(:body).returns(YAHOO_CITY)
63
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
59
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@address)}"
64
60
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
65
61
  res = Geokit::Geocoders::YahooGeocoder.geocode(@address)
66
62
  assert_equal 4, res.accuracy
67
63
  end
68
-
64
+
69
65
  def test_yahoo_city_with_geo_loc
70
66
  response = MockSuccess.new
71
67
  response.expects(:body).returns(YAHOO_CITY)
72
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
68
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@address)}"
73
69
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
74
70
  do_city_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_city_loc))
75
- end
76
-
71
+ end
72
+
77
73
  def test_service_unavailable
78
74
  response = MockFailure.new
79
- url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
75
+ url = "http://where.yahooapis.com/geocode?flags=J&appid=Yahoo&q=#{Geokit::Inflector.url_escape(@address)}"
80
76
  Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
81
77
  assert !Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_city_loc).success
82
- end
78
+ end
83
79
 
84
80
  private
85
81
 
@@ -92,14 +88,14 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
92
88
  assert_equal "100 Spear St, San Francisco, CA, 94105-1522, US", res.full_address
93
89
  assert_equal "yahoo", res.provider
94
90
  end
95
-
91
+
96
92
  def do_city_assertions(res)
97
93
  assert_equal "CA", res.state
98
- assert_equal "San Francisco", res.city
94
+ assert_equal "San Francisco", res.city
99
95
  assert_equal "37.7742,-122.417068", res.ll
100
96
  assert res.is_us?
101
- assert_equal "San Francisco, CA, US", res.full_address
97
+ assert_equal "San Francisco, CA, US", res.full_address
102
98
  assert_nil res.street_address
103
99
  assert_equal "yahoo", res.provider
104
- end
105
- end
100
+ end
101
+ end