graticule 1.0.0.pre2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/bin/geocode +0 -0
  2. data/lib/graticule.rb +2 -0
  3. data/lib/graticule/geocoder/bogus.rb +1 -1
  4. data/lib/graticule/geocoder/geonames.rb +1 -1
  5. data/lib/graticule/geocoder/google.rb +4 -1
  6. data/lib/graticule/geocoder/host_ip.rb +1 -1
  7. data/lib/graticule/version.rb +3 -0
  8. metadata +73 -131
  9. data/.autotest +0 -13
  10. data/.gitignore +0 -6
  11. data/Rakefile +0 -123
  12. data/VERSION +0 -1
  13. data/graticule.gemspec +0 -199
  14. data/init.rb +0 -2
  15. data/site/index.html +0 -114
  16. data/site/plugin.html +0 -82
  17. data/site/stylesheets/style.css +0 -69
  18. data/test/config.yml.default +0 -33
  19. data/test/fixtures/responses/freethepostcode/not_found.txt +0 -3
  20. data/test/fixtures/responses/freethepostcode/success.txt +0 -2
  21. data/test/fixtures/responses/geocoder_ca/success.xml +0 -12
  22. data/test/fixtures/responses/geocoder_us/success.xml +0 -8
  23. data/test/fixtures/responses/geocoder_us/unknown.xml +0 -1
  24. data/test/fixtures/responses/geonames/missing.xml +0 -4
  25. data/test/fixtures/responses/geonames/success.xml +0 -14
  26. data/test/fixtures/responses/geonames/unknown.xml +0 -4
  27. data/test/fixtures/responses/google/badkey.xml +0 -1
  28. data/test/fixtures/responses/google/limit.xml +0 -10
  29. data/test/fixtures/responses/google/missing_address.xml +0 -1
  30. data/test/fixtures/responses/google/only_coordinates.xml +0 -1
  31. data/test/fixtures/responses/google/partial.xml +0 -16
  32. data/test/fixtures/responses/google/server_error.xml +0 -10
  33. data/test/fixtures/responses/google/success.xml +0 -16
  34. data/test/fixtures/responses/google/success_multiple_results.xml +0 -88
  35. data/test/fixtures/responses/google/unavailable.xml +0 -1
  36. data/test/fixtures/responses/google/unknown_address.xml +0 -8
  37. data/test/fixtures/responses/host_ip/private.txt +0 -4
  38. data/test/fixtures/responses/host_ip/success.txt +0 -4
  39. data/test/fixtures/responses/host_ip/unknown.txt +0 -4
  40. data/test/fixtures/responses/local_search_maps/empty.txt +0 -1
  41. data/test/fixtures/responses/local_search_maps/not_found.txt +0 -1
  42. data/test/fixtures/responses/local_search_maps/success.txt +0 -1
  43. data/test/fixtures/responses/mapquest/multi_result.xml +0 -1
  44. data/test/fixtures/responses/mapquest/success.xml +0 -1
  45. data/test/fixtures/responses/multimap/missing_params.xml +0 -4
  46. data/test/fixtures/responses/multimap/no_matches.xml +0 -4
  47. data/test/fixtures/responses/multimap/success.xml +0 -19
  48. data/test/fixtures/responses/yahoo/success.xml +0 -3
  49. data/test/fixtures/responses/yahoo/unknown_address.xml +0 -6
  50. data/test/graticule/distance_test.rb +0 -58
  51. data/test/graticule/geocoder/freethepostcode_test.rb +0 -36
  52. data/test/graticule/geocoder/geocoder_ca_test.rb +0 -41
  53. data/test/graticule/geocoder/geocoder_us_test.rb +0 -43
  54. data/test/graticule/geocoder/geocoders.rb +0 -55
  55. data/test/graticule/geocoder/geonames_test.rb +0 -48
  56. data/test/graticule/geocoder/google_test.rb +0 -107
  57. data/test/graticule/geocoder/host_ip_test.rb +0 -40
  58. data/test/graticule/geocoder/local_search_maps_test.rb +0 -30
  59. data/test/graticule/geocoder/mapquest_test.rb +0 -49
  60. data/test/graticule/geocoder/multi_test.rb +0 -51
  61. data/test/graticule/geocoder/multimap_test.rb +0 -52
  62. data/test/graticule/geocoder/yahoo_test.rb +0 -49
  63. data/test/graticule/geocoder_test.rb +0 -23
  64. data/test/graticule/location_test.rb +0 -86
  65. data/test/graticule/precision_test.rb +0 -37
  66. data/test/mocks/uri.rb +0 -52
  67. data/test/test_helper.rb +0 -30
