sports_data_api 0.0.3 → 0.1.0
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 +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +2 -1
- data/Guardfile +1 -1
- data/README.md +20 -5
- data/lib/sports_data_api/exception.rb +5 -0
- data/lib/sports_data_api/mlb/boxscore.rb +36 -0
- data/lib/sports_data_api/mlb/broadcast.rb +14 -0
- data/lib/sports_data_api/mlb/game.rb +30 -0
- data/lib/sports_data_api/mlb/game_stat.rb +26 -0
- data/lib/sports_data_api/mlb/game_stats.rb +44 -0
- data/lib/sports_data_api/mlb/games.rb +29 -0
- data/lib/sports_data_api/mlb/player.rb +17 -0
- data/lib/sports_data_api/mlb/players.rb +42 -0
- data/lib/sports_data_api/mlb/season.rb +18 -0
- data/lib/sports_data_api/mlb/team.rb +35 -0
- data/lib/sports_data_api/mlb/teams.rb +42 -0
- data/lib/sports_data_api/mlb/venue.rb +15 -0
- data/lib/sports_data_api/mlb/venues.rb +37 -0
- data/lib/sports_data_api/mlb.rb +82 -0
- data/lib/sports_data_api/nba/broadcast.rb +14 -0
- data/lib/sports_data_api/nba/game.rb +54 -0
- data/lib/sports_data_api/nba/games.rb +26 -0
- data/lib/sports_data_api/nba/player.rb +22 -0
- data/lib/sports_data_api/nba/season.rb +28 -0
- data/lib/sports_data_api/nba/team.rb +40 -0
- data/lib/sports_data_api/nba/teams.rb +83 -0
- data/lib/sports_data_api/nba/venue.rb +20 -0
- data/lib/sports_data_api/nba.rb +71 -0
- data/lib/sports_data_api/nfl/broadcast.rb +15 -0
- data/lib/sports_data_api/nfl/game.rb +83 -0
- data/lib/sports_data_api/nfl/games.rb +29 -0
- data/lib/sports_data_api/nfl/injuries.rb +9 -0
- data/lib/sports_data_api/nfl/player.rb +15 -0
- data/lib/sports_data_api/nfl/player_season_stats.rb +26 -0
- data/lib/sports_data_api/nfl/season.rb +27 -0
- data/lib/sports_data_api/nfl/team.rb +46 -0
- data/lib/sports_data_api/nfl/team_roster.rb +17 -0
- data/lib/sports_data_api/nfl/team_season_stats.rb +19 -0
- data/lib/sports_data_api/nfl/teams.rb +84 -0
- data/lib/sports_data_api/nfl/venue.rb +22 -0
- data/lib/sports_data_api/nfl/weather.rb +17 -0
- data/lib/sports_data_api/nfl/week.rb +20 -0
- data/lib/sports_data_api/nfl.rb +98 -0
- data/lib/sports_data_api/stats.rb +13 -0
- data/lib/sports_data_api/version.rb +1 -1
- data/lib/sports_data_api.rb +37 -12
- data/spec/cassettes/sports_data_api_mlb_game.yml +20193 -0
- data/spec/cassettes/sports_data_api_mlb_game_boxscore.yml +225 -0
- data/spec/cassettes/sports_data_api_mlb_game_stats.yml +657 -0
- data/spec/cassettes/sports_data_api_mlb_games.yml +195 -0
- data/spec/cassettes/sports_data_api_mlb_player.yml +10891 -0
- data/spec/cassettes/sports_data_api_mlb_season.yml +20193 -0
- data/spec/cassettes/sports_data_api_mlb_team.yml +182 -0
- data/spec/cassettes/sports_data_api_mlb_team_roster.yml +10891 -0
- data/spec/cassettes/sports_data_api_mlb_teams.yml +403 -0
- data/spec/cassettes/sports_data_api_mlb_venues.yml +343 -0
- data/spec/cassettes/sports_data_api_nba.yml +74176 -0
- data/spec/cassettes/sports_data_api_nba_broadcast.yml +88 -0
- data/spec/cassettes/sports_data_api_nba_game.yml +21202 -0
- data/spec/cassettes/sports_data_api_nba_games.yml +128 -0
- data/spec/cassettes/sports_data_api_nba_league_hierarchy.yml +545 -0
- data/spec/cassettes/sports_data_api_nba_player.yml +244 -0
- data/spec/cassettes/sports_data_api_nba_season.yml +18228 -0
- data/spec/cassettes/sports_data_api_nba_team.yml +1398 -0
- data/spec/cassettes/sports_data_api_nba_team_roster.yml +244 -0
- data/spec/cassettes/sports_data_api_nba_venue.yml +88 -0
- data/spec/cassettes/sports_data_api_nfl.yml +19105 -0
- data/spec/cassettes/sports_data_api_nfl_broadcast.yml +112 -0
- data/spec/cassettes/sports_data_api_nfl_game.yml +16139 -0
- data/spec/cassettes/sports_data_api_nfl_games.yml +912 -0
- data/spec/cassettes/sports_data_api_nfl_player_season_stats.yml +997 -0
- data/spec/cassettes/sports_data_api_nfl_season.yml +14100 -0
- data/spec/cassettes/sports_data_api_nfl_team.yml +783 -0
- data/spec/cassettes/sports_data_api_nfl_team_hierarchy.yml +909 -0
- data/spec/cassettes/sports_data_api_nfl_team_roster.yml +618 -0
- data/spec/cassettes/sports_data_api_nfl_team_season_stats.yml +981 -0
- data/spec/cassettes/sports_data_api_nfl_venue.yml +112 -0
- data/spec/cassettes/sports_data_api_nfl_weather.yml +112 -0
- data/spec/cassettes/sports_data_api_nfl_week.yml +14100 -0
- data/spec/lib/sports_data_api/mlb/boxscore_spec.rb +63 -0
- data/spec/lib/sports_data_api/mlb/game_spec.rb +24 -0
- data/spec/lib/sports_data_api/mlb/game_stats_spec.rb +25 -0
- data/spec/lib/sports_data_api/mlb/games_spec.rb +24 -0
- data/spec/lib/sports_data_api/mlb/player_spec.rb +103 -0
- data/spec/lib/sports_data_api/mlb/players_spec.rb +17 -0
- data/spec/lib/sports_data_api/mlb/season_spec.rb +19 -0
- data/spec/lib/sports_data_api/mlb/team_spec.rb +24 -0
- data/spec/lib/sports_data_api/mlb/teams_spec.rb +30 -0
- data/spec/lib/sports_data_api/mlb/venues_spec.rb +17 -0
- data/spec/lib/sports_data_api/nba/broadcast_spec.rb +18 -0
- data/spec/lib/sports_data_api/nba/game_spec.rb +87 -0
- data/spec/lib/sports_data_api/nba/games_spec.rb +19 -0
- data/spec/lib/sports_data_api/nba/player_spec.rb +72 -0
- data/spec/lib/sports_data_api/nba/season_spec.rb +41 -0
- data/spec/lib/sports_data_api/nba/team_spec.rb +185 -0
- data/spec/lib/sports_data_api/nba/teams_spec.rb +76 -0
- data/spec/lib/sports_data_api/nba/venue_spec.rb +24 -0
- data/spec/lib/sports_data_api/nba_spec.rb +41 -0
- data/spec/lib/sports_data_api/nfl/broadcast_spec.rb +19 -0
- data/spec/lib/sports_data_api/nfl/game_spec.rb +126 -0
- data/spec/lib/sports_data_api/nfl/games_spec.rb +21 -0
- data/spec/lib/sports_data_api/nfl/player_season_stats.rb +28 -0
- data/spec/lib/sports_data_api/nfl/season_spec.rb +41 -0
- data/spec/lib/sports_data_api/nfl/team_roster_spec.rb +28 -0
- data/spec/lib/sports_data_api/nfl/team_season_stats.rb +19 -0
- data/spec/lib/sports_data_api/nfl/team_spec.rb +52 -0
- data/spec/lib/sports_data_api/nfl/teams_spec.rb +77 -0
- data/spec/lib/sports_data_api/nfl/venue_spec.rb +26 -0
- data/spec/lib/sports_data_api/nfl/weather_spec.rb +21 -0
- data/spec/lib/sports_data_api/nfl/week_spec.rb +21 -0
- data/spec/lib/sports_data_api/nfl_spec.rb +113 -0
- data/spec/lib/sports_data_api_spec.rb +8 -5
- data/spec/spec_helper.rb +30 -9
- data/sports_data_api.gemspec +19 -15
- metadata +267 -76
- data/.rvmrc +0 -38
- data/lib/nfl.rb +0 -149
- data/spec/lib/nfl_spec.rb +0 -125
- data/spec/xml/boxscore.xml +0 -93
- data/spec/xml/schedule.xml +0 -4067
- data/spec/xml/teams.xml +0 -119
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Boxscore, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_game_boxscore',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
|
9
|
+
context "closed game" do
|
10
|
+
let(:boxscore) do
|
11
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
12
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
13
|
+
SportsDataApi::Mlb.game_boxscore("000c465f-7c8c-46bb-8ea7-c26b2bc7c296")
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { boxscore }
|
17
|
+
it "inning eq 9" do
|
18
|
+
boxscore.game_state[:inning].to_i.should eq 9
|
19
|
+
end
|
20
|
+
it "inning_half eq t" do
|
21
|
+
boxscore.game_state[:inning_half].should eq 'T'
|
22
|
+
end
|
23
|
+
it "home team score eq 5" do
|
24
|
+
boxscore.game_state[:home_score].should eq '5'
|
25
|
+
end
|
26
|
+
it "visitor team score eq 2" do
|
27
|
+
boxscore.game_state[:visitor_score].should eq '2'
|
28
|
+
end
|
29
|
+
it "should return a game status" do
|
30
|
+
boxscore.game_state[:status].should eq 'closed'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "inprogress game" do
|
35
|
+
let(:url) { 'http://developer.sportsdatallc.com/files/mlb_v4_game_boxscore_example.xml' }
|
36
|
+
|
37
|
+
let(:boxscore_xml) do
|
38
|
+
str = RestClient.get(url).to_s
|
39
|
+
xml = Nokogiri::XML(str)
|
40
|
+
xml.remove_namespaces!
|
41
|
+
xml.xpath('/boxscore').first
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:boxscore) { SportsDataApi::Mlb::Boxscore.new(boxscore_xml)}
|
45
|
+
|
46
|
+
subject { boxscore }
|
47
|
+
it "inning eq 12" do
|
48
|
+
boxscore.game_state[:inning].to_i.should eq 12
|
49
|
+
end
|
50
|
+
it "inning_half eq t" do
|
51
|
+
boxscore.game_state[:inning_half].should eq 'T'
|
52
|
+
end
|
53
|
+
it "home team score eq 2" do
|
54
|
+
boxscore.game_state[:home_score].should eq '2'
|
55
|
+
end
|
56
|
+
it "visitor team score eq 3" do
|
57
|
+
boxscore.game_state[:visitor_score].should eq '3'
|
58
|
+
end
|
59
|
+
it "should return a game status" do
|
60
|
+
boxscore.game_state[:status].should eq 'inprogress'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Game, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_game',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:season) do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi::Mlb.schedule(2014)
|
12
|
+
end
|
13
|
+
context 'results from schedule fetch' do
|
14
|
+
subject { season.games.first }
|
15
|
+
it { should be_an_instance_of(SportsDataApi::Mlb::Game) }
|
16
|
+
its(:id) { should eq '00372cd7-911b-42e7-a509-bb555f747a9d' }
|
17
|
+
its(:scheduled) { should eq Time.parse("2014-09-14T20:10:00Z") }
|
18
|
+
its(:home) { should eq '25507be1-6a68-4267-bd82-e097d94b359b' }
|
19
|
+
its(:away) { should eq 'd52d5339-cbdd-43f3-9dfa-a42fd588b9a3' }
|
20
|
+
its(:status) { should eq 'scheduled' }
|
21
|
+
its(:venue) { should eq 'bf05de0d-7ced-4a19-8e17-2bbd985f8a92' }
|
22
|
+
its(:broadcast) { should be_an_instance_of(SportsDataApi::Mlb::Broadcast) }
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Teams, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_game_stats',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:stats) do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi::Mlb.game_statistics("000c465f-7c8c-46bb-8ea7-c26b2bc7c296")
|
12
|
+
end
|
13
|
+
|
14
|
+
subject { stats }
|
15
|
+
it "grabs the status" do
|
16
|
+
expect(stats[:status]).to eql 'closed'
|
17
|
+
end
|
18
|
+
it "has 25 hitting players" do
|
19
|
+
expect(stats[:hitting].count).to eq 25
|
20
|
+
end
|
21
|
+
it "has 7 pitching players" do
|
22
|
+
expect(stats[:pitching].count).to eq 7
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Games, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_games',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
context 'results from daily schedule fetch' do
|
9
|
+
let(:games) do
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
12
|
+
SportsDataApi::Mlb.daily(2014, '04', 16)
|
13
|
+
end
|
14
|
+
subject { games }
|
15
|
+
it { should be_an_instance_of(SportsDataApi::Mlb::Games) }
|
16
|
+
its(:count) { should eq 16 }
|
17
|
+
it "gets postponed information" do
|
18
|
+
game = games.games[10]
|
19
|
+
expect(game.scheduled).to eql Time.parse('2014-04-17T23:10:00Z')
|
20
|
+
expect(game.rescheduled_reason).to eql 'postponed'
|
21
|
+
expect(game.rescheduled_from).to eql Time.parse('2014-04-17T00:10:00Z')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Player, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_player',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
before do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:player) do
|
14
|
+
SportsDataApi::Mlb.team_roster(Date.today.year).first.player
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'player' do
|
18
|
+
subject { player }
|
19
|
+
it 'should have an team_id' do
|
20
|
+
expect(subject[:team_id]).to eql 'ef64da7f-cfaf-4300-87b0-9313386b977c'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should have a status' do
|
24
|
+
expect(subject[:status]).to eql 'A'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should have a jersey' do
|
28
|
+
expect(subject[:jersey]).to eql '31'
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should have a position' do
|
32
|
+
expect(subject[:position]).to eql 'C'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should have a primary_position' do
|
36
|
+
expect(subject[:primary_position]).to eql 'C'
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should have an id' do
|
40
|
+
expect(subject[:id]).to eql 'f7deada3-d11e-490e-8658-ae83b7612014'
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should have a mlbam_id' do
|
44
|
+
expect(subject[:mlbam_id]).to eql '460077'
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should have a last_name' do
|
48
|
+
expect(subject[:last_name]).to eql 'Butera'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should have a first_name' do
|
52
|
+
expect(subject[:first_name]).to eql 'Andrew'
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should have an preferred_name' do
|
56
|
+
expect(subject[:preferred_name]).to eql 'Drew'
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should have an bat_hand' do
|
60
|
+
expect(subject[:bat_hand]).to eql 'R'
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should have an throw_hand' do
|
64
|
+
expect(subject[:throw_hand]).to eql 'R'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should have a weight' do
|
68
|
+
expect(subject[:weight]).to eql '200'
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should have a height' do
|
72
|
+
expect(subject[:height]).to eql '601'
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should have a birthdate' do
|
76
|
+
expect(subject[:birthdate]).to eql '1983-08-09'
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should have a birthcity' do
|
80
|
+
expect(subject[:birthcity]).to eql 'Evansville'
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should have a birthstate' do
|
84
|
+
expect(subject[:birthstate]).to eql 'IL'
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should have a birthcountry' do
|
88
|
+
expect(subject[:birthcountry]).to eql 'USA'
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should have a highschool' do
|
92
|
+
expect(subject[:highschool]).to eql 'Bishop Moore, Orlando, FL'
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should have a college' do
|
96
|
+
expect(subject[:college]).to eql 'Central Florida'
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'should have a pro_debut' do
|
100
|
+
expect(subject[:pro_debut]).to eql '2010-04-09'
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Players, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_team_roster',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:team_rosters) do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi::Mlb.team_roster
|
12
|
+
end
|
13
|
+
|
14
|
+
subject { team_rosters }
|
15
|
+
its(:count) { should eq 1150 }
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Season, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_season',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
context 'results from schedule fetch' do
|
9
|
+
let(:season) do
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
12
|
+
SportsDataApi::Mlb.schedule(2014)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { season }
|
16
|
+
its(:games) { should have(2449).games}
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Team, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_team',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:teams) do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi::Mlb.teams
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'results from teams fetch' do
|
15
|
+
subject { teams.first }
|
16
|
+
it { should be_an_instance_of(SportsDataApi::Mlb::Team) }
|
17
|
+
its(:id) { should eq "ef64da7f-cfaf-4300-87b0-9313386b977c" }
|
18
|
+
its(:alias) { should eq 'LA' }
|
19
|
+
its(:league) { should eq 'NL' }
|
20
|
+
its(:division) { should eq 'W' }
|
21
|
+
its(:market) { should eq 'Los Angeles' }
|
22
|
+
its(:name) { should eq 'Dodgers' }
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Teams, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_teams',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:teams) do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi::Mlb.teams
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:url) { 'http://api.sportsdatallc.org/mlb-t4/teams/2014.xml' }
|
15
|
+
|
16
|
+
let(:dodgers_xml) do
|
17
|
+
str = RestClient.get(url, params: { api_key: api_key(:mlb) }).to_s
|
18
|
+
xml = Nokogiri::XML(str)
|
19
|
+
xml.remove_namespaces!
|
20
|
+
xml.xpath('//team[@abbr=\'LA\']')
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:dodgers) { SportsDataApi::Mlb::Team.new(dodgers_xml) }
|
24
|
+
|
25
|
+
subject { teams }
|
26
|
+
its(:count) { should eq 32 }
|
27
|
+
|
28
|
+
it { subject[:"ef64da7f-cfaf-4300-87b0-9313386b977c"].should eq dodgers }
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Teams, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_mlb_venues',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:venues) do
|
9
|
+
SportsDataApi.set_key(:mlb, api_key(:mlb))
|
10
|
+
SportsDataApi.set_access_level(:mlb, 't')
|
11
|
+
SportsDataApi::Mlb.venues
|
12
|
+
end
|
13
|
+
|
14
|
+
subject { venues }
|
15
|
+
its(:count) { should eq 67 }
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nba::Broadcast, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nba_broadcast',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:daily_schedule) do
|
9
|
+
SportsDataApi.set_access_level(:nba, 't')
|
10
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
11
|
+
SportsDataApi::Nba.daily(2013, 12, 12)
|
12
|
+
end
|
13
|
+
context 'results from daily schedule fetch' do
|
14
|
+
subject { daily_schedule.first.broadcast }
|
15
|
+
its(:network) { should eq 'TNT' }
|
16
|
+
its(:satellite) { should eq '245' }
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nba::Game, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nba_game',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:season) do
|
9
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
10
|
+
SportsDataApi.set_access_level(:nba, 't')
|
11
|
+
SportsDataApi::Nba.schedule(2013, :REG)
|
12
|
+
end
|
13
|
+
let(:game_summary) do
|
14
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
15
|
+
SportsDataApi.set_access_level(:nba, 't')
|
16
|
+
SportsDataApi::Nba.game_summary('e1dcf692-330d-46d3-8add-a241b388fbe2')
|
17
|
+
end
|
18
|
+
let(:daily_schedule) do
|
19
|
+
SportsDataApi.set_access_level(:nba, 't')
|
20
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
21
|
+
SportsDataApi::Nba.daily(2013, 12, 12)
|
22
|
+
end
|
23
|
+
context 'results from schedule fetch' do
|
24
|
+
subject { season.games.first }
|
25
|
+
it { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
26
|
+
its(:id) { should eq '0b3d21c7-c13f-4ee8-8d9d-4f334754c7e4' }
|
27
|
+
its(:scheduled) { should eq Time.new(2013, 10, 29, 19, 00, 00, '-04:00') }
|
28
|
+
its(:home) { should eq '583ec7cd-fb46-11e1-82cb-f4ce4684ea4c' }
|
29
|
+
its(:away) { should eq '583ed157-fb46-11e1-82cb-f4ce4684ea4c' }
|
30
|
+
its(:status) { should eq 'closed' }
|
31
|
+
its(:home_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
32
|
+
its(:away_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
33
|
+
its(:venue) { should be_an_instance_of(SportsDataApi::Nba::Venue) }
|
34
|
+
its(:broadcast) { should be_an_instance_of(SportsDataApi::Nba::Broadcast) }
|
35
|
+
its(:summary) { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
36
|
+
it '#boxscore' do
|
37
|
+
expect { subject.boxscore }.to raise_error(NotImplementedError)
|
38
|
+
end
|
39
|
+
it '#pbp' do
|
40
|
+
expect { subject.pbp }.to raise_error(NotImplementedError)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
context 'results from game_summary fetch' do
|
44
|
+
subject { game_summary }
|
45
|
+
it { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
46
|
+
its(:id) { should eq 'e1dcf692-330d-46d3-8add-a241b388fbe2' }
|
47
|
+
its(:scheduled) { should eq Time.new(2013, 10, 30, 22, 30, 00, '-04:00') }
|
48
|
+
its(:home) { should eq '583ec825-fb46-11e1-82cb-f4ce4684ea4c' }
|
49
|
+
its(:away) { should eq '583ecae2-fb46-11e1-82cb-f4ce4684ea4c' }
|
50
|
+
its(:status) { should eq 'closed' }
|
51
|
+
its(:quarter) { should eq 4 }
|
52
|
+
its(:clock) { should eq '00:00' }
|
53
|
+
its(:home_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
54
|
+
its(:away_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
55
|
+
its(:venue) { should be_an_instance_of(SportsDataApi::Nba::Venue) }
|
56
|
+
its(:broadcast) { should be_an_instance_of(SportsDataApi::Nba::Broadcast) }
|
57
|
+
its(:summary) { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
58
|
+
it '#boxscore' do
|
59
|
+
expect { subject.boxscore }.to raise_error(NotImplementedError)
|
60
|
+
end
|
61
|
+
it '#pbp' do
|
62
|
+
expect { subject.pbp }.to raise_error(NotImplementedError)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
context 'results from daily schedule fetch' do
|
66
|
+
subject { daily_schedule.first }
|
67
|
+
it { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
68
|
+
its(:id) { should eq '9dbf017d-250d-4ee7-8b3b-00dfa2f9e8b7' }
|
69
|
+
its(:scheduled) { should eq Time.new(2013, 12, 12, 20, 00, 00, '-05:00') }
|
70
|
+
its(:home) { should eq '583ec9d6-fb46-11e1-82cb-f4ce4684ea4c' }
|
71
|
+
its(:away) { should eq '583ecdfb-fb46-11e1-82cb-f4ce4684ea4c' }
|
72
|
+
its(:status) { should eq 'closed' }
|
73
|
+
its(:quarter) { should eq nil }
|
74
|
+
its(:clock) { should eq nil }
|
75
|
+
its(:home_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
76
|
+
its(:away_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
77
|
+
its(:venue) { should be_an_instance_of(SportsDataApi::Nba::Venue) }
|
78
|
+
its(:broadcast) { should be_an_instance_of(SportsDataApi::Nba::Broadcast) }
|
79
|
+
its(:summary) { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
80
|
+
it '#boxscore' do
|
81
|
+
expect { subject.boxscore }.to raise_error(NotImplementedError)
|
82
|
+
end
|
83
|
+
it '#pbp' do
|
84
|
+
expect { subject.pbp }.to raise_error(NotImplementedError)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nba::Games, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nba_games',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
context 'results from daily schedule fetch' do
|
9
|
+
let(:games) do
|
10
|
+
SportsDataApi.set_access_level(:nba, 't')
|
11
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
12
|
+
SportsDataApi::Nba.daily(2013, 12, 12)
|
13
|
+
end
|
14
|
+
subject { games }
|
15
|
+
it { should be_an_instance_of(SportsDataApi::Nba::Games) }
|
16
|
+
its(:date) { should eq "2013-12-12" }
|
17
|
+
its(:count) { should eq 2 }
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nba::Player, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nba_player',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
before do
|
9
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
10
|
+
SportsDataApi.set_access_level(:nba, 't')
|
11
|
+
end
|
12
|
+
let(:player) { SportsDataApi::Nba.team_roster('583ec825-fb46-11e1-82cb-f4ce4684ea4c').players.first.player }
|
13
|
+
|
14
|
+
describe 'player' do
|
15
|
+
subject { player }
|
16
|
+
it 'should have an id' do
|
17
|
+
expect(subject[:id]).to eql '17973022-bb81-427f-905e-86d3d3d9b51f'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should have a status' do
|
21
|
+
expect(subject[:status]).to eql 'ACT'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should have a full_name' do
|
25
|
+
expect(subject[:full_name]).to eql 'Festus Ezeli'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should have a first_name' do
|
29
|
+
expect(subject[:first_name]).to eql 'Festus'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should have a last_name' do
|
33
|
+
expect(subject[:last_name]).to eql 'Ezeli'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should have an abbr_name' do
|
37
|
+
expect(subject[:abbr_name]).to eql 'F.Ezeli'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should have a height' do
|
41
|
+
expect(subject[:height]).to eql '83'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should have a weight' do
|
45
|
+
expect(subject[:weight]).to eql '255'
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should have a position' do
|
49
|
+
expect(subject[:position]).to eql 'C'
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should have a primary_position' do
|
53
|
+
expect(subject[:primary_position]).to eql 'C'
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should have a jersey_number' do
|
57
|
+
expect(subject[:jersey_number]).to eql '31'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should have an experience' do
|
61
|
+
expect(subject[:experience]).to eql '1'
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should have a college' do
|
65
|
+
expect(subject[:college]).to eql 'Vanderbilt'
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should have a birth_place' do
|
69
|
+
expect(subject[:birth_place]).to eql 'Benin City,, NGA'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nba::Season, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nba_season',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
subject { SportsDataApi::Nba::Season }
|
9
|
+
describe '.season?' do
|
10
|
+
context :PRE do
|
11
|
+
it { SportsDataApi::Nba::Season.valid?(:PRE).should be_true }
|
12
|
+
end
|
13
|
+
context :REG do
|
14
|
+
it { subject.valid?(:REG).should be_true }
|
15
|
+
end
|
16
|
+
context :PST do
|
17
|
+
it { subject.valid?(:PST).should be_true }
|
18
|
+
end
|
19
|
+
context :pre do
|
20
|
+
it { subject.valid?(:pre).should be_false }
|
21
|
+
end
|
22
|
+
context :reg do
|
23
|
+
it { subject.valid?(:reg).should be_false }
|
24
|
+
end
|
25
|
+
context :pst do
|
26
|
+
it { subject.valid?(:pst).should be_false }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
context 'results from schedule fetch' do
|
30
|
+
let(:season) do
|
31
|
+
SportsDataApi.set_access_level(:nba, 't')
|
32
|
+
SportsDataApi.set_key(:nba, api_key(:nba))
|
33
|
+
SportsDataApi::Nba.schedule(2013, :reg)
|
34
|
+
end
|
35
|
+
subject { season }
|
36
|
+
it { should be_an_instance_of(SportsDataApi::Nba::Season) }
|
37
|
+
its(:year) { should eq 2013 }
|
38
|
+
its(:type) { should eq :REG }
|
39
|
+
its(:games) { should have(1230).games }
|
40
|
+
end
|
41
|
+
end
|