yelp 2.1.3 → 2.1.4
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.
- checksums.yaml +4 -4
- data/README.md +1 -10
- data/lib/yelp/endpoint/business.rb +2 -1
- data/lib/yelp/endpoint/search.rb +1 -1
- data/lib/yelp/version.rb +1 -1
- data/spec/yelp/client_spec.rb +5 -5
- data/spec/yelp/configuration_spec.rb +11 -11
- data/spec/yelp/endpoint/business_spec.rb +14 -14
- data/spec/yelp/endpoint/phone_search_spec.rb +3 -2
- data/spec/yelp/endpoint/search_spec.rb +24 -19
- data/spec/yelp/error_spec.rb +5 -5
- data/spec/yelp/responses/base_spec.rb +13 -9
- data/spec/yelp/yelp_spec.rb +4 -4
- data/yelp.gemspec +1 -1
- metadata +3 -4
- data/.ruby-env.example +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3359fa1baa8262abf574a174c749cfd2b4132d77
|
4
|
+
data.tar.gz: c7f7b07c2af49c4ba54a6e98359f989ffd37b580
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c83dc81b6f8f1304832638e887df98c01f9505fcb35ab79205335a9eefdfe35e94181da6a800c0b7185b580943c529af7bdd06e2946c9b69bd1ee0e7f6bab299
|
7
|
+
data.tar.gz: 72b5d04e94f14c9079625b851c9965de12081700989050196f75deab5ee05e5b8e7e5edc461b51f7873daf1188f9bacad3cd484ce60f2d6bcf7d7c8a9cc4d66a
|
data/README.md
CHANGED
@@ -160,19 +160,10 @@ For specific response values check out the docs for the [Search API](http://www.
|
|
160
160
|
4. Push to the branch (`git push origin my-new-feature`)
|
161
161
|
5. Create new Pull Request
|
162
162
|
|
163
|
-
Our rspec test suite expects environment variables to be populated with your Yelp API Access Tokens.
|
164
|
-
|
165
|
-
```
|
166
|
-
YELP_CONSUMER_KEY=<YOUR_YELP_CONSUMER_KEY>
|
167
|
-
YELP_CONSUMER_SECRET=<YOUR_YELP_CONSUMER_SECRET>
|
168
|
-
YELP_TOKEN=<YOUR_YELP_TOKEN>
|
169
|
-
YELP_TOKEN_SECRET=<YOUR_YELP_TOKEN_SECRET>
|
170
|
-
```
|
163
|
+
Our rspec test suite expects environment variables to be populated with your Yelp API Access Tokens.
|
171
164
|
|
172
165
|
You can generate and find your Access Tokens at [https://www.yelp.com/developers/manage_api_keys](https://www.yelp.com/developers/manage_api_keys).
|
173
166
|
|
174
|
-
(We've included `.ruby-env.example` to get you started. Be careful to remove the `.example`.)
|
175
|
-
|
176
167
|
### Git Workflow
|
177
168
|
|
178
169
|
We are using the [git flow](http://nvie.com/posts/a-successful-git-branching-model/)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'erb'
|
1
2
|
require 'json'
|
2
3
|
|
3
4
|
require 'yelp/responses/business'
|
@@ -37,7 +38,7 @@ module Yelp
|
|
37
38
|
# @param locale [Hash] a hash of supported locale-related parameters
|
38
39
|
# @return [Faraday::Response] the raw response back from the connection
|
39
40
|
def business_request(id, locale = {})
|
40
|
-
result = @client.connection.get PATH + id, locale
|
41
|
+
result = @client.connection.get PATH + ERB::Util.url_encode(id), locale
|
41
42
|
Error.check_for_error(result)
|
42
43
|
result
|
43
44
|
end
|
data/lib/yelp/endpoint/search.rb
CHANGED
@@ -17,7 +17,7 @@ module Yelp
|
|
17
17
|
# Take a search_request and return the formatted/structured
|
18
18
|
# response from the API
|
19
19
|
#
|
20
|
-
# @param location [String] a string location of the
|
20
|
+
# @param location [String] a string location of the neighborhood,
|
21
21
|
# address, or city
|
22
22
|
# @param params [Hash] a hash that corresponds to params on the API:
|
23
23
|
# http://www.yelp.com/developers/documentation/v2/search_api#searchGP
|
data/lib/yelp/version.rb
CHANGED
data/spec/yelp/client_spec.rb
CHANGED
@@ -16,8 +16,8 @@ describe Yelp::Client do
|
|
16
16
|
subject { client }
|
17
17
|
|
18
18
|
context 'with valid configuration' do
|
19
|
-
its(:configuration) {
|
20
|
-
its(:configuration) {
|
19
|
+
its(:configuration) { is_expected.to be_a Yelp::Configuration }
|
20
|
+
its(:configuration) { is_expected.to be_frozen }
|
21
21
|
|
22
22
|
it 'should not be reconfigurable' do
|
23
23
|
expect {
|
@@ -44,7 +44,7 @@ describe Yelp::Client do
|
|
44
44
|
|
45
45
|
it 'should set the configuration values' do
|
46
46
|
valid_api_keys.each do |key, value|
|
47
|
-
expect(client.configuration.send(key)).to
|
47
|
+
expect(client.configuration.send(key)).to eq(value)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -52,8 +52,8 @@ describe Yelp::Client do
|
|
52
52
|
expect { configure_client_with_api_keys(valid_api_keys) }.to raise_error
|
53
53
|
end
|
54
54
|
|
55
|
-
it {
|
56
|
-
it {
|
55
|
+
it { is_expected.to be_a Yelp::Configuration }
|
56
|
+
it { is_expected.to be_frozen }
|
57
57
|
end
|
58
58
|
|
59
59
|
context 'with invalid configuration' do
|
@@ -10,35 +10,35 @@ describe Yelp::Configuration do
|
|
10
10
|
subject { configuration }
|
11
11
|
|
12
12
|
Yelp::Configuration::AUTH_KEYS.each do |auth_key|
|
13
|
-
its(auth_key) {
|
13
|
+
its(auth_key) { is_expected.to eq api_keys[auth_key] }
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
describe '#auth_keys' do
|
18
18
|
subject { configuration.auth_keys }
|
19
|
-
it {
|
19
|
+
it { is_expected.to eq api_keys }
|
20
20
|
end
|
21
21
|
|
22
|
-
describe
|
22
|
+
describe '#valid?' do
|
23
23
|
subject { configuration.valid? }
|
24
24
|
|
25
|
-
context
|
26
|
-
it {
|
25
|
+
context 'when keys are valid' do
|
26
|
+
it { is_expected.to be true }
|
27
27
|
end
|
28
28
|
|
29
|
-
context
|
29
|
+
context 'when keys are not set' do
|
30
30
|
let(:api_keys) { Hash.new }
|
31
|
-
it {
|
31
|
+
it { is_expected.to be false }
|
32
32
|
end
|
33
33
|
|
34
|
-
context
|
34
|
+
context 'when a key is an empty string' do
|
35
35
|
let(:api_keys) { valid_api_keys.merge(consumer_key: '') }
|
36
|
-
it {
|
36
|
+
it { is_expected.to be false }
|
37
37
|
end
|
38
38
|
|
39
|
-
context
|
39
|
+
context 'when a key is nil' do
|
40
40
|
let(:api_keys) { valid_api_keys.merge(token: nil) }
|
41
|
-
it {
|
41
|
+
it { is_expected.to be false }
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -6,7 +6,7 @@ describe Yelp::Endpoint::Business do
|
|
6
6
|
let(:api_keys) { real_api_keys }
|
7
7
|
let(:business) { 'yelp-san-francisco' }
|
8
8
|
let(:client) { Yelp::Client.new(api_keys) }
|
9
|
-
let(:locale) {
|
9
|
+
let(:locale) { {lang: 'fr'} }
|
10
10
|
|
11
11
|
describe '#business' do
|
12
12
|
subject {
|
@@ -15,21 +15,21 @@ describe Yelp::Endpoint::Business do
|
|
15
15
|
end
|
16
16
|
}
|
17
17
|
|
18
|
-
it {
|
19
|
-
its('business.name') {
|
20
|
-
its('business.url') {
|
21
|
-
end
|
18
|
+
it { is_expected.to be_a(Yelp::Response::Business) }
|
19
|
+
its('business.name') { is_expected.to eq('Yelp') }
|
20
|
+
its('business.url') { is_expected.to include('yelp.com') }
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
context 'with locale' do
|
23
|
+
subject {
|
24
|
+
VCR.use_cassette('business_locale') do
|
25
|
+
client.business(business, locale)
|
26
|
+
end
|
27
|
+
}
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
it { is_expected.to be_a(Yelp::Response::Business) }
|
30
|
+
its('business.name') { is_expected.to eq('Yelp') }
|
31
|
+
its('business.url') { is_expected.to include('yelp.fr') }
|
32
|
+
end
|
33
33
|
end
|
34
34
|
|
35
35
|
describe 'errors' do
|
@@ -5,7 +5,7 @@ describe Yelp::Endpoint::PhoneSearch do
|
|
5
5
|
|
6
6
|
let(:api_keys) { real_api_keys }
|
7
7
|
let(:phone) { '+14159083801' }
|
8
|
-
let(:options) { {
|
8
|
+
let(:options) { {code: 'US', category: 'localflavor'} }
|
9
9
|
let(:client) { Yelp::Client.new(api_keys) }
|
10
10
|
|
11
11
|
describe '#phone_search' do
|
@@ -15,7 +15,8 @@ describe Yelp::Endpoint::PhoneSearch do
|
|
15
15
|
end
|
16
16
|
}
|
17
17
|
|
18
|
-
it {
|
18
|
+
it { is_expected.to be_a(Yelp::Response::PhoneSearch) }
|
19
|
+
|
19
20
|
it 'should get results' do
|
20
21
|
expect(results.businesses.size).to be > 0
|
21
22
|
end
|
@@ -5,8 +5,7 @@ describe Yelp::Endpoint::Search do
|
|
5
5
|
|
6
6
|
let(:api_keys) { real_api_keys }
|
7
7
|
let(:location) { 'San Francisco' }
|
8
|
-
let(:params) {
|
9
|
-
category_filter: 'discgolf'] }
|
8
|
+
let(:params) { {term: 'restaurants', category_filter: 'discgolf'} }
|
10
9
|
let(:client) { Yelp::Client.new(api_keys) }
|
11
10
|
|
12
11
|
describe '#search' do
|
@@ -16,17 +15,22 @@ describe Yelp::Endpoint::Search do
|
|
16
15
|
end
|
17
16
|
}
|
18
17
|
|
19
|
-
it {
|
18
|
+
it { is_expected.to be_a(Yelp::Response::Search) }
|
19
|
+
|
20
20
|
it 'should get results' do
|
21
21
|
expect(results.businesses.size).to be > 0
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
describe '#
|
26
|
-
let(:bounding_box) {
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
describe '#search_by_bounding_box' do
|
26
|
+
let(:bounding_box) {
|
27
|
+
{
|
28
|
+
sw_latitude: 37.7577,
|
29
|
+
sw_longitude: -122.4376,
|
30
|
+
ne_latitude: 37.785381,
|
31
|
+
ne_longitude: -122.391681,
|
32
|
+
}
|
33
|
+
}
|
30
34
|
|
31
35
|
subject(:results) {
|
32
36
|
VCR.use_cassette('search_bounding_box') do
|
@@ -37,11 +41,16 @@ describe Yelp::Endpoint::Search do
|
|
37
41
|
it 'should get results' do
|
38
42
|
expect(results.businesses.size).to be > 0
|
39
43
|
end
|
44
|
+
|
45
|
+
context 'when params are empty' do
|
46
|
+
subject { -> { client.search_by_bounding_box({}, params) } }
|
47
|
+
|
48
|
+
it { is_expected.to raise_error(Yelp::Error::BoundingBoxNotComplete) }
|
49
|
+
end
|
40
50
|
end
|
41
51
|
|
42
52
|
describe '#search_by_coordinates' do
|
43
|
-
let(:coordinates) {
|
44
|
-
longitude: -122.4376] }
|
53
|
+
let(:coordinates) { {latitude: 37.7577, longitude: -122.4376} }
|
45
54
|
|
46
55
|
subject(:results) {
|
47
56
|
VCR.use_cassette('search_by_coordinates') do
|
@@ -52,19 +61,15 @@ describe Yelp::Endpoint::Search do
|
|
52
61
|
it 'should get results' do
|
53
62
|
expect(results.businesses.size).to be > 0
|
54
63
|
end
|
55
|
-
end
|
56
64
|
|
57
|
-
|
58
|
-
|
59
|
-
it 'raises when #search_by_coordinates params are empty' do
|
60
|
-
expect { client.search_by_coordinates({}, params) }.to raise_error(Yelp::Error::MissingLatLng)
|
61
|
-
end
|
65
|
+
context 'when params are empty' do
|
66
|
+
subject { -> { client.search_by_coordinates({}, params) } }
|
62
67
|
|
63
|
-
it
|
64
|
-
expect { client.search_by_bounding_box({}, params) }.to raise_error(Yelp::Error::BoundingBoxNotComplete)
|
65
|
-
end
|
68
|
+
it { is_expected.to raise_error(Yelp::Error::MissingLatLng) }
|
66
69
|
end
|
70
|
+
end
|
67
71
|
|
72
|
+
describe 'errors' do
|
68
73
|
it_behaves_like 'a request error' do
|
69
74
|
let(:request) { client.search(location) }
|
70
75
|
end
|
data/spec/yelp/error_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Yelp::Error do
|
4
|
-
context '
|
5
|
-
let(:response_body) {
|
4
|
+
context 'from_request' do
|
5
|
+
let(:response_body) { '{"error": {"text": "error message", "id": "INTERNAL_ERROR"}}' }
|
6
6
|
let(:good_response) { double('response', status: 200) }
|
7
7
|
let(:bad_response) { double('response', status: 400, body: response_body) }
|
8
8
|
|
@@ -20,7 +20,7 @@ describe Yelp::Error do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
context 'invalid parameter' do
|
23
|
-
let(:response_body) {
|
23
|
+
let(:response_body) { '{"error": {"text": "One or more parameters are invalid in request", "id": "INVALID_PARAMETER", "field": "oauth_token"}}' }
|
24
24
|
let(:bad_response) { double('response', status: 400, body: response_body) }
|
25
25
|
|
26
26
|
it 'should raise an invalid response error' do
|
@@ -34,9 +34,9 @@ describe Yelp::Error do
|
|
34
34
|
Yelp::Error.check_for_error(bad_response)
|
35
35
|
rescue Yelp::Error::InvalidParameter => e
|
36
36
|
# verifies that StandardError message attribute is available
|
37
|
-
expect(e.message).to eq(
|
37
|
+
expect(e.message).to eq('One or more parameters are invalid in request: oauth_token')
|
38
38
|
# verifies that we can get access to the specific field that was invalid
|
39
|
-
expect(e.field).to eq(
|
39
|
+
expect(e.field).to eq('oauth_token')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -2,21 +2,25 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Yelp::Response::Base do
|
4
4
|
describe '#initialize' do
|
5
|
-
let(:json) {
|
5
|
+
let(:json) { {'a' => 10, 'b' => 20} }
|
6
6
|
|
7
|
-
subject(:base) {
|
7
|
+
subject(:base) { Yelp::Response::Base.new(json) }
|
8
8
|
|
9
|
-
it {
|
9
|
+
it { is_expected.to be_a Yelp::Response::Base }
|
10
10
|
|
11
11
|
it 'should create variables' do
|
12
|
-
expect(base.instance_variable_get(
|
13
|
-
expect(base.instance_variable_get(
|
12
|
+
expect(base.instance_variable_get(:@a)).to eq 10
|
13
|
+
expect(base.instance_variable_get(:@b)).to eq 20
|
14
14
|
end
|
15
|
-
end
|
16
15
|
|
17
|
-
|
18
|
-
|
16
|
+
context 'when json is nil' do
|
17
|
+
let(:json) { nil }
|
18
|
+
|
19
|
+
it { is_expected.to be_a Yelp::Response::Base }
|
19
20
|
|
20
|
-
|
21
|
+
it 'should not have variables' do
|
22
|
+
expect(base.instance_variable_get(:@a)).to be nil
|
23
|
+
end
|
24
|
+
end
|
21
25
|
end
|
22
26
|
end
|
data/spec/yelp/yelp_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Yelp do
|
4
|
-
describe
|
4
|
+
describe '::client' do
|
5
5
|
subject { Yelp.client }
|
6
6
|
|
7
|
-
it {
|
8
|
-
its(:configuration) {
|
7
|
+
it { is_expected.to be_a Yelp::Client }
|
8
|
+
its(:configuration) { is_expected.to be nil }
|
9
9
|
end
|
10
|
-
end
|
10
|
+
end
|
data/yelp.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>=
|
21
|
+
spec.required_ruby_version = '>= 2.0.0'
|
22
22
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0', '>= 10.0.0'
|
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.1.
|
4
|
+
version: 2.1.4
|
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: 2016-
|
13
|
+
date: 2016-11-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -211,7 +211,6 @@ extensions: []
|
|
211
211
|
extra_rdoc_files: []
|
212
212
|
files:
|
213
213
|
- ".gitignore"
|
214
|
-
- ".ruby-env.example"
|
215
214
|
- ".ruby-gemset"
|
216
215
|
- ".ruby-version"
|
217
216
|
- ".travis.yml"
|
@@ -274,7 +273,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
274
273
|
requirements:
|
275
274
|
- - ">="
|
276
275
|
- !ruby/object:Gem::Version
|
277
|
-
version:
|
276
|
+
version: 2.0.0
|
278
277
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
278
|
requirements:
|
280
279
|
- - ">="
|
data/.ruby-env.example
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
# Replace <THESE_VALUES> with yours from
|
2
|
-
# https://www.yelp.com/developers/manage_api_keys (don't include <brackets>).
|
3
|
-
YELP_CONSUMER_KEY=<YOUR_YELP_CONSUMER_KEY>
|
4
|
-
YELP_CONSUMER_SECRET=<YOUR_YELP_CONSUMER_SECRET>
|
5
|
-
YELP_TOKEN=<YOUR_YELP_TOKEN>
|
6
|
-
YELP_TOKEN_SECRET=<YOUR_YELP_TOKEN_SECRET>
|