@@ -1,43 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class GeocoderUsTest < Test::Unit::TestCase
6
-
7
- def setup
8
- URI::HTTP.responses = []
9
- URI::HTTP.uris = []
10
-
11
- @geocoder = GeocoderUs.new
12
- @location = Location.new(
13
- :street => "1600 Pennsylvania Ave NW, Washington DC 20502",
14
- :longitude => -77.037684,
15
- :latitude => 38.898748
16
- )
17
- end
18
-
19
- def test_success
20
- prepare_response(:success)
21
- assert_equal @location, @geocoder.locate('1600 Pennsylvania Ave, Washington DC')
22
- end
23
-
24
- def test_url
25
- prepare_response(:success)
26
- @geocoder.locate('1600 Pennsylvania Ave, Washington DC')
27
- assert_equal 'http://rpc.geocoder.us/service/rest/geocode?address=1600%20Pennsylvania%20Ave,%20Washington%20DC',
28
- URI::HTTP.uris.first
29
- end
30
-
31
- def test_locate_bad_address
32
- prepare_response(:unknown)
33
- assert_raises(AddressError) { @geocoder.locate('yuck') }
34
- end
35
-
36
- protected
37
- def prepare_response(id)
38
- URI::HTTP.responses << response('geocoder_us', id)
39
- end
40
-
41
- end
42
- end
43
- end
@@ -1,55 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
-
5
- # Generic tests for all geocoders (theoretically)
6
- module GeocodersTestCase
7
-
8
- def test_success
9
- return unless prepare_response(:success)
10
-
11
- location = Location.new(
12
- :street => "1600 Amphitheatre Pkwy",
13
- :city => "Mountain View",
14
- :state => "CA",
15
- :zip => "94043",
16
- :country => "US",
17
- :longitude => -122.083739,
18
- :latitude => 37.423021,
19
- :precision => :address
20
- )
21
- assert_equal location, @geocoder.locate('1600 Amphitheatre Parkway, Mountain View, CA')
22
- end
23
-
24
- def test_bad_key
25
- return unless prepare_response(:badkey)
26
- assert_raises(CredentialsError) { @geocoder.locate('x') }
27
- end
28
-
29
- def test_locate_missing_address
30
- return unless prepare_response(:missing_address)
31
- assert_raises(AddressError) { @geocoder.locate 'x' }
32
- end
33
-
34
- def test_locate_server_error
35
- return unless prepare_response(:server_error)
36
- assert_raises(Error) { @geocoder.locate 'x' }
37
- end
38
-
39
- def test_locate_too_many_queries
40
- return unless prepare_response(:limit)
41
- assert_raises(CredentialsError) { @geocoder.locate 'x' }
42
- end
43
-
44
- def test_locate_unavailable_address
45
- return unless prepare_response(:unavailable)
46
- assert_raises(AddressError) { @geocoder.locate 'x' }
47
- end
48
-
49
- def test_locate_unknown_address
50
- return unless prepare_response(:unknown_address)
51
- assert_raises(AddressError) { @geocoder.locate 'x' }
52
- end
53
-
54
- end
55
- end
@@ -1,48 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class GeonamesTest < Test::Unit::TestCase
6
- def setup
7
- URI::HTTP.responses = []
8
- URI::HTTP.uris = []
9
- @geocoder = Geonames.new
10
- end
11
-
12
- def test_time_zone
13
- return unless prepare_response(:success)
14
-
15
- chicago = Location.new(:latitude => 41.85, :longitude => -87.65)
16
- assert_equal 'America/Chicago', @geocoder.time_zone(chicago)
17
-
18
- end
19
-
20
- # def test_locate_server_error
21
- # return unless prepare_response(:server_error)
22
- # assert_raises(Error) { @geocoder.locate 'x' }
23
- # end
24
- #
25
- # def test_locate_too_many_queries
26
- # return unless prepare_response(:limit)
27
- # assert_raises(CredentialsError) { @geocoder.locate 'x' }
28
- # end
29
- #
30
- # def test_locate_unavailable_address
31
- # return unless prepare_response(:unavailable)
32
- # assert_raises(AddressError) { @geocoder.locate 'x' }
33
- # end
34
- #
35
- # def test_locate_unknown_address
36
- # return unless prepare_response(:unknown_address)
37
- # assert_raises(AddressError) { @geocoder.locate 'x' }
38
- # end
39
-
40
- protected
41
-
42
- def prepare_response(id = :success)
43
- URI::HTTP.responses << response('geonames', id)
44
- end
45
-
46
- end
47
- end
48
- end
@@ -1,107 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class GoogleTest < Test::Unit::TestCase
6
- def setup
7
- URI::HTTP.responses = []
8
- URI::HTTP.uris = []
9
- @geocoder = Google.new('APP_ID')
10
- end
11
-
12
- def test_success
13
- return unless prepare_response(:success)
14
-
15
- location = Location.new(
16
- :street => "1600 Amphitheatre Pkwy",
17
- :locality => "Mountain View",
18
- :region => "CA",
19
- :postal_code => "94043",
20
- :country => "US",
21
- :longitude => -122.0850350,
22
- :latitude => 37.4231390,
23
- :precision => :address
24
- )
25
- assert_equal location, @geocoder.locate('1600 Amphitheatre Parkway, Mountain View, CA')
26
- end
27
-
28
- # The #locate parameters are broad, so the XML response contains
29
- # multiple results at street-level precision. We expect to get the
30
- # first result back, and it should not contain a postal code.
31
- def test_success_multiple_results
32
- return unless prepare_response(:success_multiple_results)
33
-
34
- location = Location.new(
35
- :street => "Queen St W",
36
- :locality => "Toronto",
37
- :region => "ON",
38
- :postal_code => nil,
39
- :country => "CA",
40
- :longitude => -79.4125590,
41
- :latitude => 43.6455030,
42
- :precision => :street
43
- )
44
- assert_equal location, @geocoder.locate('Queen St West, Toronto, ON CA')
45
- end
46
-
47
- def test_only_coordinates
48
- return unless prepare_response(:only_coordinates)
49
-
50
- location = Location.new(:longitude => -17.000000, :latitude => 15.000000)
51
- assert_equal location, @geocoder.locate('15-17 & 16 Railroad Square, Nashua, NH, 03064')
52
- end
53
-
54
- def test_partial
55
- return unless prepare_response(:partial)
56
-
57
- location = Location.new(
58
- :locality => "San Francisco",
59
- :region => "CA",
60
- :country => "US",
61
- :longitude => -122.419209,
62
- :latitude => 37.775206,
63
- :precision => :locality
64
- )
65
-
66
- assert_equal location, @geocoder.locate('sf ca')
67
- end
68
-
69
- def test_locate_missing_address
70
- return unless prepare_response(:missing_address)
71
- assert_raises(AddressError) { @geocoder.locate 'x' }
72
- end
73
-
74
- def test_locate_server_error
75
- return unless prepare_response(:server_error)
76
- assert_raises(Error) { @geocoder.locate 'x' }
77
- end
78
-
79
- def test_locate_too_many_queries
80
- return unless prepare_response(:limit)
81
- assert_raises(CredentialsError) { @geocoder.locate 'x' }
82
- end
83
-
84
- def test_locate_unavailable_address
85
- return unless prepare_response(:unavailable)
86
- assert_raises(AddressError) { @geocoder.locate 'x' }
87
- end
88
-
89
- def test_locate_unknown_address
90
- return unless prepare_response(:unknown_address)
91
- assert_raises(AddressError) { @geocoder.locate 'x' }
92
- end
93
-
94
- def test_bad_key
95
- return unless prepare_response(:badkey)
96
- assert_raises(CredentialsError) { @geocoder.locate('x') }
97
- end
98
-
99
- protected
100
-
101
- def prepare_response(id = :success)
102
- URI::HTTP.responses << response('google', id)
103
- end
104
-
105
- end
106
- end
107
- end
@@ -1,40 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class HostIpTest < Test::Unit::TestCase
6
-
7
- def setup
8
- @geocoder = HostIp.new
9
- URI::HTTP.responses = []
10
- URI::HTTP.uris = []
11
- end
12
-
13
- def test_success
14
- prepare_response :success
15
-
16
- location = Location.new :country => 'US', :locality => 'Mountain View',
17
- :region => 'CA', :latitude => 37.402, :longitude => -122.078
18
-
19
- assert_equal location, @geocoder.locate('64.233.167.99')
20
- end
21
-
22
- def test_unknown
23
- prepare_response :unknown
24
- assert_raises(AddressError) { @geocoder.locate('127.0.0.1') }
25
- end
26
-
27
- def test_private_ip
28
- prepare_response :private
29
- assert_raises(AddressError) { @geocoder.locate('127.0.0.1') }
30
- end
31
-
32
- private
33
-
34
- def prepare_response(id = :success)
35
- URI::HTTP.responses << response('host_ip', id, 'txt')
36
- end
37
-
38
- end
39
- end
40
- end
@@ -1,30 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class LocalSearchMapsTest < Test::Unit::TestCase
6
-
7
- def setup
8
- @geocoder = LocalSearchMaps.new
9
- URI::HTTP.responses = []
10
- URI::HTTP.uris = []
11
- end
12
-
13
- def test_success
14
- prepare_response :success
15
-
16
- location = Location.new :latitude => 51.510036, :longitude => -0.130427
17
-
18
- assert_equal location, @geocoder.locate(:street => '48 Leicester Square',
19
- :locality => 'London', :country => 'UK')
20
- end
21
-
22
- private
23
-
24
- def prepare_response(id = :success)
25
- URI::HTTP.responses << response('local_search_maps', id, 'txt')
26
- end
27
-
28
- end
29
- end
30
- end
@@ -1,49 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class MapquestTest < Test::Unit::TestCase
6
- def setup
7
- URI::HTTP.responses = []
8
- URI::HTTP.uris = []
9
- @geocoder = Mapquest.new('client_id', 'password')
10
- end
11
-
12
- def test_success
13
- prepare_response(:success)
14
- location = Location.new(
15
- :country => "US",
16
- :latitude => 44.152019,
17
- :locality => "Lovell",
18
- :longitude => -70.892706,
19
- :postal_code => "04051-3919",
20
- :precision => :address,
21
- :region => "ME",
22
- :street => "44 Allen Rd"
23
- )
24
- assert_equal(location, @geocoder.locate('44 Allen Rd., Lovell, ME 04051'))
25
- end
26
-
27
- def test_multi_result
28
- prepare_response(:multi_result)
29
- location = Location.new(
30
- :country => "US",
31
- :latitude => 40.925598,
32
- :locality => "Stony Brook",
33
- :longitude => -73.141403,
34
- :postal_code => nil,
35
- :precision => :locality,
36
- :region => "NY",
37
- :street => nil
38
- )
39
- assert_equal(location, @geocoder.locate('217 Union St., NY'))
40
- end
41
-
42
- protected
43
-
44
- def prepare_response(id)
45
- URI::HTTP.responses << response('mapquest', id)
46
- end
47
- end
48
- end
49
- end
@@ -1,51 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class MultiTest < Test::Unit::TestCase
6
-
7
- def setup
8
- @mock_geocoders = [mock("geocoder 1"), mock("geocoder 2")]
9
- @mock_geocoders.each {|g| g.stubs(:locate) }
10
- @geocoder = Multi.new(*@mock_geocoders)
11
- end
12
-
13
- def test_locate_calls_each_geocoder_and_raises_error
14
- @mock_geocoders.each do |g|
15
- g.expects(:locate).with('test').raises(Graticule::AddressError)
16
- end
17
- assert_raises(Graticule::AddressError) { @geocoder.locate 'test' }
18
- end
19
-
20
- def test_locate_returns_first_result_without_calling_others
21
- result = mock("result")
22
- @mock_geocoders.first.expects(:locate).returns(result)
23
- @mock_geocoders.last.expects(:locate).never
24
- assert_equal result, @geocoder.locate('test')
25
- end
26
-
27
- def test_locate_with_custom_block
28
- @mock_geocoders.first.expects(:locate).returns(1)
29
- @mock_geocoders.last.expects(:locate).returns(2)
30
- @geocoder = Multi.new(*@mock_geocoders) {|r| r == 2 }
31
- assert_equal 2, @geocoder.locate('test')
32
- end
33
-
34
- def test_locate_with_custom_block_and_no_match
35
- @mock_geocoders.first.expects(:locate).returns(1)
36
- @mock_geocoders.last.expects(:locate).returns(2)
37
- @geocoder = Multi.new(*@mock_geocoders) {|r| r == 3 }
38
- assert_raises(Graticule::AddressError) { @geocoder.locate('test') }
39
- end
40
-
41
- def test_timeout
42
- @mock = @mock_geocoders.first
43
- def @mock.locate(*x)
44
- sleep 1
45
- end
46
- @geocoder = Multi.new(@mock, :timeout => 0.1)
47
- assert_raise(Timeout::Error) { @geocoder.locate('foo') }
48
- end
49
- end
50
- end
51
- end
@@ -1,52 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Graticule
4
- module Geocoder
5
- class MultimapTest < Test::Unit::TestCase
6
-
7
- def setup
8
- URI::HTTP.responses = []
9
- URI::HTTP.uris = []
10
- @geocoder = Multimap.new 'API_KEY'
11
- @location = Location.new(
12
- :street => "Oxford Street",
13
- :locality => "LONDON",
14
- :postal_code => "W1",
15
- :country => "GB",
16
- :longitude => -0.14839,
17
- :latitude => 51.51452,
18
- :precision => :address
19
- )
20
- end
21
-
22
- def test_locate
23
- prepare_response(:success)
24
- assert_equal @location, @geocoder.locate('Oxford Street, LONDON, W1')
25
- end
26
-
27
- def test_url_from_string
28
- prepare_response(:success)
29
- @geocoder.locate('Oxford Street, LONDON, W1')
30
- assert_equal 'http://clients.multimap.com/API/geocode/1.2/API_KEY?qs=Oxford%20Street,%20LONDON,%20W1', URI::HTTP.uris.first
31
- end
32
-
33
- def test_url_from_location
34
- prepare_response(:success)
35
- @geocoder.locate(:street => 'Oxford Street', :locality => 'London')
36
- assert_equal 'http://clients.multimap.com/API/geocode/1.2/API_KEY?city=London&countryCode=&postalCode=&region=&street=Oxford%20Street', URI::HTTP.uris.first
37
- end
38
-
39
-
40
- def test_locate_bad_address
41
- prepare_response(:no_matches)
42
- assert_raise(Error) { @geocoder.locate('yucksthoeusthaoeusnhtaosu') }
43
- end
44
-
45
- protected
46
- def prepare_response(id)
47
- URI::HTTP.responses << response('multimap', id)
48
- end
49
-
50
- end
51
- end
52
- end