geogle 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,35 @@
1
+ describe Geogle::Geocoder do
2
+ describe 'searching by address' do
3
+ let(:places) do
4
+ VCR.use_cassette('geocode_by_address') do
5
+ described_class.new.address('Valencia', { country: 'ES' })
6
+ end
7
+ end
8
+
9
+ it "returns an array" do
10
+ expect(places).to be_kind_of(Array)
11
+ end
12
+ end
13
+
14
+ describe 'searching by latlng' do
15
+ let(:places) do
16
+ VCR.use_cassette('geocode_by_latlng') do
17
+ described_class.new.latlng(39.4699075, -0.3762881)
18
+ end
19
+ end
20
+
21
+ it "returns an array" do
22
+ expect(places).to be_kind_of(Array)
23
+ end
24
+
25
+ describe "when the error handler raises an error RequestDeniedError" do
26
+ before do
27
+ allow(Geogle::ErrorHandler).to receive(:check) { raise Geogle::RequestDeniedError }
28
+ end
29
+
30
+ it "an exception is raised" do
31
+ expect{ places }.to raise_error(Geogle::RequestDeniedError)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,151 @@
1
+ describe 'Parser' do
2
+ let(:places) do
3
+ VCR.use_cassette('geocode_by_latlng') do
4
+ Geogle::Geocoder.new.latlng(39.4699075, -0.3762881)
5
+ end
6
+ end
7
+
8
+ it "returns an array of Geogle::Model::Places" do
9
+ expect(places).to be_kind_of(Array)
10
+ end
11
+
12
+ it "each element is Geogle::Model::Place" do
13
+ expect(places.first).to be_kind_of(Geogle::Model::Place)
14
+ end
15
+
16
+ describe "place" do
17
+ let(:place) { places.first }
18
+
19
+ it "geo_location" do
20
+ expect(place.geo_location.to_s).to eq("39.4701016,-0.3761823")
21
+ end
22
+
23
+ it "street" do
24
+ expect(place.street).to eq("Plaza Ayuntamiento")
25
+ end
26
+
27
+ it "locality" do
28
+ expect(place.locality).to eq("Valencia")
29
+ end
30
+
31
+ it "city" do
32
+ expect(place.city).to eq("Valencia")
33
+ end
34
+
35
+ it "state" do
36
+ expect(place.state).to eq("Valencian Community")
37
+ end
38
+
39
+ it "country" do
40
+ expect(place.country).to eq("Spain")
41
+ end
42
+
43
+ it "country_code" do
44
+ expect(place.country_code).to eq("ES")
45
+ end
46
+
47
+ describe "geometry" do
48
+ let(:geometry) { place.geometry }
49
+
50
+ it "location_type" do
51
+ expect(geometry.location_type).to eq("ROOFTOP")
52
+ end
53
+
54
+ describe "location" do
55
+ let(:location) { geometry.location }
56
+
57
+ it "has latitude" do
58
+ expect(location.lat).to eq(39.4701016)
59
+ end
60
+
61
+ it "has longitude" do
62
+ expect(location.lng).to eq(-0.3761823)
63
+ end
64
+
65
+ it "to_s" do
66
+ expect(location.to_s).to eq("39.4701016,-0.3761823")
67
+ end
68
+ end
69
+
70
+ describe "bounds" do
71
+ let(:bounds) { geometry.bounds }
72
+
73
+ it "they are nil when there are not" do
74
+ expect(bounds).to be_nil
75
+ end
76
+ end
77
+
78
+ describe "viewport" do
79
+ let(:viewport) { geometry.viewport }
80
+
81
+ describe "southwest" do
82
+ let(:southwest) { viewport.southwest }
83
+
84
+ it "has latitude" do
85
+ expect(southwest.lat).to eq(39.4687526197085)
86
+ end
87
+
88
+ it "has longitude" do
89
+ expect(southwest.lng).to eq(-0.3775312802915021)
90
+ end
91
+ end
92
+
93
+ describe "northeast" do
94
+ let(:northeast) { viewport.northeast }
95
+
96
+ it "has latitude" do
97
+ expect(northeast.lat).to eq(39.4714505802915)
98
+ end
99
+
100
+ it "has longitude" do
101
+ expect(northeast.lng).to eq(-0.374833319708498)
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ describe "address" do
108
+ let(:address) { place.address }
109
+
110
+ it "has a street_number" do
111
+ expect(address.street_number).to eq("S/N")
112
+ end
113
+
114
+ it "has a street" do
115
+ expect(address.street).to eq("Plaza Ayuntamiento")
116
+ end
117
+
118
+ it "has a locality" do
119
+ expect(address.locality).to eq("Valencia")
120
+ end
121
+
122
+ it "has a area_level_1" do
123
+ expect(address.area_level_1).to eq("Valencian Community")
124
+ end
125
+
126
+ it "has a area_level_1_code" do
127
+ expect(address.area_level_1_code).to eq("Valencian Community")
128
+ end
129
+
130
+ it "has a area_level_2" do
131
+ expect(address.area_level_2).to eq("Valencia")
132
+ end
133
+
134
+ it "has a area_level_2_code" do
135
+ expect(address.area_level_2_code).to eq("V")
136
+ end
137
+
138
+ it "has a country" do
139
+ expect(address.country).to eq("Spain")
140
+ end
141
+
142
+ it "has a country_code" do
143
+ expect(address.country_code).to eq("ES")
144
+ end
145
+
146
+ it "has a formatted" do
147
+ expect(address.formatted).to eq("Plaza Ayuntamiento, S/N, 46002 Valencia, Valencia, Spain")
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,32 @@
1
+ describe Geogle::UrlBuilder do
2
+ let(:uri) { "https://www.foo.com" }
3
+ let(:builder) { described_class.new(uri, business_attrs)}
4
+ let(:params) do
5
+ {
6
+ address: "Street FooBar",
7
+ sensor: true
8
+ }
9
+ end
10
+ let(:built_url) { builder.build(params) }
11
+
12
+ describe "when the client_id and crypto_key are not passed as arguments" do
13
+ let(:business_attrs) { {} }
14
+
15
+ it "the built url doesn't contain a query param signature" do
16
+ expect(built_url.to_s).to eq("https://www.foo.com?address=Street+FooBar&sensor=true")
17
+ end
18
+ end
19
+
20
+ describe "when the client_id and crypto_key are passed as arguments" do
21
+ let(:business_attrs) do
22
+ {
23
+ client_id: "gme-clientid",
24
+ crypto_key: "crypto-key"
25
+ }
26
+ end
27
+
28
+ it "the built url contains a query param signature" do
29
+ expect(built_url).to eq("https://www.foo.com?client=gme-clientid&address=Street+FooBar&sensor=true&signature=JiUf5yTKyPSuD8TebiKdA5kg-kg=\n")
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bundler/setup'
4
+ Bundler.setup
5
+
6
+ require 'geogle'
7
+ require 'vcr'
8
+
9
+ VCR.configure do |c|
10
+ c.cassette_library_dir = 'spec/fixtures/cassettes'
11
+ c.hook_into :webmock
12
+ end
@@ -0,0 +1,15 @@
1
+ box: wercker/rvm
2
+ build:
3
+ steps:
4
+ - rvm-use:
5
+ version: 2.1.2
6
+ - bundle-install
7
+ - script:
8
+ name: echo ruby information
9
+ code: |
10
+ echo "ruby version $(ruby --version) running"
11
+ echo "from location $(which ruby)"
12
+ echo -p "gem list: $(gem list)"
13
+ - script:
14
+ name: rspec
15
+ code: bundle exec rspec
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: geogle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - yone_lc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: virtus
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ruby-hmac
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: vcr
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: byebug
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: guard-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: Ruby wrapper for Google MAPS API V3 geocode interface
154
+ email:
155
+ - yonelacort@gmail.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - ".gitignore"
161
+ - ".rspec"
162
+ - Gemfile
163
+ - Guardfile
164
+ - LICENSE.txt
165
+ - README.md
166
+ - Rakefile
167
+ - geogle.gemspec
168
+ - lib/geogle.rb
169
+ - lib/geogle/base.rb
170
+ - lib/geogle/directions.rb
171
+ - lib/geogle/error.rb
172
+ - lib/geogle/error_handler.rb
173
+ - lib/geogle/geocoder.rb
174
+ - lib/geogle/model.rb
175
+ - lib/geogle/model/address.rb
176
+ - lib/geogle/model/area.rb
177
+ - lib/geogle/model/coordinates.rb
178
+ - lib/geogle/model/geometry.rb
179
+ - lib/geogle/model/place.rb
180
+ - lib/geogle/parametizer.rb
181
+ - lib/geogle/parser.rb
182
+ - lib/geogle/url.rb
183
+ - lib/geogle/url_builder.rb
184
+ - lib/geogle/version.rb
185
+ - spec/fixtures/cassettes/geocode_by_address.yml
186
+ - spec/fixtures/cassettes/geocode_by_latlng.yml
187
+ - spec/geogle/client_spec.rb
188
+ - spec/geogle/parser_spec.rb
189
+ - spec/geogle/url_builder_spec.rb
190
+ - spec/spec_helper.rb
191
+ - wercker.yml
192
+ homepage: ''
193
+ licenses:
194
+ - MIT
195
+ metadata: {}
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ requirements: []
211
+ rubyforge_project:
212
+ rubygems_version: 2.4.1
213
+ signing_key:
214
+ specification_version: 4
215
+ summary: Provides a Ruby interface to geocode requests to Google Maps API V3 and parse
216
+ the response
217
+ test_files:
218
+ - spec/fixtures/cassettes/geocode_by_address.yml
219
+ - spec/fixtures/cassettes/geocode_by_latlng.yml
220
+ - spec/geogle/client_spec.rb
221
+ - spec/geogle/parser_spec.rb
222
+ - spec/geogle/url_builder_spec.rb
223
+ - spec/spec_helper.rb