luchadeer 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/Gemfile.lock +1 -1
- data/README.md +29 -33
- data/lib/luchadeer.rb +0 -12
- data/lib/luchadeer/api.rb +42 -22
- data/lib/luchadeer/client.rb +2 -2
- data/lib/luchadeer/error.rb +4 -11
- data/lib/luchadeer/resource.rb +14 -2
- data/lib/luchadeer/resources.rb +135 -0
- data/lib/luchadeer/search.rb +1 -9
- data/lib/luchadeer/version.rb +1 -1
- data/spec/luchadeer/resources_spec.rb +6 -0
- data/spec/luchadeer_spec.rb +3 -6
- data/spec/spec_helper.rb +3 -0
- data/spec/support/shared_resource.rb +40 -0
- data/spec/support/shared_searchable.rb +65 -0
- metadata +11 -57
- data/lib/luchadeer/api/characters.rb +0 -11
- data/lib/luchadeer/api/companies.rb +0 -11
- data/lib/luchadeer/api/concepts.rb +0 -11
- data/lib/luchadeer/api/franchises.rb +0 -11
- data/lib/luchadeer/api/games.rb +0 -11
- data/lib/luchadeer/api/locations.rb +0 -11
- data/lib/luchadeer/api/objects.rb +0 -11
- data/lib/luchadeer/api/people.rb +0 -11
- data/lib/luchadeer/api/videos.rb +0 -11
- data/lib/luchadeer/character.rb +0 -13
- data/lib/luchadeer/company.rb +0 -13
- data/lib/luchadeer/concept.rb +0 -13
- data/lib/luchadeer/franchise.rb +0 -13
- data/lib/luchadeer/game.rb +0 -13
- data/lib/luchadeer/location.rb +0 -13
- data/lib/luchadeer/object.rb +0 -13
- data/lib/luchadeer/person.rb +0 -13
- data/lib/luchadeer/video.rb +0 -13
- data/spec/luchadeer/api/characters_spec.rb +0 -28
- data/spec/luchadeer/api/companies_spec.rb +0 -28
- data/spec/luchadeer/api/concepts_spec.rb +0 -28
- data/spec/luchadeer/api/franchises_spec.rb +0 -28
- data/spec/luchadeer/api/games_spec.rb +0 -28
- data/spec/luchadeer/api/locations_spec.rb +0 -28
- data/spec/luchadeer/api/objects_spec.rb +0 -28
- data/spec/luchadeer/api/people_spec.rb +0 -28
- data/spec/luchadeer/api/videos_spec.rb +0 -28
- data/spec/luchadeer/character_spec.rb +0 -27
- data/spec/luchadeer/company_spec.rb +0 -27
- data/spec/luchadeer/concept_spec.rb +0 -27
- data/spec/luchadeer/franchise_spec.rb +0 -27
- data/spec/luchadeer/game_spec.rb +0 -27
- data/spec/luchadeer/location_spec.rb +0 -27
- data/spec/luchadeer/object_spec.rb +0 -27
- data/spec/luchadeer/person_spec.rb +0 -27
- data/spec/luchadeer/video_spec.rb +0 -27
data/spec/luchadeer_spec.rb
CHANGED
@@ -5,18 +5,15 @@ describe Luchadeer do
|
|
5
5
|
|
6
6
|
describe '.configure' do
|
7
7
|
it 'returns a Luchadeer::Client' do
|
8
|
-
expect(described_class.configure).to
|
8
|
+
expect(described_class.configure).to be_a Luchadeer::Client
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'passes opts hash to the new client' do
|
12
|
-
|
13
|
-
|
14
|
-
expect(described_class.configure(hash).api_key).to eq api_key
|
12
|
+
expect(described_class.configure(api_key: api_key).api_key).to eq api_key
|
15
13
|
end
|
16
14
|
|
17
15
|
it 'passes the given block to the new client' do
|
18
|
-
proc =
|
19
|
-
|
16
|
+
proc = ->(c) { c.api_key = api_key }
|
20
17
|
expect(described_class.configure(&proc).api_key).to eq api_key
|
21
18
|
end
|
22
19
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
shared_examples 'a resource' do
|
2
|
+
let(:singular) { described_class::SINGULAR }
|
3
|
+
let(:plural) { described_class::PLURAL }
|
4
|
+
let(:client) { Luchadeer::Client.new }
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
Luchadeer.client = client
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'is a Luchadeer::Resource' do
|
11
|
+
expect(described_class.new).to be_a Luchadeer::Resource
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '.find' do
|
15
|
+
it "forwards to the client find method with arguments" do
|
16
|
+
expect(client).to receive(singular).with(1, true)
|
17
|
+
described_class.find(1, true)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "forwards to the client find method with default refresh" do
|
21
|
+
expect(client).to receive(singular).with(1, false)
|
22
|
+
described_class.find(1)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.search' do
|
27
|
+
let(:query) { 'chie' }
|
28
|
+
|
29
|
+
it "forwards to the client search method with arguments" do
|
30
|
+
expect(client).to receive(plural).with(query, true)
|
31
|
+
described_class.search(query, true)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "forwards to the client search method with default refresh" do
|
35
|
+
expect(client).to receive(plural).with(query, false)
|
36
|
+
described_class.search(query)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Invoke this shared example group with a let statement passed in a block:
|
2
|
+
# let(:described_class) { ... }, the Luchadeer resource class that maps to the resource
|
3
|
+
|
4
|
+
shared_examples 'a searchable resource' do
|
5
|
+
let(:client) { Luchadeer::Client.new }
|
6
|
+
|
7
|
+
describe 'find method' do
|
8
|
+
let(:find) { described_class::SINGULAR }
|
9
|
+
let(:id) { 14850 }
|
10
|
+
let(:path) { %r(#{Luchadeer::Client::GIANT_BOMB}/#{find}/#{described_class::RESOURCE_ID}-#{id}) }
|
11
|
+
|
12
|
+
it 'requests the right url' do
|
13
|
+
stub = stub_request(:get, path).to_return(body: '{ }')
|
14
|
+
client.send(find, "#{id}")
|
15
|
+
expect(stub).to have_been_requested
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'returns the proper type of resource' do
|
19
|
+
stub_request(:get, path).to_return(body: '{ "results": { "key": "value"}}')
|
20
|
+
expect(client.send(find, "#{id}")).to be_instance_of described_class
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'caches responses' do
|
24
|
+
stub_request(:get, path).to_return(body: '{ }')
|
25
|
+
expect(client).to receive :cache
|
26
|
+
client.send(find, "#{id}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'search method' do
|
31
|
+
let(:search) { described_class::PLURAL }
|
32
|
+
let(:query) { 'chie' }
|
33
|
+
let(:path) { %r(#{Luchadeer::Client::GIANT_BOMB}/#{search}) }
|
34
|
+
|
35
|
+
context 'when invoked with a query' do
|
36
|
+
it 'requests the right url' do
|
37
|
+
stub = stub_request(:get, path)
|
38
|
+
.with(query: hash_including(filter: "name:#{query}"))
|
39
|
+
.to_return(body: '{ }')
|
40
|
+
client.send(search, query)
|
41
|
+
expect(stub).to have_been_requested
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when invoked without a query' do
|
46
|
+
it 'requests the right url' do
|
47
|
+
stub = stub_request(:get, path).to_return(body: '{ }')
|
48
|
+
client.send(search)
|
49
|
+
expect(stub).to have_been_requested
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'returns the proper type of resource' do
|
54
|
+
stub_request(:get, path).to_return(body: '{ "results": { "key": "value"}}')
|
55
|
+
expect(client.send(search, query)).to be_instance_of described_class
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'caches responses' do
|
59
|
+
stub_request(:get, path).to_return(body: '{ }')
|
60
|
+
expect(client).to receive :cache
|
61
|
+
client.send(search, query)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: luchadeer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Friedman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02
|
11
|
+
date: 2014-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -111,59 +111,27 @@ files:
|
|
111
111
|
- Rakefile
|
112
112
|
- lib/luchadeer.rb
|
113
113
|
- lib/luchadeer/api.rb
|
114
|
-
- lib/luchadeer/api/characters.rb
|
115
|
-
- lib/luchadeer/api/companies.rb
|
116
|
-
- lib/luchadeer/api/concepts.rb
|
117
|
-
- lib/luchadeer/api/franchises.rb
|
118
|
-
- lib/luchadeer/api/games.rb
|
119
|
-
- lib/luchadeer/api/locations.rb
|
120
|
-
- lib/luchadeer/api/objects.rb
|
121
|
-
- lib/luchadeer/api/people.rb
|
122
|
-
- lib/luchadeer/api/videos.rb
|
123
|
-
- lib/luchadeer/character.rb
|
124
114
|
- lib/luchadeer/client.rb
|
125
|
-
- lib/luchadeer/company.rb
|
126
|
-
- lib/luchadeer/concept.rb
|
127
115
|
- lib/luchadeer/error.rb
|
128
|
-
- lib/luchadeer/franchise.rb
|
129
|
-
- lib/luchadeer/game.rb
|
130
|
-
- lib/luchadeer/location.rb
|
131
116
|
- lib/luchadeer/middleware/follow_redirects.rb
|
132
117
|
- lib/luchadeer/middleware/parse_api_error.rb
|
133
118
|
- lib/luchadeer/middleware/parse_http_error.rb
|
134
119
|
- lib/luchadeer/middleware/parse_json.rb
|
135
|
-
- lib/luchadeer/object.rb
|
136
|
-
- lib/luchadeer/person.rb
|
137
120
|
- lib/luchadeer/resource.rb
|
121
|
+
- lib/luchadeer/resources.rb
|
138
122
|
- lib/luchadeer/search.rb
|
139
123
|
- lib/luchadeer/version.rb
|
140
|
-
- lib/luchadeer/video.rb
|
141
124
|
- luchadeer.gemspec
|
142
|
-
- spec/luchadeer/api/characters_spec.rb
|
143
|
-
- spec/luchadeer/api/companies_spec.rb
|
144
|
-
- spec/luchadeer/api/concepts_spec.rb
|
145
|
-
- spec/luchadeer/api/franchises_spec.rb
|
146
|
-
- spec/luchadeer/api/games_spec.rb
|
147
|
-
- spec/luchadeer/api/locations_spec.rb
|
148
|
-
- spec/luchadeer/api/objects_spec.rb
|
149
|
-
- spec/luchadeer/api/people_spec.rb
|
150
|
-
- spec/luchadeer/api/videos_spec.rb
|
151
125
|
- spec/luchadeer/api_spec.rb
|
152
|
-
- spec/luchadeer/character_spec.rb
|
153
126
|
- spec/luchadeer/client_spec.rb
|
154
|
-
- spec/luchadeer/company_spec.rb
|
155
|
-
- spec/luchadeer/concept_spec.rb
|
156
127
|
- spec/luchadeer/error_spec.rb
|
157
|
-
- spec/luchadeer/franchise_spec.rb
|
158
|
-
- spec/luchadeer/game_spec.rb
|
159
|
-
- spec/luchadeer/location_spec.rb
|
160
|
-
- spec/luchadeer/object_spec.rb
|
161
|
-
- spec/luchadeer/person_spec.rb
|
162
128
|
- spec/luchadeer/resource_spec.rb
|
129
|
+
- spec/luchadeer/resources_spec.rb
|
163
130
|
- spec/luchadeer/search_spec.rb
|
164
|
-
- spec/luchadeer/video_spec.rb
|
165
131
|
- spec/luchadeer_spec.rb
|
166
132
|
- spec/spec_helper.rb
|
133
|
+
- spec/support/shared_resource.rb
|
134
|
+
- spec/support/shared_searchable.rb
|
167
135
|
homepage: https://github.com/paulfri/luchadeer
|
168
136
|
licenses:
|
169
137
|
- MIT
|
@@ -184,33 +152,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
152
|
version: '0'
|
185
153
|
requirements: []
|
186
154
|
rubyforge_project:
|
187
|
-
rubygems_version: 2.2.
|
155
|
+
rubygems_version: 2.2.2
|
188
156
|
signing_key:
|
189
157
|
specification_version: 4
|
190
158
|
summary: The bombingest Giant Bomb API client library for Ruby.
|
191
159
|
test_files:
|
192
|
-
- spec/luchadeer/api/characters_spec.rb
|
193
|
-
- spec/luchadeer/api/companies_spec.rb
|
194
|
-
- spec/luchadeer/api/concepts_spec.rb
|
195
|
-
- spec/luchadeer/api/franchises_spec.rb
|
196
|
-
- spec/luchadeer/api/games_spec.rb
|
197
|
-
- spec/luchadeer/api/locations_spec.rb
|
198
|
-
- spec/luchadeer/api/objects_spec.rb
|
199
|
-
- spec/luchadeer/api/people_spec.rb
|
200
|
-
- spec/luchadeer/api/videos_spec.rb
|
201
160
|
- spec/luchadeer/api_spec.rb
|
202
|
-
- spec/luchadeer/character_spec.rb
|
203
161
|
- spec/luchadeer/client_spec.rb
|
204
|
-
- spec/luchadeer/company_spec.rb
|
205
|
-
- spec/luchadeer/concept_spec.rb
|
206
162
|
- spec/luchadeer/error_spec.rb
|
207
|
-
- spec/luchadeer/franchise_spec.rb
|
208
|
-
- spec/luchadeer/game_spec.rb
|
209
|
-
- spec/luchadeer/location_spec.rb
|
210
|
-
- spec/luchadeer/object_spec.rb
|
211
|
-
- spec/luchadeer/person_spec.rb
|
212
163
|
- spec/luchadeer/resource_spec.rb
|
164
|
+
- spec/luchadeer/resources_spec.rb
|
213
165
|
- spec/luchadeer/search_spec.rb
|
214
|
-
- spec/luchadeer/video_spec.rb
|
215
166
|
- spec/luchadeer_spec.rb
|
216
167
|
- spec/spec_helper.rb
|
168
|
+
- spec/support/shared_resource.rb
|
169
|
+
- spec/support/shared_searchable.rb
|
170
|
+
has_rdoc:
|
data/lib/luchadeer/api/games.rb
DELETED
data/lib/luchadeer/api/people.rb
DELETED
data/lib/luchadeer/api/videos.rb
DELETED
data/lib/luchadeer/character.rb
DELETED
data/lib/luchadeer/company.rb
DELETED
data/lib/luchadeer/concept.rb
DELETED
data/lib/luchadeer/franchise.rb
DELETED