luchadeer 0.2.0 → 0.3.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/.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