yelp 2.0.7 → 2.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/lib/yelp/client.rb +1 -2
  4. data/lib/yelp/endpoint/business.rb +3 -1
  5. data/lib/yelp/endpoint/phone_search.rb +4 -1
  6. data/lib/yelp/endpoint/search.rb +5 -3
  7. data/lib/yelp/responses/base.rb +21 -0
  8. data/lib/yelp/responses/business.rb +14 -0
  9. data/lib/yelp/responses/models/business.rb +26 -0
  10. data/lib/yelp/responses/models/coordinate.rb +11 -0
  11. data/lib/yelp/responses/models/deal.rb +20 -0
  12. data/lib/yelp/responses/models/deal_option.rb +12 -0
  13. data/lib/yelp/responses/models/gift_certificate.rb +18 -0
  14. data/lib/yelp/responses/models/gift_certificate_option.rb +11 -0
  15. data/lib/yelp/responses/models/location.rb +19 -0
  16. data/lib/yelp/responses/models/rating.rb +11 -0
  17. data/lib/yelp/responses/models/region.rb +20 -0
  18. data/lib/yelp/responses/models/region_center.rb +11 -0
  19. data/lib/yelp/responses/models/region_span.rb +11 -0
  20. data/lib/yelp/responses/models/review.rb +12 -0
  21. data/lib/yelp/responses/models/user.rb +11 -0
  22. data/lib/yelp/responses/phone_search.rb +18 -0
  23. data/lib/yelp/responses/search.rb +18 -0
  24. data/lib/yelp/version.rb +1 -1
  25. data/spec/fixtures/vcr_cassettes/business.yml +52 -41
  26. data/spec/fixtures/vcr_cassettes/phone_search.yml +35 -28
  27. data/spec/fixtures/vcr_cassettes/search.yml +360 -332
  28. data/spec/fixtures/vcr_cassettes/search_bounding_box.yml +349 -327
  29. data/spec/fixtures/vcr_cassettes/search_by_coordinates.yml +361 -355
  30. data/spec/yelp/endpoint/business_spec.rb +2 -2
  31. data/spec/yelp/endpoint/phone_search_spec.rb +1 -1
  32. data/spec/yelp/endpoint/search_spec.rb +1 -1
  33. data/spec/yelp/responses/base_spec.rb +22 -0
  34. data/tasks/console.rake +2 -2
  35. data/yelp.gemspec +1 -1
  36. metadata +24 -7
  37. data/lib/yelp/burst_struct.rb +0 -63
  38. data/spec/yelp/burst_struct_spec.rb +0 -155
@@ -14,8 +14,8 @@ describe Yelp::Endpoint::Business do
14
14
  end
15
15
  }
16
16
 
17
- it { should be_a(BurstStruct::Burst) }
18
- its(:name) { should eql('Yelp') }
17
+ it { should be_a(Yelp::Response::Business) }
18
+ its('business.name') { should eql('Yelp') }
19
19
  end
20
20
 
21
21
  describe 'errors' do
@@ -15,7 +15,7 @@ describe Yelp::Endpoint::PhoneSearch do
15
15
  end
16
16
  }
17
17
 
18
- it { should be_a(BurstStruct::Burst) }
18
+ it { should be_a(Yelp::Response::PhoneSearch) }
19
19
  it 'should get results' do
20
20
  expect(results.businesses.size).to be > 0
21
21
  end
@@ -16,7 +16,7 @@ describe Yelp::Endpoint::Search do
16
16
  end
17
17
  }
18
18
 
19
- it { should be_a(BurstStruct::Burst) }
19
+ it { should be_a(Yelp::Response::Search) }
20
20
  it 'should get results' do
21
21
  expect(results.businesses.size).to be > 0
