luchadeer 0.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 (65) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +60 -0
  7. data/LICENSE +20 -0
  8. data/README.md +58 -0
  9. data/Rakefile +1 -0
  10. data/lib/luchadeer.rb +32 -0
  11. data/lib/luchadeer/api.rb +51 -0
  12. data/lib/luchadeer/api/characters.rb +11 -0
  13. data/lib/luchadeer/api/companies.rb +11 -0
  14. data/lib/luchadeer/api/concepts.rb +11 -0
  15. data/lib/luchadeer/api/franchises.rb +11 -0
  16. data/lib/luchadeer/api/games.rb +11 -0
  17. data/lib/luchadeer/api/locations.rb +11 -0
  18. data/lib/luchadeer/api/objects.rb +11 -0
  19. data/lib/luchadeer/api/people.rb +11 -0
  20. data/lib/luchadeer/api/videos.rb +11 -0
  21. data/lib/luchadeer/character.rb +13 -0
  22. data/lib/luchadeer/client.rb +73 -0
  23. data/lib/luchadeer/company.rb +13 -0
  24. data/lib/luchadeer/concept.rb +13 -0
  25. data/lib/luchadeer/error.rb +50 -0
  26. data/lib/luchadeer/franchise.rb +13 -0
  27. data/lib/luchadeer/game.rb +13 -0
  28. data/lib/luchadeer/location.rb +13 -0
  29. data/lib/luchadeer/middleware/follow_redirects.rb +50 -0
  30. data/lib/luchadeer/middleware/parse_api_error.rb +18 -0
  31. data/lib/luchadeer/middleware/parse_http_error.rb +18 -0
  32. data/lib/luchadeer/middleware/parse_json.rb +28 -0
  33. data/lib/luchadeer/object.rb +13 -0
  34. data/lib/luchadeer/person.rb +13 -0
  35. data/lib/luchadeer/resource.rb +37 -0
  36. data/lib/luchadeer/search.rb +45 -0
  37. data/lib/luchadeer/version.rb +3 -0
  38. data/lib/luchadeer/video.rb +13 -0
  39. data/luchadeer.gemspec +27 -0
  40. data/spec/luchadeer/api/characters_spec.rb +28 -0
  41. data/spec/luchadeer/api/companies_spec.rb +28 -0
  42. data/spec/luchadeer/api/concepts_spec.rb +28 -0
  43. data/spec/luchadeer/api/franchises_spec.rb +28 -0
  44. data/spec/luchadeer/api/games_spec.rb +28 -0
  45. data/spec/luchadeer/api/locations_spec.rb +28 -0
  46. data/spec/luchadeer/api/objects_spec.rb +28 -0
  47. data/spec/luchadeer/api/people_spec.rb +28 -0
  48. data/spec/luchadeer/api/videos_spec.rb +28 -0
  49. data/spec/luchadeer/api_spec.rb +101 -0
  50. data/spec/luchadeer/character_spec.rb +27 -0
  51. data/spec/luchadeer/client_spec.rb +54 -0
  52. data/spec/luchadeer/company_spec.rb +27 -0
  53. data/spec/luchadeer/concept_spec.rb +27 -0
  54. data/spec/luchadeer/error_spec.rb +53 -0
  55. data/spec/luchadeer/franchise_spec.rb +27 -0
  56. data/spec/luchadeer/game_spec.rb +27 -0
  57. data/spec/luchadeer/location_spec.rb +27 -0
  58. data/spec/luchadeer/object_spec.rb +27 -0
  59. data/spec/luchadeer/person_spec.rb +27 -0
  60. data/spec/luchadeer/resource_spec.rb +70 -0
  61. data/spec/luchadeer/search_spec.rb +69 -0
  62. data/spec/luchadeer/video_spec.rb +27 -0
  63. data/spec/luchadeer_spec.rb +24 -0
  64. data/spec/spec_helper.rb +5 -0
  65. metadata +216 -0
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Error do
4
+
5
+ describe '.api_errors' do
6
+ let(:ok) { Luchadeer::Error::Codes::OK }
7
+ let(:error_code) { Luchadeer::Error::Codes::INVALID_API_KEY }
8
+ let(:exception) { Luchadeer::Error::InvalidAPIKey }
9
+
10
+ it 'returns a hash' do
11
+ expect(described_class.api_errors).to respond_to :[]
12
+ end
13
+
14
+ it 'maps API error codes to exceptions' do
15
+ expect(described_class.api_errors[error_code]).to eq exception
16
+ end
17
+
18
+ it 'does not map "OK" to an exception' do
19
+ expect(described_class.api_errors[ok]).to be_nil
20
+ end
21
+ end
22
+
23
+ describe '.http_errors' do
24
+ let(:error_code) { 404 }
25
+ let(:exception) { Luchadeer::Error::NotFound }
26
+
27
+ it 'returns a hash' do
28
+ expect(described_class.http_errors).to respond_to :[]
29
+ end
30
+
31
+ it 'maps HTTP status codes to exceptions' do
32
+ expect(described_class.http_errors[error_code]).to eq exception
33
+ end
34
+
35
+ it 'does not map 200' do
36
+ expect(described_class.http_errors[200]).to be_nil
37
+ end
38
+ end
39
+
40
+ describe '#initialize' do
41
+ let(:message) { 'testing' }
42
+ let(:error) { described_class.new(message) }
43
+
44
+ it 'is raiseable' do
45
+ expect(error).to be_a StandardError
46
+ end
47
+
48
+ it 'constructs with message and status' do
49
+ expect(error.message).to eq message
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Franchise do
4
+
5
+ it 'is a resource' do
6
+ expect(described_class.new).to be_a Luchadeer::Resource
7
+ end
8
+
9
+ describe '.find' do
10
+ let(:client) { Luchadeer::Client.new }
11
+
12
+ before :each do
13
+ Luchadeer.client = client
14
+ end
15
+
16
+ it 'forwards to Client#franchise with arguments' do
17
+ expect(client).to receive(:franchise).with(1, true)
18
+ described_class.find(1, true)
19
+ end
20
+
21
+ it 'forwards to Client#franchise with default refresh' do
22
+ expect(client).to receive(:franchise).with(1, false)
23
+ described_class.find(1)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Game do
4
+
5
+ it 'is a resource' do
6
+ expect(described_class.new).to be_a Luchadeer::Resource
7
+ end
8
+
9
+ describe '.find' do
10
+ let(:client) { Luchadeer::Client.new }
11
+
12
+ before :each do
13
+ Luchadeer.client = client
14
+ end
15
+
16
+ it 'forwards to Client#game with arguments' do
17
+ expect(client).to receive(:game).with(1, true)
18
+ described_class.find(1, true)
19
+ end
20
+
21
+ it 'forwards to Client#game with default refresh' do
22
+ expect(client).to receive(:game).with(1, false)
23
+ described_class.find(1)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Location do
4
+
5
+ it 'is a resource' do
6
+ expect(described_class.new).to be_a Luchadeer::Resource
7
+ end
8
+
9
+ describe '.find' do
10
+ let(:client) { Luchadeer::Client.new }
11
+
12
+ before :each do
13
+ Luchadeer.client = client
14
+ end
15
+
16
+ it 'forwards to Client#location with arguments' do
17
+ expect(client).to receive(:location).with(1, true)
18
+ described_class.find(1, true)
19
+ end
20
+
21
+ it 'forwards to Client#location with default refresh' do
22
+ expect(client).to receive(:location).with(1, false)
23
+ described_class.find(1)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Object do
4
+
5
+ it 'is a resource' do
6
+ expect(described_class.new).to be_a Luchadeer::Resource
7
+ end
8
+
9
+ describe '.find' do
10
+ let(:client) { Luchadeer::Client.new }
11
+
12
+ before :each do
13
+ Luchadeer.client = client
14
+ end
15
+
16
+ it 'forwards to Client#object with arguments' do
17
+ expect(client).to receive(:object).with(1, true)
18
+ described_class.find(1, true)
19
+ end
20
+
21
+ it 'forwards to Client#object with default refresh' do
22
+ expect(client).to receive(:object).with(1, false)
23
+ described_class.find(1)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Person do
4
+
5
+ it 'is a resource' do
6
+ expect(described_class.new).to be_a Luchadeer::Resource
7
+ end
8
+
9
+ describe '.find' do
10
+ let(:client) { Luchadeer::Client.new }
11
+
12
+ before :each do
13
+ Luchadeer.client = client
14
+ end
15
+
16
+ it 'forwards to Client#person with arguments' do
17
+ expect(client).to receive(:person).with(1, true)
18
+ described_class.find(1, true)
19
+ end
20
+
21
+ it 'forwards to Client#person with default refresh' do
22
+ expect(client).to receive(:person).with(1, false)
23
+ described_class.find(1)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Resource do
4
+ let(:hash) { { first_name: 'Chie', last_name: 'Satonaka', age: 16 } }
5
+ let(:resource) { described_class.new(hash) }
6
+
7
+ describe '#initialize' do
8
+ it 'generates ostruct accessors for its keys' do
9
+ expect(resource.first_name).to eq hash[:first_name]
10
+ expect(resource.last_name).to eq hash[:last_name]
11
+ expect(resource.age).to eq hash[:age]
12
+ end
13
+
14
+ it 'returns nil for non-existent keys' do
15
+ expect(resource.foo).to be_nil
16
+ end
17
+
18
+ context 'with nested hashes as values' do
19
+ let(:nested) { hash.merge(nested: hash) }
20
+ let(:nested_resource) { described_class.new(nested) }
21
+
22
+ it 'recursively generates resource objects for nested hashes' do
23
+ expect(nested_resource.nested).to be_a Luchadeer::Resource
24
+ end
25
+ end
26
+
27
+ context 'with arrays as values' do
28
+ let(:arrayed) { hash.merge(arrayed: [{ test: "array" }]) }
29
+ let(:arrayed_resource) { described_class.new(arrayed) }
30
+
31
+ it 'recursively generates resource objects inside nested arrays' do
32
+ expect(arrayed_resource.arrayed[0]).to be_a Luchadeer::Resource
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#to_h' do
38
+ it 'returns a hash' do
39
+ expect(described_class.new(hash).to_h).to be_a Hash
40
+ end
41
+
42
+ it 'returns a hash representation of the object' do
43
+ expect(described_class.new(hash).to_h).to eq hash
44
+ end
45
+ end
46
+
47
+ describe '#detail' do
48
+ before :each do
49
+ Luchadeer.client = Luchadeer::Client.new
50
+ end
51
+
52
+ context 'when api_detail_url is present' do
53
+ let(:url) { 'http://www.giantbomb.com/api/game-3030/1' }
54
+ let(:resource) { described_class.new(api_detail_url: url) }
55
+
56
+ it 'fetches details and returns the new object' do
57
+ stub_request(:get, %r(#{url})).to_return(body: '{ "results": { "detailed?": true } }')
58
+ expect(resource.detail.detailed?).to be_true
59
+ end
60
+ end
61
+
62
+ context 'when api_detail_url is not present' do
63
+ let(:resource) { described_class.new }
64
+
65
+ it 'returns the original object' do
66
+ expect(resource.detail).to eq resource
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Search do
4
+ let(:query) { 'Chie Satonaka' }
5
+ let(:search_path) { %r(#{Luchadeer::Client::GIANT_BOMB}/search) }
6
+
7
+ describe '#initialize' do
8
+ it 'instantiates with a search query' do
9
+ expect(described_class.new(query).query).to eq query
10
+ end
11
+ end
12
+
13
+ describe '#fetch' do
14
+ before :each do
15
+ Luchadeer.client = Luchadeer::Client.new
16
+ end
17
+
18
+ it 'queries the Giant Bomb search API' do
19
+ stub = stub_request(:get, search_path).to_return(body: '{ "results": [] }')
20
+
21
+ described_class.new(query).fetch
22
+ expect(stub).to have_been_requested
23
+ end
24
+
25
+ describe 'generates the proper class based on the result type' do
26
+ subject do
27
+ stub_request(:get, search_path).to_return(body:
28
+ '{ "results": [
29
+ {"resource_type": "character"},
30
+ {"resource_type": "company"},
31
+ {"resource_type": "concept"},
32
+ {"resource_type": "franchise"},
33
+ {"resource_type": "game"},
34
+ {"resource_type": "location"},
35
+ {"resource_type": "object"},
36
+ {"resource_type": "person"},
37
+ {"resource_type": "video"}
38
+ ] }')
39
+ described_class.new(query).fetch
40
+ end
41
+
42
+ its([0]) { should be_instance_of Luchadeer::Character }
43
+ its([1]) { should be_instance_of Luchadeer::Company }
44
+ its([2]) { should be_instance_of Luchadeer::Concept }
45
+ its([3]) { should be_instance_of Luchadeer::Franchise }
46
+ its([4]) { should be_instance_of Luchadeer::Game }
47
+ its([5]) { should be_instance_of Luchadeer::Location }
48
+ its([6]) { should be_instance_of Luchadeer::Object }
49
+ its([7]) { should be_instance_of Luchadeer::Person }
50
+ its([8]) { should be_instance_of Luchadeer::Video }
51
+ end
52
+
53
+ context 'when there are no results' do
54
+ it 'returns an empty array' do
55
+ stub_request(:get, search_path).to_return(body:
56
+ '{ "results": [{ "resource_type": "banana"}] }')
57
+ expect(described_class.new(query).fetch).to eq []
58
+ end
59
+ end
60
+
61
+ context 'when the resource type isn\'t mapped' do
62
+ it 'skips modeling the resource' do
63
+ stub_request(:get, search_path).to_return(body: '{ "results": [] }')
64
+ expect(described_class.new(query).fetch).to eq []
65
+ end
66
+ end
67
+ end
68
+
69
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer::Video do
4
+
5
+ it 'is a resource' do
6
+ expect(described_class.new).to be_a Luchadeer::Resource
7
+ end
8
+
9
+ describe '.find' do
10
+ let(:client) { Luchadeer::Client.new }
11
+
12
+ before :each do
13
+ Luchadeer.client = client
14
+ end
15
+
16
+ it 'forwards to Client#video with arguments' do
17
+ expect(client).to receive(:video).with(1, true)
18
+ described_class.find(1, true)
19
+ end
20
+
21
+ it 'forwards to Client#video with default refresh' do
22
+ expect(client).to receive(:video).with(1, false)
23
+ described_class.find(1)
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Luchadeer do
4
+ let(:api_key) { 'VinnCo' }
5
+
6
+ describe '.configure' do
7
+ it 'returns a Luchadeer::Client' do
8
+ expect(described_class.configure).to be_instance_of Luchadeer::Client
9
+ end
10
+
11
+ it 'passes opts hash to the new client' do
12
+ hash = { api_key: api_key }
13
+
14
+ expect(described_class.configure(hash).api_key).to eq api_key
15
+ end
16
+
17
+ it 'passes the given block to the new client' do
18
+ proc = Proc.new { |c| c.api_key = api_key }
19
+
20
+ expect(described_class.configure(&proc).api_key).to eq api_key
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,5 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'luchadeer'
5
+ require 'webmock/rspec'
metadata ADDED
@@ -0,0 +1,216 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: luchadeer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Paul Friedman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coveralls
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description:
98
+ email:
99
+ - paulrfri@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - Gemfile.lock
109
+ - LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - lib/luchadeer.rb
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
+ - lib/luchadeer/client.rb
125
+ - lib/luchadeer/company.rb
126
+ - lib/luchadeer/concept.rb
127
+ - lib/luchadeer/error.rb
128
+ - lib/luchadeer/franchise.rb
129
+ - lib/luchadeer/game.rb
130
+ - lib/luchadeer/location.rb
131
+ - lib/luchadeer/middleware/follow_redirects.rb
132
+ - lib/luchadeer/middleware/parse_api_error.rb
133
+ - lib/luchadeer/middleware/parse_http_error.rb
134
+ - lib/luchadeer/middleware/parse_json.rb
135
+ - lib/luchadeer/object.rb
136
+ - lib/luchadeer/person.rb
137
+ - lib/luchadeer/resource.rb
138
+ - lib/luchadeer/search.rb
139
+ - lib/luchadeer/version.rb
140
+ - lib/luchadeer/video.rb
141
+ - 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
+ - spec/luchadeer/api_spec.rb
152
+ - spec/luchadeer/character_spec.rb
153
+ - spec/luchadeer/client_spec.rb
154
+ - spec/luchadeer/company_spec.rb
155
+ - spec/luchadeer/concept_spec.rb
156
+ - 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
+ - spec/luchadeer/resource_spec.rb
163
+ - spec/luchadeer/search_spec.rb
164
+ - spec/luchadeer/video_spec.rb
165
+ - spec/luchadeer_spec.rb
166
+ - spec/spec_helper.rb
167
+ homepage: https://github.com/paulfri/luchadeer
168
+ licenses:
169
+ - MIT
170
+ metadata: {}
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubyforge_project:
187
+ rubygems_version: 2.2.1
188
+ signing_key:
189
+ specification_version: 4
190
+ summary: The bombingest Giant Bomb API client library for Ruby.
191
+ 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
+ - spec/luchadeer/api_spec.rb
202
+ - spec/luchadeer/character_spec.rb
203
+ - spec/luchadeer/client_spec.rb
204
+ - spec/luchadeer/company_spec.rb
205
+ - spec/luchadeer/concept_spec.rb
206
+ - 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
+ - spec/luchadeer/resource_spec.rb
213
+ - spec/luchadeer/search_spec.rb
214
+ - spec/luchadeer/video_spec.rb
215
+ - spec/luchadeer_spec.rb
216
+ - spec/spec_helper.rb