google-geocode 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ $VERBOSE = nil
8
8
 
9
9
  spec = Gem::Specification.new do |s|
10
10
  s.name = 'google-geocode'
11
- s.version = '1.0.0'
11
+ s.version = '1.1.0'
12
12
  s.summary = 'Google Geocoder API Library'
13
13
  s.description = 'Map addresses to latitude and longitude with Google\'s Geocoder.'
14
14
  s.author = 'Eric Hodel'
@@ -64,11 +64,19 @@ class GoogleGeocode
64
64
 
65
65
  status = obj.elements['/kml/Response/Status/code'].text.to_i
66
66
  case status
67
- when 200 # ignore, ok
68
- when 602
69
- raise AddressError, 'invalid address'
70
- when 610
67
+ when 200 then # ignore, ok
68
+ when 500 then
69
+ raise Error, 'server error'
70
+ when 601 then
71
+ raise AddressError, 'missing address'
72
+ when 602 then
73
+ raise AddressError, 'unknown address'
74
+ when 603 then
75
+ raise AddressError, 'unavailable address'
76
+ when 610 then
71
77
  raise KeyError, 'invalid key'
78
+ when 620 then
79
+ raise KeyError, 'too many queries'
72
80
  else
73
81
  raise Error, "unknown error #{status}"
74
82
  end
@@ -44,7 +44,59 @@ class TestGoogleGeocode < Test::Unit::TestCase
44
44
  flunk 'Error expected'
45
45
  end
46
46
 
47
- def test_locate_bad_address
47
+ def test_locate_missing_address
48
+ URI::HTTP.responses << <<-EOF.strip
49
+ <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>1600</name><Status><code>601</code><request>geocode</request></Status></Response></kml>
50
+ EOF
51
+
52
+ @gg.locate 'x'
53
+
54
+ rescue GoogleGeocode::AddressError => e
55
+ assert_equal 'missing address', e.message
56
+ else
57
+ flunk 'Error expected'
58
+ end
59
+
60
+ def test_locate_server_error
61
+ URI::HTTP.responses << <<-EOF.strip
62
+ <?xml version='1.0' encoding='UTF-8'?><kml xmlns='http://earth.google.com/kml/2.0'><Response><name>1600 Amphitheater Pkwy, Mountain View, CA</name><Status><code>500</code><request>geocode</request></Status></Response></kml>
63
+ EOF
64
+
65
+ @gg.locate 'x'
66
+
67
+ rescue GoogleGeocode::Error => e
68
+ assert_equal 'server error', e.message
69
+ else
70
+ flunk 'Error expected'
71
+ end
72
+
73
+ def test_locate_too_many_queries
74
+ URI::HTTP.responses << <<-EOF.strip
75
+ <?xml version='1.0' encoding='UTF-8'?><kml xmlns='http://earth.google.com/kml/2.0'><Response><name>1600 Amphitheater Pkwy, Mountain View, CA</name><Status><code>620</code><request>geocode</request></Status></Response></kml>
76
+ EOF
77
+
78
+ @gg.locate 'x'
79
+
80
+ rescue GoogleGeocode::KeyError => e
81
+ assert_equal 'too many queries', e.message
82
+ else
83
+ flunk 'Error expected'
84
+ end
85
+
86
+ def test_locate_unavailable_address
87
+ URI::HTTP.responses << <<-EOF.strip
88
+ <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>42-44 Hanway Street, London</name><Status><code>603</code><request>geocode</request></Status></Response></kml>
89
+ EOF
90
+
91
+ @gg.locate 'x'
92
+
93
+ rescue GoogleGeocode::AddressError => e
94
+ assert_equal 'unavailable address', e.message
95
+ else
96
+ flunk 'Error expected'
97
+ end
98
+
99
+ def test_locate_unknown_address
48
100
  URI::HTTP.responses << <<-EOF.strip
49
101
  <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>1600</name><Status><code>602</code><request>geocode</request></Status></Response></kml>
50
102
  EOF
@@ -52,7 +104,7 @@ class TestGoogleGeocode < Test::Unit::TestCase
52
104
  @gg.locate 'x'
53
105
 
54
106
  rescue GoogleGeocode::AddressError => e
55
- assert_equal 'invalid address', e.message
107
+ assert_equal 'unknown address', e.message
56
108
  else
57
109
  flunk 'Error expected'
58
110
  end
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11.15
3
3
  specification_version: 1
4
4
  name: google-geocode
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
6
+ version: 1.1.0
7
7
  date: 2006-06-12 00:00:00 -07:00
8
8
  summary: Google Geocoder API Library
9
9
  require_paths: