tankard 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +15 -0
- data/.travis.yml +41 -4
- data/CHANGELOG.md +8 -1
- data/Rakefile +3 -3
- data/lib/tankard.rb +18 -15
- data/lib/tankard/api/beer.rb +30 -39
- data/lib/tankard/api/beers.rb +15 -20
- data/lib/tankard/api/request/get.rb +13 -17
- data/lib/tankard/api/search.rb +32 -41
- data/lib/tankard/api/style.rb +19 -23
- data/lib/tankard/api/styles.rb +10 -12
- data/lib/tankard/api/utils/find.rb +15 -12
- data/lib/tankard/api/utils/page_finders.rb +42 -37
- data/lib/tankard/client.rb +10 -6
- data/lib/tankard/configuration.rb +18 -15
- data/lib/tankard/error.rb +4 -1
- data/lib/tankard/request.rb +23 -22
- data/lib/tankard/version.rb +4 -1
- data/spec/shared_examples_for_find.rb +22 -22
- data/spec/spec_helper.rb +2 -2
- data/spec/tankard/api/beer_spec.rb +113 -86
- data/spec/tankard/api/beers_spec.rb +34 -34
- data/spec/tankard/api/search_spec.rb +106 -95
- data/spec/tankard/api/style_spec.rb +102 -21
- data/spec/tankard/api/styles_spec.rb +6 -6
- data/spec/tankard/api/utils/find_spec.rb +10 -10
- data/spec/tankard/api/utils/page_finders_spec.rb +53 -50
- data/spec/tankard/client_spec.rb +42 -42
- data/spec/tankard/request_spec.rb +26 -24
- data/spec/tankard_spec.rb +21 -19
- data/tankard.gemspec +24 -22
- metadata +45 -58
@@ -1,49 +1,51 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Tankard::Request do
|
4
|
-
|
5
|
-
let(:request) { Tankard::Request.new("abc123") }
|
6
4
|
|
7
|
-
|
5
|
+
let(:request) { Tankard::Request.new('abc123') }
|
8
6
|
|
9
|
-
|
7
|
+
describe '#get' do
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
context 'request status is not 200 or 401' do
|
10
|
+
|
11
|
+
it 'raises a Tankard::Error::HttpError' do
|
12
|
+
stub_get('test?key=abc123').to_return(status: [404, 'Not Found'])
|
13
|
+
expect { request.get('test') }.to raise_error(Tankard::Error::HttpError)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
context
|
17
|
+
context 'request status is 401' do
|
18
18
|
|
19
|
-
it
|
20
|
-
stub_get(
|
21
|
-
expect { request.get(
|
19
|
+
it 'raises a Tankard::Error::ApiKeyUnauthorized error' do
|
20
|
+
stub_get('test?key=abc123').to_return(status: [401, 'Unauthorized'])
|
21
|
+
expect { request.get('test') }.to raise_error(Tankard::Error::ApiKeyUnauthorized)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
context
|
25
|
+
context 'request status is 200' do
|
26
26
|
|
27
|
-
it
|
28
|
-
|
29
|
-
|
27
|
+
it 'does not raise a Tankard::Error::HttpError' do
|
28
|
+
# default status when a body is set is 200.
|
29
|
+
# setting it here for readability
|
30
|
+
stub_get('test?key=abc123').to_return(status: 200, body: '{}')
|
31
|
+
expect { request.get('test') }.not_to raise_error
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
33
|
-
context
|
35
|
+
context 'valid json response' do
|
34
36
|
|
35
|
-
it
|
36
|
-
stub_get(
|
37
|
-
expect(request.get(
|
37
|
+
it 'returns the json decoded body' do
|
38
|
+
stub_get('test?key=abc123').to_return(body: '{ "beer_name": "Smoked Porter" }')
|
39
|
+
expect(request.get('test')['beer_name']).to eql('Smoked Porter')
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
41
|
-
context
|
43
|
+
context 'invalid json response' do
|
42
44
|
|
43
|
-
it
|
44
|
-
stub_get(
|
45
|
-
expect { request.get(
|
45
|
+
it 'raises an error' do
|
46
|
+
stub_get('test?key=abc123').to_return(body: '{')
|
47
|
+
expect { request.get('test') }.to raise_error(Tankard::Error::LoadError)
|
46
48
|
end
|
47
49
|
end
|
48
50
|
end
|
49
|
-
end
|
51
|
+
end
|
data/spec/tankard_spec.rb
CHANGED
@@ -2,60 +2,62 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Tankard do
|
4
4
|
|
5
|
-
context
|
5
|
+
context 'when delegating to a client' do
|
6
6
|
|
7
7
|
before do
|
8
|
-
Tankard::Client.any_instance.stub(:test).and_return(
|
8
|
+
Tankard::Client.any_instance.stub(:test).and_return('testing')
|
9
9
|
end
|
10
10
|
|
11
|
-
it
|
12
|
-
expect(Tankard.test).to eql(
|
11
|
+
it 'delegates to Tankard::Client' do
|
12
|
+
expect(Tankard.test).to eql('testing')
|
13
13
|
end
|
14
14
|
|
15
|
-
describe
|
15
|
+
describe '.respond_to?' do
|
16
16
|
|
17
|
-
it
|
17
|
+
it 'delegates to Tankard::Client' do
|
18
18
|
expect(Tankard.respond_to?(:test)).to be_true
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
describe
|
22
|
+
describe '.client' do
|
23
23
|
|
24
|
-
it
|
24
|
+
it 'returns a Tankard::Client' do
|
25
25
|
expect(Tankard.client).to be_kind_of(Tankard::Client)
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
28
|
+
it 'does not create a new Tankard::Client when one is already created' do
|
29
29
|
client = Tankard.client
|
30
30
|
expect(Tankard.client).to eql(client)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
describe
|
35
|
+
describe '.configuration' do
|
36
36
|
|
37
|
-
context
|
37
|
+
context 'when invalid configuration data is provided' do
|
38
38
|
|
39
|
-
it
|
40
|
-
expect
|
39
|
+
it 'raises a configuration error' do
|
40
|
+
expected_error = expect do
|
41
41
|
Tankard.configure do |config|
|
42
42
|
config.api_key = 1234
|
43
43
|
end
|
44
|
-
|
44
|
+
end
|
45
|
+
|
46
|
+
expected_error.to raise_error(Tankard::Error::ConfigurationError)
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
48
|
-
context
|
50
|
+
context 'when valid configuration data is provided' do
|
49
51
|
|
50
52
|
before do
|
51
53
|
Tankard.configure do |config|
|
52
|
-
config.api_key =
|
54
|
+
config.api_key = 'abc123'
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
|
-
it
|
57
|
-
expect(Tankard.instance_variable_get(:"@api_key")).to eql(
|
58
|
+
it 'sets the api_key' do
|
59
|
+
expect(Tankard.instance_variable_get(:"@api_key")).to eql('abc123')
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
61
|
-
end
|
63
|
+
end
|
data/tankard.gemspec
CHANGED
@@ -4,30 +4,32 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'tankard/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'tankard'
|
8
8
|
spec.version = Tankard::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description = %q
|
12
|
-
spec.summary = %q
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['Matthew Shafer']
|
10
|
+
spec.email = ['matthewshafer@mac.com']
|
11
|
+
spec.description = %q(Connector to the BreweryDB api)
|
12
|
+
spec.summary = %q(Allows easy quering to the breweryDB api)
|
13
|
+
spec.homepage = 'https://github.com/matthewshafer/tankard'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.files = `git ls-files`.split(
|
17
|
-
spec.executables = spec.files.grep(
|
18
|
-
spec.test_files = spec.files.grep(
|
19
|
-
spec.require_paths = [
|
16
|
+
spec.files = `git ls-files`.split($RS)
|
17
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(/^spec\//)
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'rake'
|
22
|
+
spec.add_development_dependency 'rspec', '~> 2.14'
|
23
|
+
spec.add_development_dependency 'webmock', '~> 1.16'
|
24
|
+
spec.add_development_dependency 'simplecov', '~> 0.8'
|
25
|
+
spec.add_development_dependency 'coveralls', '~> 0.7'
|
26
|
+
spec.add_development_dependency 'pry', '~> 0.9.12'
|
27
|
+
spec.add_development_dependency 'rubysl', '~> 2.0' if RUBY_ENGINE == 'rbx'
|
28
|
+
spec.add_development_dependency 'json', '~> 1.8' if RUBY_ENGINE == 'rbx'
|
29
|
+
spec.add_development_dependency 'rubinius-coverage', '~> 2.0' if RUBY_ENGINE == 'rbx'
|
28
30
|
|
29
|
-
spec.add_dependency
|
30
|
-
spec.add_dependency
|
31
|
-
spec.add_dependency
|
32
|
-
spec.add_dependency
|
31
|
+
spec.add_dependency 'atomic', '~> 1.1'
|
32
|
+
spec.add_dependency 'httpclient', '~> 2.3'
|
33
|
+
spec.add_dependency 'multi_json', '~> 1.8'
|
34
|
+
spec.add_dependency 'hashie', '~> 2.0'
|
33
35
|
end
|
metadata
CHANGED
@@ -1,169 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tankard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Shafer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.3'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.3'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- -
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
19
|
version: '0'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- -
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rspec
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - ~>
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.
|
33
|
+
version: '2.14'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - ~>
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
40
|
+
version: '2.14'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: webmock
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - ~>
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
47
|
+
version: '1.16'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - ~>
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
54
|
+
version: '1.16'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: simplecov
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - ~>
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
61
|
+
version: '0.8'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - ~>
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
68
|
+
version: '0.8'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: coveralls
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - ~>
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
75
|
+
version: '0.7'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - ~>
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
82
|
+
version: '0.7'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: pry
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- - ~>
|
87
|
+
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: 0.9.12
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- - ~>
|
94
|
+
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: 0.9.12
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: atomic
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- - ~>
|
101
|
+
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.1
|
103
|
+
version: '1.1'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- - ~>
|
108
|
+
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.1
|
110
|
+
version: '1.1'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: httpclient
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
|
-
- - ~>
|
115
|
+
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: 2.3
|
117
|
+
version: '2.3'
|
132
118
|
type: :runtime
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- - ~>
|
122
|
+
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: 2.3
|
124
|
+
version: '2.3'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: multi_json
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
|
-
- - ~>
|
129
|
+
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
131
|
+
version: '1.8'
|
146
132
|
type: :runtime
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
|
-
- - ~>
|
136
|
+
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
|
-
version: 1.
|
138
|
+
version: '1.8'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
140
|
name: hashie
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- - ~>
|
143
|
+
- - "~>"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version: 2.0
|
145
|
+
version: '2.0'
|
160
146
|
type: :runtime
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
|
-
- - ~>
|
150
|
+
- - "~>"
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version: 2.0
|
152
|
+
version: '2.0'
|
167
153
|
description: Connector to the BreweryDB api
|
168
154
|
email:
|
169
155
|
- matthewshafer@mac.com
|
@@ -171,9 +157,10 @@ executables: []
|
|
171
157
|
extensions: []
|
172
158
|
extra_rdoc_files: []
|
173
159
|
files:
|
174
|
-
- .gitignore
|
175
|
-
- .rspec
|
176
|
-
- .
|
160
|
+
- ".gitignore"
|
161
|
+
- ".rspec"
|
162
|
+
- ".rubocop.yml"
|
163
|
+
- ".travis.yml"
|
177
164
|
- CHANGELOG.md
|
178
165
|
- Gemfile
|
179
166
|
- LICENSE.txt
|
@@ -216,17 +203,17 @@ require_paths:
|
|
216
203
|
- lib
|
217
204
|
required_ruby_version: !ruby/object:Gem::Requirement
|
218
205
|
requirements:
|
219
|
-
- -
|
206
|
+
- - ">="
|
220
207
|
- !ruby/object:Gem::Version
|
221
208
|
version: '0'
|
222
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
210
|
requirements:
|
224
|
-
- -
|
211
|
+
- - ">="
|
225
212
|
- !ruby/object:Gem::Version
|
226
213
|
version: '0'
|
227
214
|
requirements: []
|
228
215
|
rubyforge_project:
|
229
|
-
rubygems_version: 2.
|
216
|
+
rubygems_version: 2.2.2
|
230
217
|
signing_key:
|
231
218
|
specification_version: 4
|
232
219
|
summary: Allows easy quering to the breweryDB api
|