giant_bomb_api 0.5.1
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 +7 -0
- data/.gitignore +3 -0
- data/.rspec +1 -0
- data/.rubocop.yml +6 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +81 -0
- data/LICENSE +22 -0
- data/README.md +155 -0
- data/Rakefile +7 -0
- data/circle.yml +6 -0
- data/giant_bomb_api.gemspec +31 -0
- data/lib/giant_bomb_api.rb +38 -0
- data/lib/giant_bomb_api/client.rb +54 -0
- data/lib/giant_bomb_api/collection_resource.rb +40 -0
- data/lib/giant_bomb_api/exception.rb +5 -0
- data/lib/giant_bomb_api/exception/api_error.rb +14 -0
- data/lib/giant_bomb_api/request.rb +10 -0
- data/lib/giant_bomb_api/request/collection.rb +36 -0
- data/lib/giant_bomb_api/request/detail.rb +9 -0
- data/lib/giant_bomb_api/request/search.rb +18 -0
- data/lib/giant_bomb_api/resource.rb +34 -0
- data/lib/giant_bomb_api/resource/accessory.rb +10 -0
- data/lib/giant_bomb_api/resource/character.rb +24 -0
- data/lib/giant_bomb_api/resource/chat.rb +11 -0
- data/lib/giant_bomb_api/resource/company.rb +32 -0
- data/lib/giant_bomb_api/resource/concept.rb +21 -0
- data/lib/giant_bomb_api/resource/factory.rb +36 -0
- data/lib/giant_bomb_api/resource/franchise.rb +17 -0
- data/lib/giant_bomb_api/resource/game.rb +40 -0
- data/lib/giant_bomb_api/resource/game_rating.rb +8 -0
- data/lib/giant_bomb_api/resource/genre.rb +10 -0
- data/lib/giant_bomb_api/resource/image.rb +12 -0
- data/lib/giant_bomb_api/resource/location.rb +12 -0
- data/lib/giant_bomb_api/resource/object.rb +20 -0
- data/lib/giant_bomb_api/resource/person.rb +24 -0
- data/lib/giant_bomb_api/resource/platform.rb +16 -0
- data/lib/giant_bomb_api/resource/promo.rb +11 -0
- data/lib/giant_bomb_api/resource/rating_board.rb +11 -0
- data/lib/giant_bomb_api/resource/region.rb +11 -0
- data/lib/giant_bomb_api/resource/release.rb +24 -0
- data/lib/giant_bomb_api/resource/review.rb +15 -0
- data/lib/giant_bomb_api/resource/theme.rb +7 -0
- data/lib/giant_bomb_api/resource/user_review.rb +11 -0
- data/lib/giant_bomb_api/resource/video.rb +17 -0
- data/lib/giant_bomb_api/resource/video_type.rb +8 -0
- data/lib/giant_bomb_api/resource_value_setter.rb +29 -0
- data/lib/giant_bomb_api/response.rb +17 -0
- data/spec/fixtures/detail-response.json +740 -0
- data/spec/fixtures/search-response.json +59 -0
- data/spec/lib/collection_resource_spec.rb +76 -0
- data/spec/lib/giant_bomb_api_spec.rb +56 -0
- data/spec/lib/request/collection_spec.rb +32 -0
- data/spec/lib/request/search_spec.rb +38 -0
- data/spec/lib/resource/factory_spec.rb +35 -0
- data/spec/lib/resource/game_spec.rb +28 -0
- data/spec/lib/resource_spec.rb +37 -0
- data/spec/lib/response_spec.rb +102 -0
- data/spec/spec_helper.rb +15 -0
- metadata +241 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
{
|
2
|
+
"error": "OK",
|
3
|
+
"limit": 100,
|
4
|
+
"offset": 0,
|
5
|
+
"number_of_page_results": 1,
|
6
|
+
"number_of_total_results": 1,
|
7
|
+
"status_code": 1,
|
8
|
+
"results": [
|
9
|
+
{
|
10
|
+
"aliases": "Drive Club\r\n#DRIVECLUB",
|
11
|
+
"api_detail_url": "http://www.giantbomb.com/api/game/3030-41693/",
|
12
|
+
"date_added": "2013-02-20 15:57:29",
|
13
|
+
"date_last_updated": "2014-11-30 06:30:47",
|
14
|
+
"deck": "Driveclub is a team-based racing game from Evolution Studios for PlayStation 4.",
|
15
|
+
"description": "<p style=\"\"> </p>",
|
16
|
+
"expected_release_day": null,
|
17
|
+
"expected_release_month": null,
|
18
|
+
"expected_release_quarter": null,
|
19
|
+
"expected_release_year": null,
|
20
|
+
"id": 41693,
|
21
|
+
"image": {
|
22
|
+
"icon_url": "http://static.giantbomb.com/uploads/square_avatar/8/82063/2560905-driveclub.jpg",
|
23
|
+
"medium_url": "http://static.giantbomb.com/uploads/scale_medium/8/82063/2560905-driveclub.jpg",
|
24
|
+
"screen_url": "http://static.giantbomb.com/uploads/screen_medium/8/82063/2560905-driveclub.jpg",
|
25
|
+
"small_url": "http://static.giantbomb.com/uploads/scale_small/8/82063/2560905-driveclub.jpg",
|
26
|
+
"super_url": "http://static.giantbomb.com/uploads/scale_large/8/82063/2560905-driveclub.jpg",
|
27
|
+
"thumb_url": "http://static.giantbomb.com/uploads/scale_avatar/8/82063/2560905-driveclub.jpg",
|
28
|
+
"tiny_url": "http://static.giantbomb.com/uploads/square_mini/8/82063/2560905-driveclub.jpg"
|
29
|
+
},
|
30
|
+
"name": "Driveclub",
|
31
|
+
"number_of_user_reviews": 0,
|
32
|
+
"original_game_rating": [
|
33
|
+
{
|
34
|
+
"api_detail_url": "http://www.giantbomb.com/api/game_rating/3065-7/",
|
35
|
+
"id": 7,
|
36
|
+
"name": "PEGI: 3+"
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"api_detail_url": "http://www.giantbomb.com/api/game_rating/3065-25/",
|
40
|
+
"id": 25,
|
41
|
+
"name": "CERO: A"
|
42
|
+
}
|
43
|
+
],
|
44
|
+
"original_release_date": "2014-10-07 00:00:00",
|
45
|
+
"platforms": [
|
46
|
+
{
|
47
|
+
"api_detail_url": "http://www.giantbomb.com/api/platform/3045-146/",
|
48
|
+
"id": 146,
|
49
|
+
"name": "PlayStation 4",
|
50
|
+
"site_detail_url": "http://www.giantbomb.com/playstation-4/3045-146/",
|
51
|
+
"abbreviation": "PS4"
|
52
|
+
}
|
53
|
+
],
|
54
|
+
"site_detail_url": "http://www.giantbomb.com/driveclub/3030-41693/",
|
55
|
+
"resource_type": "game"
|
56
|
+
}
|
57
|
+
],
|
58
|
+
"version": "1.0"
|
59
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::CollectionResource do
|
4
|
+
|
5
|
+
class DummyCollection
|
6
|
+
extend GiantBombApi::CollectionResource
|
7
|
+
end
|
8
|
+
|
9
|
+
class AnotherDummyCollection
|
10
|
+
extend GiantBombApi::CollectionResource
|
11
|
+
|
12
|
+
collection_resource_name "some_dummy_collection"
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'extension' do
|
16
|
+
it 'will also extend from GiantBombApi::Resource' do
|
17
|
+
expect(DummyCollection).to be_a GiantBombApi::Resource
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#collection_resource_name' do
|
22
|
+
|
23
|
+
context "when in a class the collection_resource_name has been defined" do
|
24
|
+
it 'returns the collection_resource_name of that class' do
|
25
|
+
expect(AnotherDummyCollection.collection_resource_name).to eq "some_dummy_collection"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when in a class the collection_resource_name has NOT been defined" do
|
30
|
+
it 'returns the pluralized form of the resource_name' do
|
31
|
+
expect(DummyCollection.collection_resource_name).to eq "dummy_collections"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#where' do
|
38
|
+
let(:client) { double("GiantBombApi::Client") }
|
39
|
+
before do
|
40
|
+
allow(GiantBombApi).to receive(:client).and_return(client)
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when given NO additional attributes" do
|
44
|
+
let(:dummy_collection_request) { double("DummyCollectionRequest") }
|
45
|
+
let(:response) { double("GiantBombApi::Response") }
|
46
|
+
|
47
|
+
it 'will send a blank collection-request for itself' do
|
48
|
+
expect(GiantBombApi::Request::Collection).to receive(:new).with(DummyCollection).and_return(dummy_collection_request)
|
49
|
+
expect(client).to receive(:send_request).with(dummy_collection_request).and_return(response)
|
50
|
+
expect(DummyCollection.where).to eq response
|
51
|
+
end
|
52
|
+
end
|
53
|
+
context "when given a hash that does not contain :sort, :offset or :limit" do
|
54
|
+
let(:dummy_collection_request) { double("DummyCollectionRequest") }
|
55
|
+
let(:response) { double("GiantBombApi::Response") }
|
56
|
+
|
57
|
+
it 'will send a collection-request with the given has as a filter' do
|
58
|
+
expect(GiantBombApi::Request::Collection).to receive(:new).with(DummyCollection, filter: { name: "something", aliases: "other" }).and_return(dummy_collection_request)
|
59
|
+
expect(client).to receive(:send_request).with(dummy_collection_request).and_return(response)
|
60
|
+
expect(DummyCollection.where(name: "something", aliases: "other")).to eq response
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "when given a hash that contains :sort, :offset and :limit" do
|
65
|
+
let(:dummy_collection_request) { double("DummyCollectionRequest") }
|
66
|
+
let(:response) { double("GiantBombApi::Response") }
|
67
|
+
|
68
|
+
it 'will send a collection-request with the the parameters assorted correctly' do
|
69
|
+
expect(GiantBombApi::Request::Collection).to receive(:new).with(DummyCollection, filter: { name: "something", aliases: "other" }, sort: {something: :desc}, limit: 10, offset: 1).and_return(dummy_collection_request)
|
70
|
+
expect(client).to receive(:send_request).with(dummy_collection_request).and_return(response)
|
71
|
+
expect(DummyCollection.where(name: "something", aliases: "other", sort: {something: :desc}, limit: 10, offset: 1)).to eq response
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi do
|
4
|
+
|
5
|
+
before do
|
6
|
+
GiantBombApi.configure do |config|
|
7
|
+
config.api_key = "12345"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
after do
|
12
|
+
GiantBombApi.configuration = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#configure" do
|
16
|
+
|
17
|
+
it "will correctly retain it's configuration" do
|
18
|
+
expect(GiantBombApi.configuration.api_key).to eq "12345"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#search' do
|
23
|
+
let(:search_request) { double() }
|
24
|
+
let(:result) { double() }
|
25
|
+
|
26
|
+
it 'uses the modules default client to send a Request::Search at returns the result' do
|
27
|
+
expect(GiantBombApi::Request::Search).to receive(:new).with("query").and_return(search_request)
|
28
|
+
expect(GiantBombApi.client).to receive(:send_request).with(search_request).and_return(result)
|
29
|
+
|
30
|
+
expect(GiantBombApi.search("query")).to eq result
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#client" do
|
35
|
+
|
36
|
+
context "when correctly configured first" do
|
37
|
+
let(:client) { double("GiantBombApi::Client") }
|
38
|
+
|
39
|
+
it "will use the module-config to configure a client and returns it" do
|
40
|
+
expect(GiantBombApi::Client).to receive(:new).with(api_key: "12345").and_return(client)
|
41
|
+
expect(GiantBombApi.client).to eq client
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "when not configured first" do
|
46
|
+
before do
|
47
|
+
GiantBombApi.configuration = nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "will raise an error and asks to configure first" do
|
51
|
+
expect{GiantBombApi.client}.to raise_error(GiantBombApi::Exception)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::Request::Collection do
|
4
|
+
describe "#initialize" do
|
5
|
+
context "when only a resource is given" do
|
6
|
+
it "sets query and the correct request_params" do
|
7
|
+
collection_request = GiantBombApi::Request::Collection.new GiantBombApi::Resource::Game
|
8
|
+
|
9
|
+
expect(collection_request.end_point).to eq "games"
|
10
|
+
expect(collection_request.params).to eq({limit: 100, offset: 0})
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "when a resource with filter is given" do
|
15
|
+
it "sets query and the correct request_params" do
|
16
|
+
collection_request = GiantBombApi::Request::Collection.new GiantBombApi::Resource::Game, filter: {name: "other", aliases: "something"}
|
17
|
+
|
18
|
+
expect(collection_request.end_point).to eq "games"
|
19
|
+
expect(collection_request.params).to eq(filter: "name:other,aliases:something", limit: 100, offset: 0)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "when a resource with filter and sort is given" do
|
24
|
+
it "sets query and the correct request_params" do
|
25
|
+
collection_request = GiantBombApi::Request::Collection.new GiantBombApi::Resource::Game, filter: {name: "other", aliases: "something"}, sort: {name: :desc}
|
26
|
+
|
27
|
+
expect(collection_request.end_point).to eq "games"
|
28
|
+
expect(collection_request.params).to eq(filter: "name:other,aliases:something", sort: "name:desc", limit: 100, offset: 0)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::Request::Search do
|
4
|
+
describe "#initialize" do
|
5
|
+
context "when only a query is given" do
|
6
|
+
it "sets query and the correct defaults as request_params" do
|
7
|
+
search_request = GiantBombApi::Request::Search.new "query"
|
8
|
+
|
9
|
+
expect(search_request.params).to eq({ query: "query",
|
10
|
+
resources: "game",
|
11
|
+
limit: 100,
|
12
|
+
page: 1 })
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "when a query and some resources are given" do
|
17
|
+
it "maps the resources-class to resource-names and sets the correct request_params" do
|
18
|
+
search_request = GiantBombApi::Request::Search.new "query", resources: [GiantBombApi::Resource::Game, GiantBombApi::Resource::Company, GiantBombApi::Resource::Character]
|
19
|
+
|
20
|
+
expect(search_request.params).to eq({ query: "query",
|
21
|
+
resources: "game,company,character",
|
22
|
+
limit: 100,
|
23
|
+
page: 1 })
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when a query, some resources and parameters are given" do
|
28
|
+
it "sets the correct request_params" do
|
29
|
+
search_request = GiantBombApi::Request::Search.new "query", resources: [GiantBombApi::Resource::Game, GiantBombApi::Resource::Company], limit: 50, page: 2
|
30
|
+
|
31
|
+
expect(search_request.params).to eq({ query: "query",
|
32
|
+
resources: "game,company",
|
33
|
+
limit: 50,
|
34
|
+
page: 2 })
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::Resource::Factory do
|
4
|
+
|
5
|
+
let(:game_json) {{'api_detail_url' => 'http://www.giantbomb.com/api/game/3030-41693/', 'some' => 'data' }}
|
6
|
+
let(:unknown_json) {{'api_detail_url' => 'http://www.giantbomb.com/api/unknown/1234-567/', 'some' => 'data' }}
|
7
|
+
let(:image_json) {{"icon_url": "http://url","medium_url": "http://url2","screen_url": "http://url3"}}
|
8
|
+
|
9
|
+
describe '#init_resource_from' do
|
10
|
+
context "when a json without resource_name is given" do
|
11
|
+
context 'and a api_detail_url is present' do
|
12
|
+
let(:game) { double('Game') }
|
13
|
+
|
14
|
+
it 'initializes the object based on the found resource_name in the api_detail_url' do
|
15
|
+
expect(GiantBombApi::Resource::Game).to receive(:new).with(game_json).and_return(game)
|
16
|
+
expect(GiantBombApi::Resource::Factory.init_resource_from(game_json)).to eq game
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'and an unknown-resource-name is discovered' do
|
20
|
+
it 'will not fail and return nil' do
|
21
|
+
expect(GiantBombApi::Resource::Factory.init_resource_from(unknown_json)).to be_nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
context "when a json with resource_name is given" do
|
27
|
+
let(:image) { double('Image') }
|
28
|
+
it 'initializes the object based on the given resource_name' do
|
29
|
+
expect(GiantBombApi::Resource::Image).to receive(:new).with(image_json).and_return(image)
|
30
|
+
expect(GiantBombApi::Resource::Factory.init_resource_from(image_json, resource_name: :image)).to eq image
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::Resource::Game do
|
4
|
+
|
5
|
+
let(:games_detail_response) { JSON.parse File.read(File.join('spec', 'fixtures', 'detail-response.json')) }
|
6
|
+
|
7
|
+
describe '#initialize' do
|
8
|
+
it 'correctly builds an object hierachy for a detail-json' do
|
9
|
+
game = GiantBombApi::Resource::Game.new games_detail_response["results"]
|
10
|
+
|
11
|
+
expect(game.name).to eq "Driveclub"
|
12
|
+
expect(game.image).to be_present
|
13
|
+
expect(game.original_game_rating.count).to eq 2
|
14
|
+
expect(game.platforms.count).to eq 1
|
15
|
+
expect(game.images.count).to eq 30
|
16
|
+
expect(game.videos.count).to eq 5
|
17
|
+
expect(game.developers.count).to eq 1
|
18
|
+
expect(game.genres.count).to eq 1
|
19
|
+
expect(game.franchises).to be_nil
|
20
|
+
expect(game.publishers.count).to eq 2
|
21
|
+
expect(game.releases.count).to eq 4
|
22
|
+
expect(game.similar_games.count).to eq 1
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::Resource do
|
4
|
+
|
5
|
+
class DummyResource
|
6
|
+
extend GiantBombApi::Resource
|
7
|
+
end
|
8
|
+
|
9
|
+
class AnotherDummyResource
|
10
|
+
extend GiantBombApi::Resource
|
11
|
+
|
12
|
+
resource_name "some_dummy_resource"
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'inclusion' do
|
16
|
+
it 'will also include from GiantBombApi::Resource' do
|
17
|
+
expect(DummyCollection).to include(GiantBombApi::ResourceValueSetter)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#resource_name' do
|
22
|
+
|
23
|
+
context "when in a class the resource_name has been defined" do
|
24
|
+
it 'returns the resource_name of that class' do
|
25
|
+
expect(AnotherDummyResource.resource_name).to eq "some_dummy_resource"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when in a class the resource_name has NOT been defined" do
|
30
|
+
it 'returns the underscored class_name' do
|
31
|
+
expect(DummyResource.resource_name).to eq "dummy_resource"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GiantBombApi::Response do
|
4
|
+
|
5
|
+
let(:search_response) { JSON.parse File.read(File.join('spec', 'fixtures', 'search-response.json')) }
|
6
|
+
let(:attributes_json) { { "limit" => "123", "offset" => "12", "number_of_page_results" => "1234", "number_of_total_results" => "4000"} }
|
7
|
+
|
8
|
+
describe '#has_more_results?' do
|
9
|
+
context "when total-results is bigger than offset plus page-results" do
|
10
|
+
it 'returns true' do
|
11
|
+
response = GiantBombApi::Response.new({ "offset" => 100, "number_of_page_results" => 100, "number_of_total_results" => 300 })
|
12
|
+
expect(response.has_more_results?).to eq true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "when total-results is the same as offset + number_of_page_results" do
|
17
|
+
it 'returns false' do
|
18
|
+
response = GiantBombApi::Response.new({ "offset" => 0, "number_of_page_results" => 50, "number_of_total_results" => 50 })
|
19
|
+
expect(response.has_more_results?).to eq false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#initialize' do
|
25
|
+
context "when handed a search-result" do
|
26
|
+
let(:response) { GiantBombApi::Response.new(search_response) }
|
27
|
+
|
28
|
+
it 'sets the correct values on itself' do
|
29
|
+
expect(response.limit).to eq 100
|
30
|
+
expect(response.offset).to eq 0
|
31
|
+
expect(response.number_of_page_results).to eq 1
|
32
|
+
expect(response.number_of_total_results).to eq 1
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'creates the correct results of objects' do
|
36
|
+
expect(response.results.count).to eq 1
|
37
|
+
|
38
|
+
result = response.results.first
|
39
|
+
|
40
|
+
expect(result).to be_a GiantBombApi::Resource::Game
|
41
|
+
expect(result.aliases).to eq "Drive Club\r\n#DRIVECLUB"
|
42
|
+
expect(result.api_detail_url).to eq "http://www.giantbomb.com/api/game/3030-41693/"
|
43
|
+
expect(result.date_added).to eq "2013-02-20 15:57:29"
|
44
|
+
expect(result.date_last_updated).to eq "2014-11-30 06:30:47"
|
45
|
+
expect(result.deck).to eq "Driveclub is a team-based racing game from Evolution Studios for PlayStation 4."
|
46
|
+
expect(result.description).to eq "<p style=\"\"> </p>"
|
47
|
+
expect(result.expected_release_day).to be_nil
|
48
|
+
expect(result.expected_release_month).to be_nil
|
49
|
+
expect(result.expected_release_quarter).to be_nil
|
50
|
+
expect(result.expected_release_year).to be_nil
|
51
|
+
expect(result.id).to eq 41693
|
52
|
+
expect(result.name).to eq "Driveclub"
|
53
|
+
expect(result.number_of_user_reviews).to eq 0
|
54
|
+
expect(result.original_release_date).to eq "2014-10-07 00:00:00"
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'sets the correct platforms' do
|
58
|
+
result = response.results.first
|
59
|
+
|
60
|
+
expect(result.image).to be_present
|
61
|
+
expect(result.image.icon_url).to eq "http://static.giantbomb.com/uploads/square_avatar/8/82063/2560905-driveclub.jpg"
|
62
|
+
expect(result.image.medium_url).to eq "http://static.giantbomb.com/uploads/scale_medium/8/82063/2560905-driveclub.jpg"
|
63
|
+
expect(result.image.screen_url).to eq "http://static.giantbomb.com/uploads/screen_medium/8/82063/2560905-driveclub.jpg"
|
64
|
+
expect(result.image.small_url).to eq "http://static.giantbomb.com/uploads/scale_small/8/82063/2560905-driveclub.jpg"
|
65
|
+
expect(result.image.super_url).to eq "http://static.giantbomb.com/uploads/scale_large/8/82063/2560905-driveclub.jpg"
|
66
|
+
expect(result.image.thumb_url).to eq "http://static.giantbomb.com/uploads/scale_avatar/8/82063/2560905-driveclub.jpg"
|
67
|
+
expect(result.image.tiny_url).to eq "http://static.giantbomb.com/uploads/square_mini/8/82063/2560905-driveclub.jpg"
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'sets the correct platforms' do
|
71
|
+
result = response.results.first
|
72
|
+
|
73
|
+
expect(result.platforms.count).to eq 1
|
74
|
+
platform = result.platforms.first
|
75
|
+
|
76
|
+
expect(platform).to be_a GiantBombApi::Resource::Platform
|
77
|
+
expect(platform.api_detail_url).to eq "http://www.giantbomb.com/api/platform/3045-146/"
|
78
|
+
expect(platform.id).to eq 146
|
79
|
+
expect(platform.name).to eq "PlayStation 4"
|
80
|
+
expect(platform.abbreviation).to eq "PS4"
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'sets the correct game_ratings' do
|
84
|
+
result = response.results.first
|
85
|
+
|
86
|
+
expect(result.original_game_rating.count).to eq 2
|
87
|
+
|
88
|
+
rating1 = result.original_game_rating[0]
|
89
|
+
rating2 = result.original_game_rating[1]
|
90
|
+
|
91
|
+
expect(rating1.api_detail_url).to eq "http://www.giantbomb.com/api/game_rating/3065-7/"
|
92
|
+
expect(rating1.id).to eq 7
|
93
|
+
expect(rating1.name).to eq "PEGI: 3+"
|
94
|
+
|
95
|
+
expect(rating2.api_detail_url).to eq "http://www.giantbomb.com/api/game_rating/3065-25/"
|
96
|
+
expect(rating2.id).to eq 25
|
97
|
+
expect(rating2.name).to eq "CERO: A"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|