google-geocode 1.0.0 → 1.1.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.
- data/Rakefile +1 -1
- data/lib/google_geocode.rb +12 -4
- data/test/test_google_geocode.rb +54 -2
- metadata +1 -1
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.
|
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'
|
data/lib/google_geocode.rb
CHANGED
@@ -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
|
69
|
-
raise
|
70
|
-
when
|
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
|
data/test/test_google_geocode.rb
CHANGED
@@ -44,7 +44,59 @@ class TestGoogleGeocode < Test::Unit::TestCase
|
|
44
44
|
flunk 'Error expected'
|
45
45
|
end
|
46
46
|
|
47
|
-
def
|
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 '
|
107
|
+
assert_equal 'unknown address', e.message
|
56
108
|
else
|
57
109
|
flunk 'Error expected'
|
58
110
|
end
|