22
22
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yelp::Response::Base do
4
+ describe '#initialize' do
5
+ let(:json) { Hash['a' => 10, 'b' => 20] }
6
+
7
+ subject(:base) { base = Yelp::Response::Base.new(json) }
8
+
9
+ it { should be_a(Yelp::Response::Base) }
10
+
11
+ it 'should create variables' do
12
+ expect(base.instance_variable_get('@a')).to eql 10
13
+ expect(base.instance_variable_get('@b')).to eql 20
14
+ end
15
+ end
16
+
17
+ describe '#initialize nil' do
18
+ subject(:base) { Yelp::Response::Base.new(nil) }
19
+
20
+ it { should be_a(Yelp::Response::Base) }
21
+ end
22
+ end
data/tasks/console.rake CHANGED
@@ -1,4 +1,4 @@
1
- desc "Open an irb session preloaded with this library"
1
+ desc "Open a pry session preloaded with this library"
2
2
  task :console do
3
3
  sh "pry --gem"
4
- end
4
+ end
data/yelp.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Tomer Elmalem', 'Justin Cunningham', 'Yelp']
10
10
  spec.email = ['telmalem@gmail.com', 'partnerships@yelp.com']
11
11
  spec.summary = %q{Ruby client library for the Yelp API}
12
- spec.description = 'Provides easy way to interact with the Yelp API in any kind of application'
12
+ spec.description = 'Provides an easy way to interact with the Yelp API in any kind of application'
13
13
  spec.homepage = 'https://github.com/Yelp/yelp-ruby'
14
14
  spec.license = 'MIT'
15
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yelp
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomer Elmalem
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-10-14 00:00:00.000000000 Z
13
+ date: 2015-10-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -202,7 +202,7 @@ dependencies:
202
202
  - - "~>"
203
203
  - !ruby/object:Gem::Version
204
204
  version: 0.3.1
205
- description: Provides easy way to interact with the Yelp API in any kind of application
205
+ description: Provides an easy way to interact with the Yelp API in any kind of application
206
206
  email:
207
207
  - telmalem@gmail.com
208
208
  - partnerships@yelp.com
@@ -220,13 +220,29 @@ files:
220
220
  - README.md
221
221
  - Rakefile
222
222
  - lib/yelp.rb
223
- - lib/yelp/burst_struct.rb
224
223
  - lib/yelp/client.rb
225
224
  - lib/yelp/configuration.rb
226
225
  - lib/yelp/endpoint/business.rb
227
226
  - lib/yelp/endpoint/phone_search.rb
228
227
  - lib/yelp/endpoint/search.rb
229
228
  - lib/yelp/error.rb
229
+ - lib/yelp/responses/base.rb
230
+ - lib/yelp/responses/business.rb
231
+ - lib/yelp/responses/models/business.rb
232
+ - lib/yelp/responses/models/coordinate.rb
233
+ - lib/yelp/responses/models/deal.rb
234
+ - lib/yelp/responses/models/deal_option.rb
235
+ - lib/yelp/responses/models/gift_certificate.rb
236
+ - lib/yelp/responses/models/gift_certificate_option.rb
237
+ - lib/yelp/responses/models/location.rb
238
+ - lib/yelp/responses/models/rating.rb
239
+ - lib/yelp/responses/models/region.rb
240
+ - lib/yelp/responses/models/region_center.rb
241
+ - lib/yelp/responses/models/region_span.rb
242
+ - lib/yelp/responses/models/review.rb
243
+ - lib/yelp/responses/models/user.rb
244
+ - lib/yelp/responses/phone_search.rb
245
+ - lib/yelp/responses/search.rb
230
246
  - lib/yelp/version.rb
231
247
  - spec/fixtures/vcr_cassettes/business.yml
232
248
  - spec/fixtures/vcr_cassettes/phone_search.yml
@@ -236,13 +252,13 @@ files:
236
252
  - spec/spec_helper.rb
237
253
  - spec/support/request_error.rb
238
254
  - spec/support/shared_configuration.rb
239
- - spec/yelp/burst_struct_spec.rb
240
255
  - spec/yelp/client_spec.rb
241
256
  - spec/yelp/configuration_spec.rb
242
257
  - spec/yelp/endpoint/business_spec.rb
243
258
  - spec/yelp/endpoint/phone_search_spec.rb
