marvel_api 0.2.0 → 0.2.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 +4 -4
- data/.document +1 -1
- data/.rspec +2 -1
- data/.travis.yml +8 -0
- data/Gemfile +11 -4
- data/Guardfile +5 -0
- data/LICENSE.txt +1 -1
- data/README.md +16 -4
- data/Rakefile +11 -8
- data/lib/marvel/client.rb +6 -14
- data/lib/marvel/connection.rb +10 -2
- data/lib/marvel/error.rb +16 -0
- data/lib/marvel/request.rb +22 -8
- data/lib/marvel/response.rb +21 -0
- data/lib/marvel/version.rb +14 -0
- data/marvel_api.gemspec +75 -18
- data/spec/fixtures/characters/character.json +341 -0
- data/spec/fixtures/characters/character_comics.json +4975 -0
- data/spec/fixtures/characters/character_events.json +1666 -0
- data/spec/fixtures/characters/character_series.json +6117 -0
- data/spec/fixtures/characters/character_stories.json +1873 -0
- data/spec/fixtures/characters/characters.json +3006 -0
- data/spec/fixtures/comics/comic.json +359 -0
- data/spec/fixtures/comics/comic_characters.json +4649 -0
- data/spec/fixtures/comics/comic_creators.json +4387 -0
- data/spec/fixtures/comics/comic_events.json +522 -0
- data/spec/fixtures/comics/comic_stories.json +1985 -0
- data/spec/fixtures/comics/comics.json +2246 -0
- data/spec/fixtures/creators/creator.json +340 -0
- data/spec/fixtures/creators/creator_comics.json +2856 -0
- data/spec/fixtures/creators/creator_events.json +1899 -0
- data/spec/fixtures/creators/creator_series.json +4686 -0
- data/spec/fixtures/creators/creator_stories.json +1491 -0
- data/spec/fixtures/creators/creators.json +1376 -0
- data/spec/fixtures/errors/empty_parameter.json +4 -0
- data/spec/fixtures/errors/excessive_filter_values.json +4 -0
- data/spec/fixtures/errors/invalid_credentials.json +4 -0
- data/spec/fixtures/errors/invalid_filter_value.json +4 -0
- data/spec/fixtures/errors/invalid_hash_ts_key_combo.json +4 -0
- data/spec/fixtures/errors/invalid_ordering.json +4 -0
- data/spec/fixtures/errors/invalid_parameter.json +4 -0
- data/spec/fixtures/errors/limit_invalid.json +4 -0
- data/spec/fixtures/errors/limit_over_100.json +4 -0
- data/spec/fixtures/errors/resource_not_found.json +4 -0
- data/spec/fixtures/events/event.json +522 -0
- data/spec/fixtures/events/event_characters.json +6397 -0
- data/spec/fixtures/events/event_comics.json +4718 -0
- data/spec/fixtures/events/event_creators.json +5869 -0
- data/spec/fixtures/events/event_series.json +2243 -0
- data/spec/fixtures/events/event_stories.json +4846 -0
- data/spec/fixtures/events/events.json +8613 -0
- data/spec/fixtures/series/serie.json +448 -0
- data/spec/fixtures/series/series.json +3464 -0
- data/spec/fixtures/series/series_characters.json +6029 -0
- data/spec/fixtures/series/series_comics.json +2935 -0
- data/spec/fixtures/series/series_creators.json +5923 -0
- data/spec/fixtures/series/series_events.json +944 -0
- data/spec/fixtures/series/series_stories.json +1544 -0
- data/spec/fixtures/stories/stories.json +1282 -0
- data/spec/fixtures/stories/story.json +117 -0
- data/spec/fixtures/stories/story_characters.json +794 -0
- data/spec/fixtures/stories/story_comics.json +522 -0
- data/spec/fixtures/stories/story_creators.json +1672 -0
- data/spec/fixtures/stories/story_events.json +522 -0
- data/spec/fixtures/stories/story_series.json +695 -0
- data/spec/marvel_api/client/client_character_spec.rb +142 -0
- data/spec/marvel_api/client/client_comic_spec.rb +141 -0
- data/spec/marvel_api/client/client_creator_spec.rb +139 -0
- data/spec/marvel_api/client/client_event_spec.rb +163 -0
- data/spec/marvel_api/client/client_series_spec.rb +165 -0
- data/spec/marvel_api/client/client_story_spec.rb +162 -0
- data/spec/marvel_api/error_spec.rb +192 -0
- data/spec/marvel_api_spec.rb +15 -3
- data/spec/spec_helper.rb +55 -4
- metadata +83 -27
- data/VERSION +0 -1
- data/spec/marvel_api/client_spec.rb +0 -7
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marvel::Client do
|
4
|
+
let(:client) { marvel_test_client }
|
5
|
+
|
6
|
+
context 'Character endpoints' do
|
7
|
+
let(:id) { 1009652 }
|
8
|
+
|
9
|
+
describe '#characters' do
|
10
|
+
before do
|
11
|
+
stub_get('characters', returns: 'characters/characters.json')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'fetches a list of characters' do
|
15
|
+
expect(client.characters.size).to eq 20
|
16
|
+
expect(client.characters.map(&:name).take(3))
|
17
|
+
.to eq ['3-D Man', 'A-Bomb (HAS)', 'A.I.M.']
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'requests public/v1/characters successfully' do
|
21
|
+
expect(client.characters.status).to eq 'Ok'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns an [ Hashie::Mash ]' do
|
25
|
+
expect(client.characters).to be_an Array
|
26
|
+
expect(client.characters.sample).to be_a Hashie::Mash
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#character' do
|
31
|
+
before do
|
32
|
+
stub_get("characters/#{id}", returns: 'characters/character.json')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'fetches a single character by id' do
|
36
|
+
expect(client.character(id).size).to eq 1
|
37
|
+
expect(client.character(id).pop.name).to eq 'Thanos'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'requests public/v1/characters/#{id} successfully' do
|
41
|
+
expect(client.character(id).status).to eq 'Ok'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'returns an [ Hashie::Mash ]' do
|
45
|
+
expect(client.character(id)).to be_an Array
|
46
|
+
expect(client.character(id).sample).to be_a Hashie::Mash
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#character_comics' do
|
51
|
+
before do
|
52
|
+
stub_get("characters/#{id}/comics",
|
53
|
+
returns: 'characters/character_comics.json')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'fetches a list of comics filtered by character id' do
|
57
|
+
expect(client.character_comics(id).size).to eq 20
|
58
|
+
expect(client.character_comics(id).map(&:title).take(3))
|
59
|
+
.to eq ['Thanos Annual (2014) #1',
|
60
|
+
'Thanos Rising (2013) #3',
|
61
|
+
'AVENGERS ASSEMBLE (2012) #3']
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'requests public/v1/characters/#{id}/comics successfully' do
|
65
|
+
expect(client.character_comics(id).status).to eq 'Ok'
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'returns an [ Hashie::Mash ]' do
|
69
|
+
expect(client.character_comics(id)).to be_an Array
|
70
|
+
expect(client.character_comics(id).sample).to be_a Hashie::Mash
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#character_events' do
|
75
|
+
before do
|
76
|
+
stub_get("characters/#{id}/events",
|
77
|
+
returns: 'characters/character_events.json')
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'fetches a list of events filtered by character id' do
|
81
|
+
expect(client.character_events(id).size).to eq 4
|
82
|
+
expect(client.character_events(id).map(&:title).take(3))
|
83
|
+
.to eq ['Blood and Thunder', 'Infinity Gauntlet', 'Infinity War']
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'requests public/v1/characters/#{id}/events successfully' do
|
87
|
+
expect(client.character_events(id).status).to eq 'Ok'
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'returns an [ Hashie::Mash ]' do
|
91
|
+
expect(client.character_events(id)).to be_an Array
|
92
|
+
expect(client.character_events(id).sample).to be_a Hashie::Mash
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#character_series' do
|
97
|
+
before do
|
98
|
+
stub_get("characters/#{id}/series",
|
99
|
+
returns: 'characters/character_series.json')
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'fetches a list of series filtered by character id' do
|
103
|
+
expect(client.character_series(id).size).to eq 20
|
104
|
+
expect(client.character_series(id).map(&:title).take(3))
|
105
|
+
.to eq ['Alpha Flight (1983 - 1994)',
|
106
|
+
'Avengers & the Infinity Gauntlet (2011)',
|
107
|
+
'Avengers Annual (1967 - 1994)']
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'requests public/v1/characters/#{id}/series successfully' do
|
111
|
+
expect(client.character_series(id).status).to eq 'Ok'
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'returns an [ Hashie::Mash ]' do
|
115
|
+
expect(client.character_series(id)).to be_an Array
|
116
|
+
expect(client.character_series(id).sample).to be_a Hashie::Mash
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe '#character_stories' do
|
121
|
+
before do
|
122
|
+
stub_get("characters/#{id}/stories",
|
123
|
+
returns: 'characters/character_stories.json')
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'fetches a list of stories filtered by character id' do
|
127
|
+
expect(client.character_stories(id).size).to eq 20
|
128
|
+
expect(client.character_stories(id).map(&:title).take(3))
|
129
|
+
.to eq ['Interior #695', 'Interior #1413', 'Interior #1603']
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'requests public/v1/characters/#{id}/stories successfully' do
|
133
|
+
expect(client.character_stories(id).status).to eq 'Ok'
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'returns an [ Hashie::Mash ]' do
|
137
|
+
expect(client.character_stories(id)).to be_an Array
|
138
|
+
expect(client.character_stories(id).sample).to be_a Hashie::Mash
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marvel::Client do
|
4
|
+
let(:client) { marvel_test_client }
|
5
|
+
|
6
|
+
context 'Comic endpoints' do
|
7
|
+
let(:id) { 17701 }
|
8
|
+
|
9
|
+
describe '#comics' do
|
10
|
+
before do
|
11
|
+
stub_get('comics', returns: 'comics/comics.json')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'fetches a list of comics' do
|
15
|
+
expect(client.comics.size).to eq 20
|
16
|
+
expect(client.comics.map(&:title).take(3))
|
17
|
+
.to eq ['Ant-Man: So (Trade Paperback)',
|
18
|
+
'Amazing Spider-Man (2014) #13',
|
19
|
+
'SCARLET (2010) #9']
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'requests public/v1/comics successfully' do
|
23
|
+
expect(client.comics.status).to eq 'Ok'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns an [ Hashie::Mash ]' do
|
27
|
+
expect(client.comics).to be_an Array
|
28
|
+
expect(client.comics.sample).to be_a Hashie::Mash
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#comic' do
|
33
|
+
before do
|
34
|
+
stub_get("comics/#{id}", returns: 'comics/comic.json')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'fetches a single comic by id' do
|
38
|
+
expect(client.comic(id).size).to eq 1
|
39
|
+
expect(client.comic(id).pop.title)
|
40
|
+
.to eq 'Age of Apocalypse: The Chosen (1995) #1'
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'requests public/v1/comics/#{id} successfully' do
|
44
|
+
expect(client.comic(id).status).to eq 'Ok'
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'returns an [ Hashie::Mash ]' do
|
48
|
+
expect(client.comic(id)).to be_an Array
|
49
|
+
expect(client.comic(id).sample).to be_a Hashie::Mash
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#comic_characters' do
|
54
|
+
before do
|
55
|
+
stub_get("comics/#{id}/characters",
|
56
|
+
returns: 'comics/comic_characters.json')
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'fetches a list of characters filtered by comic id' do
|
60
|
+
expect(client.comic_characters(id).size).to eq 13
|
61
|
+
expect(client.comic_characters(id).map(&:name).take(3))
|
62
|
+
.to eq ['Archangel', 'Aurora', 'Bishop']
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'requests public/v1/comics/#{id}/characters successfully' do
|
66
|
+
expect(client.comic_characters(id).status).to eq 'Ok'
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'returns an [ Hashie::Mash ]' do
|
70
|
+
expect(client.comic_characters(id)).to be_an Array
|
71
|
+
expect(client.comic_characters(id).sample).to be_a Hashie::Mash
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#comic_creators' do
|
76
|
+
before do
|
77
|
+
stub_get("comics/#{id}/creators",
|
78
|
+
returns: 'comics/comic_creators.json')
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'fetches a list of creators filtered by comic id' do
|
82
|
+
expect(client.comic_creators(id).size).to eq 15
|
83
|
+
expect(client.comic_creators(id).map(&:fullName).take(3))
|
84
|
+
.to eq ['Terry Austin', 'Ian Churchill', 'Kelly Corvese']
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'requests public/v1/comics/#{id}/creators successfully' do
|
88
|
+
expect(client.comic_creators(id).status).to eq 'Ok'
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'returns an [ Hashie::Mash ]' do
|
92
|
+
expect(client.comic_creators(id)).to be_an Array
|
93
|
+
expect(client.comic_creators(id).sample).to be_a Hashie::Mash
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#comic_events' do
|
98
|
+
before do
|
99
|
+
stub_get("comics/#{id}/events",
|
100
|
+
returns: 'comics/comic_events.json')
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'fetches a list of events filtered by comic id' do
|
104
|
+
expect(client.comic_events(id).size).to eq 1
|
105
|
+
expect(client.comic_events(id).map(&:title))
|
106
|
+
.to eq ['Age of Apocalypse']
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'requests public/v1/comics/#{id}/events successfully' do
|
110
|
+
expect(client.comic_events(id).status).to eq 'Ok'
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'returns an [ Hashie::Mash ]' do
|
114
|
+
expect(client.comic_events(id)).to be_an Array
|
115
|
+
expect(client.comic_events(id).sample).to be_a Hashie::Mash
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#comic_stories' do
|
120
|
+
before do
|
121
|
+
stub_get("comics/#{id}/stories",
|
122
|
+
returns: 'comics/comic_stories.json')
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'fetches a list of stories filtered by comic id' do
|
126
|
+
expect(client.comic_stories(id).size).to eq 20
|
127
|
+
expect(client.comic_stories(id).map(&:id).take(3))
|
128
|
+
.to eq [37492, 37493, 37494]
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'requests public/v1/comics/#{id}/stories successfully' do
|
132
|
+
expect(client.comic_stories(id).status).to eq 'Ok'
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'returns an [ Hashie::Mash ]' do
|
136
|
+
expect(client.comic_stories(id)).to be_an Array
|
137
|
+
expect(client.comic_stories(id).sample).to be_a Hashie::Mash
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marvel::Client do
|
4
|
+
let(:client) { marvel_test_client }
|
5
|
+
|
6
|
+
context 'Creator endpoints' do
|
7
|
+
let(:id) { 30 }
|
8
|
+
|
9
|
+
describe '#creators' do
|
10
|
+
before do
|
11
|
+
stub_get('creators', returns: 'creators/creators.json')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'fetches a list of creators' do
|
15
|
+
expect(client.creators.size).to eq 20
|
16
|
+
expect(client.creators.map(&:id).take(3))
|
17
|
+
.to eq [7968, 6606, 3096]
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'requests public/v1/creators successfully' do
|
21
|
+
expect(client.creators.status).to eq 'Ok'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns an [ Hashie::Mash ]' do
|
25
|
+
expect(client.creators).to be_an Array
|
26
|
+
expect(client.creators.sample).to be_a Hashie::Mash
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#creator' do
|
31
|
+
before do
|
32
|
+
stub_get("creators/#{id}", returns: 'creators/creator.json')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'fetches a single creator by id' do
|
36
|
+
expect(client.creator(id).size).to eq 1
|
37
|
+
expect(client.creator(id).pop.fullName)
|
38
|
+
.to eq 'Stan Lee'
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'requests public/v1/creators/#{id} successfully' do
|
42
|
+
expect(client.creator(id).status).to eq 'Ok'
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'returns an [ Hashie::Mash ]' do
|
46
|
+
expect(client.creator(id)).to be_an Array
|
47
|
+
expect(client.creator(id).sample).to be_a Hashie::Mash
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#creator_comics' do
|
52
|
+
before do
|
53
|
+
stub_get("creators/#{id}/comics",
|
54
|
+
returns: 'creators/creator_comics.json')
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'fetches a list of comics filtered by creator id' do
|
58
|
+
expect(client.creator_comics(id).size).to eq 20
|
59
|
+
expect(client.creator_comics(id).map(&:id).take(3))
|
60
|
+
.to eq [48073, 48072, 48377]
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'requests public/v1/creators/#{id}/comics successfully' do
|
64
|
+
expect(client.creator_comics(id).status).to eq 'Ok'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'returns an [ Hashie::Mash ]' do
|
68
|
+
expect(client.creator_comics(id)).to be_an Array
|
69
|
+
expect(client.creator_comics(id).sample).to be_a Hashie::Mash
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#creator_events' do
|
74
|
+
before do
|
75
|
+
stub_get("creators/#{id}/events",
|
76
|
+
returns: 'creators/creator_events.json')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'fetches a list of events filtered by creator id' do
|
80
|
+
expect(client.creator_events(id).size).to eq 4
|
81
|
+
expect(client.creator_events(id).map(&:title).take(3))
|
82
|
+
.to eq ['Civil War', 'House of M', 'Other - Evolve or Die']
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'requests public/v1/creators/#{id}/events successfully' do
|
86
|
+
expect(client.creator_events(id).status).to eq 'Ok'
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'returns an [ Hashie::Mash ]' do
|
90
|
+
expect(client.creator_events(id)).to be_an Array
|
91
|
+
expect(client.creator_events(id).sample).to be_a Hashie::Mash
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#creator_series' do
|
96
|
+
before do
|
97
|
+
stub_get("creators/#{id}/series",
|
98
|
+
returns: 'creators/creator_series.json')
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'fetches a list of series filtered by creator id' do
|
102
|
+
expect(client.creator_series(id).size).to eq 20
|
103
|
+
expect(client.creator_series(id).map(&:id).take(3))
|
104
|
+
.to eq [1023, 1147, 2114]
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'requests public/v1/creators/#{id}/series successfully' do
|
108
|
+
expect(client.creator_series(id).status).to eq 'Ok'
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'returns an [ Hashie::Mash ]' do
|
112
|
+
expect(client.creator_series(id)).to be_an Array
|
113
|
+
expect(client.creator_series(id).sample).to be_a Hashie::Mash
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe '#creator_stories' do
|
118
|
+
before do
|
119
|
+
stub_get("creators/#{id}/stories",
|
120
|
+
returns: 'creators/creator_stories.json')
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'fetches a list of stories filtered by creator id' do
|
124
|
+
expect(client.creator_stories(id).size).to eq 20
|
125
|
+
expect(client.creator_stories(id).map(&:id).take(3))
|
126
|
+
.to eq [29, 31, 32]
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'requests public/v1/creators/#{id}/stories successfully' do
|
130
|
+
expect(client.creator_stories(id).status).to eq 'Ok'
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'returns an [ Hashie::Mash ]' do
|
134
|
+
expect(client.creator_stories(id)).to be_an Array
|
135
|
+
expect(client.creator_stories(id).sample).to be_a Hashie::Mash
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Marvel::Client do
|
4
|
+
let(:client) { marvel_test_client }
|
5
|
+
|
6
|
+
context 'Event endpoints' do
|
7
|
+
let(:id) { 227 }
|
8
|
+
|
9
|
+
describe '#events' do
|
10
|
+
before do
|
11
|
+
stub_get('events', returns: 'events/events.json')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'fetches a list of events' do
|
15
|
+
expect(client.events.size).to eq 20
|
16
|
+
expect(client.events.map(&:title).take(3))
|
17
|
+
.to eq ['Acts of Vengeance!', 'Age of Apocalypse', 'Age of Ultron']
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'requests public/v1/events successfully' do
|
21
|
+
expect(client.events.status).to eq 'Ok'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns an [ Hashie::Mash ]' do
|
25
|
+
expect(client.events).to be_an Array
|
26
|
+
expect(client.events.sample).to be_a Hashie::Mash
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#event' do
|
31
|
+
before do
|
32
|
+
stub_get("events/#{id}", returns: 'events/event.json')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'fetches a single event by id' do
|
36
|
+
expect(client.event(id).size).to eq 1
|
37
|
+
expect(client.event(id).pop.title)
|
38
|
+
.to eq 'Age of Apocalypse'
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'requests public/v1/events/#{id} successfully' do
|
42
|
+
expect(client.event(id).status).to eq 'Ok'
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'returns an [ Hashie::Mash ]' do
|
46
|
+
expect(client.event(id)).to be_an Array
|
47
|
+
expect(client.event(id).sample).to be_a Hashie::Mash
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#event_characters' do
|
52
|
+
before do
|
53
|
+
stub_get("events/#{id}/characters",
|
54
|
+
returns: 'events/event_characters.json')
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'fetches a list of characters filtered by event id' do
|
58
|
+
expect(client.event_characters(id).size).to eq 20
|
59
|
+
expect(client.event_characters(id).map(&:name).take(3))
|
60
|
+
.to eq ['Abyss', 'Apocalypse', 'Arcade']
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'requests public/v1/events/#{id}/characters successfully' do
|
64
|
+
expect(client.event_characters(id).status).to eq 'Ok'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'returns an [ Hashie::Mash ]' do
|
68
|
+
expect(client.event_characters(id)).to be_an Array
|
69
|
+
expect(client.event_characters(id).sample).to be_a Hashie::Mash
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#event_comics' do
|
74
|
+
before do
|
75
|
+
stub_get("events/#{id}/comics",
|
76
|
+
returns: 'events/event_comics.json')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'fetches a list of comics filtered by event id' do
|
80
|
+
expect(client.event_comics(id).size).to eq 20
|
81
|
+
expect(client.event_comics(id).map(&:id).take(3))
|
82
|
+
.to eq [5369, 4090, 2539]
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'requests public/v1/events/#{id}/comics successfully' do
|
86
|
+
expect(client.event_comics(id).status).to eq 'Ok'
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'returns an [ Hashie::Mash ]' do
|
90
|
+
expect(client.event_comics(id)).to be_an Array
|
91
|
+
expect(client.event_comics(id).sample).to be_a Hashie::Mash
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#event_creators' do
|
96
|
+
before do
|
97
|
+
stub_get("events/#{id}/creators",
|
98
|
+
returns: 'events/event_creators.json')
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'fetches a list of creators filtered by event id' do
|
102
|
+
expect(client.event_creators(id).size).to eq 20
|
103
|
+
expect(client.event_creators(id).map(&:id).take(3))
|
104
|
+
.to eq [807, 5898, 5991]
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'requests public/v1/events/#{id}/creators successfully' do
|
108
|
+
expect(client.event_creators(id).status).to eq 'Ok'
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'returns an [ Hashie::Mash ]' do
|
112
|
+
expect(client.event_creators(id)).to be_an Array
|
113
|
+
expect(client.event_creators(id).sample).to be_a Hashie::Mash
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe '#event_series' do
|
118
|
+
before do
|
119
|
+
stub_get("events/#{id}/series",
|
120
|
+
returns: 'events/event_series.json')
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'fetches a list of series filtered by event id' do
|
124
|
+
expect(client.event_series(id).size).to eq 20
|
125
|
+
expect(client.event_series(id).map(&:id).take(3))
|
126
|
+
.to eq [6850, 7272, 7273]
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'requests public/v1/events/#{id}/series successfully' do
|
130
|
+
expect(client.event_series(id).status).to eq 'Ok'
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'returns an [ Hashie::Mash ]' do
|
134
|
+
expect(client.event_series(id)).to be_an Array
|
135
|
+
expect(client.event_series(id).sample).to be_a Hashie::Mash
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
describe '#event_stories' do
|
140
|
+
before do
|
141
|
+
stub_get("events/#{id}/stories",
|
142
|
+
returns: 'events/event_stories.json')
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'fetches a list of stories filtered by event id' do
|
146
|
+
expect(client.event_stories(id).size).to eq 20
|
147
|
+
expect(client.event_stories(id).map(&:title).take(3))
|
148
|
+
.to eq ['Age of Apocalypse: The Chosen (1995)',
|
149
|
+
'Amazing X-Men (1995)',
|
150
|
+
'Astonishing X-Men (1995)']
|
151
|
+
end
|
152
|
+
|
153
|
+
it 'requests public/v1/events/#{id}/stories successfully' do
|
154
|
+
expect(client.event_stories(id).status).to eq 'Ok'
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'returns an [ Hashie::Mash ]' do
|
158
|
+
expect(client.event_stories(id)).to be_an Array
|
159
|
+
expect(client.event_stories(id).sample).to be_a Hashie::Mash
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|