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
         |