require 'spec_helper' describe SportsDataApi::Nba, vcr: { cassette_name: 'sports_data_api_nba', record: :new_episodes, match_requests_on: [:uri] } do context 'invalid API key' do before do SportsDataApi.set_key(:nba, 'invalid_key') SportsDataApi.set_access_level(:nba, 'trial') end describe '.schedule' do it { expect { subject.schedule(2017, :REG) }.to raise_error(SportsDataApi::Error) } end describe '.team_roster' do it { expect { subject.team_roster('team_uuid') }.to raise_error(SportsDataApi::Error) } end describe '.game_summary' do it { expect { subject.game_summary('game_uuid') }.to raise_error(SportsDataApi::Error) } end describe '.teams' do it { expect { subject.teams }.to raise_error(SportsDataApi::Error) } end describe '.daily' do it { expect { subject.daily(2017, 1, 1) }.to raise_error(SportsDataApi::Error) } end end context 'no response from the api' do before(:each) { stub_request(:any, /api\.sportradar\.us.*/).to_timeout } describe '.schedule' do it { expect { subject.schedule(2017, :REG) }.to raise_error(SportsDataApi::Error) } end describe '.team_roster' do it { expect { subject.team_roster('team_uuid') }.to raise_error(SportsDataApi::Error) } end describe '.game_summary' do it { expect { subject.game_summary('game_uuid') }.to raise_error(SportsDataApi::Error) } end describe '.teams' do it { expect { subject.teams }.to raise_error(SportsDataApi::Error) } end describe '.daily' do it { expect { subject.daily(2017, 1, 1) }.to raise_error(SportsDataApi::Error) } end end context 'create valid URLs' do let(:params) { { params: { api_key: api_key(:nba) } } } let(:json) { RestClient.get(url, params) } before(:each) do SportsDataApi.set_key(:nba, api_key(:nba)) SportsDataApi.set_access_level(:nba, 'trial') allow(RestClient).to receive(:get).and_return(json) end describe '.schedule' do let(:url) { 'https://api.sportradar.us/nba/trial/v4/en/games/2017/REG/schedule.json' } it 'creates a valid Sports Data LLC url' do expect(subject.schedule(2017, :REG)).to be_a SportsDataApi::Nba::Season expect(RestClient).to have_received(:get).with(url, params) end end describe '.team_roster' do let(:team_id) { '583ec825-fb46-11e1-82cb-f4ce4684ea4c' } let(:url) { "https://api.sportradar.us/nba/trial/v4/en/teams/#{team_id}/profile.json" } it 'creates a valid Sports Data LLC url' do expect(subject.team_roster(team_id)).to be_a SportsDataApi::Nba::Team expect(RestClient).to have_received(:get).with(url, params) end end describe '.game_summary' do let(:game_id) { '114844aa-3c31-4ac7-9afa-0a4f2ae65e0c' } let(:url) { "https://api.sportradar.us/nba/trial/v4/en/games/#{game_id}/summary.json" } it 'creates a valid Sports Data LLC url' do expect(subject.game_summary(game_id)).to be_a SportsDataApi::Nba::Game expect(RestClient).to have_received(:get).with(url, params) end end describe '.teams' do let(:url) { "https://api.sportradar.us/nba/trial/v4/en/league/hierarchy.json" } it 'creates a valid Sports Data LLC url' do expect(subject.teams).to be_a SportsDataApi::Nba::Teams expect(RestClient).to have_received(:get).with(url, params) end end describe '.daily' do let(:url) { "https://api.sportradar.us/nba/trial/v4/en/games/2018/1/1/schedule.json" } it 'creates a valid Sports Data LLC url' do expect(subject.daily(2018, 1, 1)).to be_a SportsDataApi::Nba::Games expect(RestClient).to have_received(:get).with(url, params) end end end end