244
259
  - spec/yelp/endpoint/search_spec.rb
245
260
  - spec/yelp/error_spec.rb
261
+ - spec/yelp/responses/base_spec.rb
246
262
  - spec/yelp/yelp_spec.rb
247
263
  - tasks/console.rake
248
264
  - yelp.gemspec
@@ -266,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
282
  version: '0'
267
283
  requirements: []
268
284
  rubyforge_project:
269
- rubygems_version: 2.4.5
285
+ rubygems_version: 2.4.3
270
286
  signing_key:
271
287
  specification_version: 4
272
288
  summary: Ruby client library for the Yelp API
@@ -279,11 +295,12 @@ test_files:
279
295
  - spec/spec_helper.rb
280
296
  - spec/support/request_error.rb
281
297
  - spec/support/shared_configuration.rb
282
- - spec/yelp/burst_struct_spec.rb
283
298
  - spec/yelp/client_spec.rb
284
299
  - spec/yelp/configuration_spec.rb
285
300
  - spec/yelp/endpoint/business_spec.rb
286
301
  - spec/yelp/endpoint/phone_search_spec.rb
287
302
  - spec/yelp/endpoint/search_spec.rb
288
303
  - spec/yelp/error_spec.rb
304
+ - spec/yelp/responses/base_spec.rb
289
305
  - spec/yelp/yelp_spec.rb
