require 'spec_helper'

describe SportsDataApi::Ncaafb, vcr: {
    cassette_name: 'sports_data_api_ncaafb',
    record: :new_episodes,
    match_requests_on: [:uri]
} do

  context 'invalid API key' do
    before(:each) do
      SportsDataApi.set_key(:ncaafb, 'invalid_key')
      SportsDataApi.set_access_level(:ncaafb, 't')
    end

    describe '.rankings' do
      it { expect { subject.rankings(2014, :AP25, 22) }.to raise_error(SportsDataApi::Error) }
      it { expect { subject.rankings(2014, :AP10, 12) }.to raise_error(SportsDataApi::Error) }
    end

    describe '.schedule' do
      it { expect { subject.schedule(2013, :REG) }.to raise_error(SportsDataApi::Error) }
    end

    describe '.boxscore' do
      it { expect { subject.boxscore(2014, :REG, 10, 'IOW', 'NW') }.to raise_error(SportsDataApi::Error) }
    end

    describe '.game_roster' do
      it { expect { subject.game_roster(2014, :REG, 10, 'IOW', 'NW') }.to raise_error(SportsDataApi::Error) }
    end

    describe '.weekly' do
      it { expect { subject.weekly(2013, :REG, 1) }.to raise_error(SportsDataApi::Error) }
    end
  end

  context 'no response from the api' do
    before(:each) { stub_request(:any, /api\.sportsdatallc\.org.*/).to_timeout }
    describe '.schedule' do
      it { expect { subject.schedule(2014, :REG) }.to raise_error(SportsDataApi::Error) }
    end

    describe '.boxscore' do
      it { expect { subject.boxscore(2014, :REG, 9, 'IND', 'MIA') }.to raise_error(SportsDataApi::Error) }
    end

    describe '.game_roster' do
      it { expect { subject.game_roster(2014, :REG, 9, 'IND', 'MIA') }.to raise_error(SportsDataApi::Error) }
    end

    describe '.weekly' do
      it { expect { subject.weekly(2014, :REG, 22) }.to raise_error(SportsDataApi::Error) }
    end
  end

  describe 'team based class methods' do
    before do
      SportsDataApi.set_key(:ncaafb, api_key(:ncaafb))
      SportsDataApi.set_access_level(:ncaafb, 't')
    end

    context '#team_roster' do
      it 'returns an array' do
        expect(subject.team_roster('WIS').players).to be_kind_of(Array)
      end
    end
  end
end