306
+ has_rdoc:
@@ -1,63 +0,0 @@
1
- module BurstStruct
2
- class Burst
3
- def initialize(hash = {})
4
- @hash = hash
5
- end
6
-
7
- def keys
8
- @hash.keys
9
- end
10
-
11
- def method_missing(method_name, *arguments, &block)
12
- key = find_key(method_name)
13
-
14
- if key
15
- return_or_build_struct(key)
16
- else
17
- super
18
- end
19
- end
20
-
21
- def respond_to?(method_name, include_private = false)
22
- has_key?(method_name) || super
23
- end
24
-
25
- def self.convert_array(array)
26
- array.map do |item|
27
- case item
28
- when Hash
29
- Burst.new(item)
30
- when Array
31
- Burst.convert_array(item)
32
- else
33
- item
34
- end
35
- end
36
- end
37
-
38
- def to_json(options = {})
39
- JSON.generate(@hash)
40
- end
41
-
42
- def has_key?(method_name)
43
- !find_key(method_name).nil?
44
- end
45
-
46
- def raw_data
47
- @hash
48
- end
49
-
50
- private
51
-
52
- def return_or_build_struct(method_name)
53
- return Burst.new(@hash[method_name]) if @hash[method_name].is_a?(Hash)
54
- return Burst.convert_array(@hash[method_name]) if @hash[method_name].is_a?(Array)
55
- @hash[method_name]
56
- end
57
-
58
- def find_key(method_name)
59
- return method_name.to_sym if @hash.keys.include? method_name.to_sym
60
- return method_name.to_s if @hash.keys.include? method_name.to_s
61
- end
62
- end
63
- end
@@ -1,155 +0,0 @@
1
- require 'yelp/burst_struct'
2
-
3
- describe BurstStruct::Burst do
4
- describe '#keys' do
5
- subject(:struct) { BurstStruct::Burst.new(foo: 'bar', baz: 'qux') }
6
-
7
- it 'should return' do
8
- expect(struct.keys).to eql [:foo, :baz]
9
- end
10
- end
11
-
12
- describe '#foo' do
13
- subject(:struct) { BurstStruct::Burst.new(foo: 'bar') }
14
-
15
- context 'when a key exists' do
16
- it 'should return' do
17
- expect(struct.foo).to eql 'bar'
18
- end
19
-
20
- it { should have_key(:foo) }
21
- it { should have_key('foo') }
22
-
23
- it { should respond_to(:foo) }
24
- end
25
-
26
- context 'when a key does not exist' do
27
- it 'should not respond to it' do
28
- expect(struct.respond_to? :super_foo).to eql false
29
- end
30
-
31
- it { should_not have_key(:super_foo) }
32
- it { should_not have_key('super_foo') }
33
- end
34
- end
35
-
36
- context 'n deep nested hash' do
37
- let(:hash) { Hash[ futurama: { characters: { robots: { best: 'bender' } } } ] }
38
-
39
- subject(:struct) { BurstStruct::Burst.new(hash) }
40
-
41
- describe '#foo#bar#baz#biz' do
42
- it 'should return' do
43
- expect(struct.futurama.characters.robots.best).to eql 'bender'
44
- end
45
- end
46
- end
47
-
48
- context 'arrays' do
49
- let(:hash) { Hash[ businesses: [ { name: 'Yelp', location: 'San Francisco' },
50
- { name: 'Ice Cream', flavor: 'Chocolate' },
51
- [ { name: 'Moe', occupation: 'Bartender' } ] ] ] }
52
-
53
- subject(:struct) { BurstStruct::Burst.new(hash) }
54
-
55
- describe '#businesses[0].name' do
56
- it 'should return' do
57
- expect(struct.businesses[0].name).to eql 'Yelp'
58
- expect(struct.businesses[0].location).to eql 'San Francisco'
59
- end
60
- end
61
-
62
- describe '#business[1].name' do
63
- it 'should return' do
64
- expect(struct.businesses[1].name).to eql 'Ice Cream'
65
- expect(struct.businesses[1].flavor).to eql 'Chocolate'
66
- end
67
- end
68
-
69
- describe 'nested arrays' do
70
- it 'should parse arrays all the way down' do
71
- expect(struct.businesses[2][0].name).to eql 'Moe'
72
- end
73
- end
74
- end
75
-
76
- context 'large hash' do
77
- let(:hash) do
78
- { foo: 1,
79
- bar: {
80
- baz: 2,
81
- bender: {
82
- bending: {
83
- rodriguez: true
84
- }
85
- }
86
- },
87
- fry: [
88
- {past: true},
89
- {present: true},
90
- {future: true}
91
- ],
92
- turunga: 'leela',
93
- 'hubert' => 'farnsworth',
94
- zoidberg: [
95
- 'doctor',
96
- 'homeowner',
97
- 'moviestar'
98
- ]
99
- }
100
- end
101
-
102
- subject(:struct) { BurstStruct::Burst.new(hash) }
103
-
104
- it 'turns top level into a struct' do
105
- expect(struct.foo).to eql 1
106
- end
107
-
108
- it 'recursively creates structs all the way down the hash' do
109
- expect(struct.bar.baz).to equal 2
110
- expect(struct.bar.bender.bending.rodriguez).to eql true
111
- end
112
-
113
- it 'creates arrays with hashes into new structs' do
114
- expect(struct.fry[0].past).to eql true
115
- expect(struct.fry[1].present).to eql true
116
- expect(struct.fry[2].future).to eql true
117
- end
118
-
119
- it 'turns string keys into structs' do
120
- expect(struct.hubert).to eql 'farnsworth'
121
- end
122
-
123
- it 'should maintain arrays with non hashes' do
124
- expect(struct.zoidberg.size).to eql 3
125
- expect(struct.zoidberg[0]).to eql 'doctor'
126
- end
127
- end
128
-
129
- context 'deserialize' do
130
- let(:hash) do
131
- { name: 'Bender', company: 'Yelp', title: 'Bending Engineer' }
132
- end
133
-
134
- subject(:struct) { BurstStruct::Burst.new(hash) }
135
-
136
- it 'should deserialize to the same json' do
137
- expect(struct.to_json).to eql hash.to_json
138
- end
139
- end
140
-
141
- context 'struct with string keys' do
142
- subject(:struct) { BurstStruct::Burst.new('foo' => 'bar') }
143
-
144
- context 'when a key exists' do
145
- it 'should return' do
146
- expect(struct.foo).to eql 'bar'
147
- end
148
-
149
- it { should have_key(:foo) }
150
- it { should have_key('foo') }
151
-
152
- it { should respond_to(:foo) }
153
- end
154
- end
155
- end