sports_data_api 0.11.6 → 0.12.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 +5 -5
- data/.travis.yml +1 -0
- data/lib/sports_data_api/nba/broadcast.rb +1 -9
- data/lib/sports_data_api/nba/game.rb +56 -37
- data/lib/sports_data_api/nba/games.rb +16 -13
- data/lib/sports_data_api/nba/player.rb +4 -16
- data/lib/sports_data_api/nba/season.rb +15 -10
- data/lib/sports_data_api/nba/stats.rb +6 -0
- data/lib/sports_data_api/nba/team.rb +29 -17
- data/lib/sports_data_api/nba/teams.rb +14 -65
- data/lib/sports_data_api/nba/venue.rb +10 -12
- data/lib/sports_data_api/nba.rb +10 -9
- data/lib/sports_data_api/version.rb +1 -1
- data/spec/cassettes/sports_data_api_nba.yml +66434 -112102
- data/spec/cassettes/sports_data_api_nba_broadcast.yml +67 -56
- data/spec/cassettes/sports_data_api_nba_game.yml +31079 -21019
- data/spec/cassettes/sports_data_api_nba_games.yml +112 -68
- data/spec/cassettes/sports_data_api_nba_league_hierarchy.yml +553 -469
- data/spec/cassettes/sports_data_api_nba_player.yml +1173 -212
- data/spec/cassettes/sports_data_api_nba_season.yml +18253 -18195
- data/spec/cassettes/sports_data_api_nba_team.yml +1429 -1284
- data/spec/cassettes/sports_data_api_nba_venue.yml +438 -56
- data/spec/lib/sports_data_api/nba/broadcast_spec.rb +8 -4
- data/spec/lib/sports_data_api/nba/game_spec.rb +32 -41
- data/spec/lib/sports_data_api/nba/games_spec.rb +10 -6
- data/spec/lib/sports_data_api/nba/player_spec.rb +86 -56
- data/spec/lib/sports_data_api/nba/season_spec.rb +4 -3
- data/spec/lib/sports_data_api/nba/team_spec.rb +44 -48
- data/spec/lib/sports_data_api/nba/teams_spec.rb +12 -63
- data/spec/lib/sports_data_api/nba/venue_spec.rb +23 -6
- data/spec/lib/sports_data_api/nba_spec.rb +97 -15
- metadata +4 -3
@@ -5,45 +5,35 @@ describe SportsDataApi::Nba::Game, vcr: {
|
|
5
5
|
record: :new_episodes,
|
6
6
|
match_requests_on: [:host, :path]
|
7
7
|
} do
|
8
|
-
|
8
|
+
before do
|
9
9
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
10
|
-
SportsDataApi.set_access_level(:nba, '
|
11
|
-
SportsDataApi::Nba.schedule(2013, :REG)
|
10
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
12
11
|
end
|
13
|
-
|
14
|
-
|
15
|
-
SportsDataApi.
|
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
|
12
|
+
|
13
|
+
context 'when from schedule' do
|
14
|
+
let(:season) { SportsDataApi::Nba.schedule(2017, :REG) }
|
24
15
|
subject { season.games.first }
|
16
|
+
|
25
17
|
it { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
26
|
-
its(:id) { should eq '
|
27
|
-
its(:scheduled) { should eq Time.new(
|
28
|
-
its(:
|
29
|
-
its(:
|
30
|
-
its(:home_team_id) { should eq '583ec7cd-fb46-11e1-82cb-f4ce4684ea4c' }
|
31
|
-
its(:away_team_id) { should eq '583ed157-fb46-11e1-82cb-f4ce4684ea4c' }
|
18
|
+
its(:id) { should eq '4c1b49cd-e114-4936-8a81-10b238cc5d45' }
|
19
|
+
its(:scheduled) { should eq Time.new(2017, 10, 18, 0, 0, 0, '+00:00') }
|
20
|
+
its(:home_team_id) { should eq '583ec773-fb46-11e1-82cb-f4ce4684ea4c' }
|
21
|
+
its(:away_team_id) { should eq '583eccfa-fb46-11e1-82cb-f4ce4684ea4c' }
|
32
22
|
its(:status) { should eq 'closed' }
|
33
23
|
its(:home_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
34
24
|
its(:away_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
35
25
|
describe 'parsing team info' do
|
36
26
|
it 'home team should have an name' do
|
37
|
-
subject.home_team.name.should eq '
|
27
|
+
subject.home_team.name.should eq 'Cleveland Cavaliers'
|
38
28
|
end
|
39
29
|
it 'away team should have an name' do
|
40
|
-
subject.away_team.name.should eq '
|
30
|
+
subject.away_team.name.should eq 'Boston Celtics'
|
41
31
|
end
|
42
32
|
it 'home team should have an alias' do
|
43
|
-
subject.home_team.alias.should eq '
|
33
|
+
subject.home_team.alias.should eq 'CLE'
|
44
34
|
end
|
45
35
|
it 'away team should have an alias' do
|
46
|
-
subject.away_team.alias.should eq '
|
36
|
+
subject.away_team.alias.should eq 'BOS'
|
47
37
|
end
|
48
38
|
end
|
49
39
|
its(:venue) { should be_an_instance_of(SportsDataApi::Nba::Venue) }
|
@@ -56,13 +46,13 @@ describe SportsDataApi::Nba::Game, vcr: {
|
|
56
46
|
expect { subject.pbp }.to raise_error(NotImplementedError)
|
57
47
|
end
|
58
48
|
end
|
59
|
-
|
60
|
-
|
49
|
+
|
50
|
+
context 'when from game_summary' do
|
51
|
+
subject { SportsDataApi::Nba.game_summary('e1dcf692-330d-46d3-8add-a241b388fbe2') }
|
52
|
+
|
61
53
|
it { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
62
54
|
its(:id) { should eq 'e1dcf692-330d-46d3-8add-a241b388fbe2' }
|
63
55
|
its(:scheduled) { should eq Time.new(2013, 10, 30, 22, 30, 00, '-04:00') }
|
64
|
-
its(:home) { should eq '583ec825-fb46-11e1-82cb-f4ce4684ea4c' }
|
65
|
-
its(:away) { should eq '583ecae2-fb46-11e1-82cb-f4ce4684ea4c' }
|
66
56
|
its(:status) { should eq 'closed' }
|
67
57
|
its(:quarter) { should eq 4 }
|
68
58
|
its(:clock) { should eq '00:00' }
|
@@ -83,7 +73,7 @@ describe SportsDataApi::Nba::Game, vcr: {
|
|
83
73
|
end
|
84
74
|
end
|
85
75
|
its(:venue) { should be_an_instance_of(SportsDataApi::Nba::Venue) }
|
86
|
-
its(:broadcast) { should
|
76
|
+
its(:broadcast) { should be_nil }
|
87
77
|
its(:summary) { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
88
78
|
it '#boxscore' do
|
89
79
|
expect { subject.boxscore }.to raise_error(NotImplementedError)
|
@@ -92,15 +82,16 @@ describe SportsDataApi::Nba::Game, vcr: {
|
|
92
82
|
expect { subject.pbp }.to raise_error(NotImplementedError)
|
93
83
|
end
|
94
84
|
end
|
95
|
-
|
96
|
-
|
85
|
+
|
86
|
+
context 'when from daily' do
|
87
|
+
let(:daily) { SportsDataApi::Nba.daily(2018, 1, 1) }
|
88
|
+
subject { daily.find { |g| g.id == '3e4d96b7-ac9b-4ad9-889d-08e894d07e59' } }
|
89
|
+
|
97
90
|
it { should be_an_instance_of(SportsDataApi::Nba::Game) }
|
98
|
-
its(:id) { should eq '
|
99
|
-
its(:scheduled) { should eq Time.new(
|
100
|
-
its(:
|
101
|
-
its(:
|
102
|
-
its(:home_team_id) { should eq '583ec9d6-fb46-11e1-82cb-f4ce4684ea4c' }
|
103
|
-
its(:away_team_id) { should eq '583ecdfb-fb46-11e1-82cb-f4ce4684ea4c' }
|
91
|
+
its(:id) { should eq '3e4d96b7-ac9b-4ad9-889d-08e894d07e59' }
|
92
|
+
its(:scheduled) { should eq Time.new(2018, 1, 2, 00, 30, 00, '+00:00') }
|
93
|
+
its(:home_team_id) { should eq '583ecda6-fb46-11e1-82cb-f4ce4684ea4c' }
|
94
|
+
its(:away_team_id) { should eq '583ecefd-fb46-11e1-82cb-f4ce4684ea4c' }
|
104
95
|
its(:status) { should eq 'closed' }
|
105
96
|
its(:quarter) { should eq nil }
|
106
97
|
its(:clock) { should eq nil }
|
@@ -108,16 +99,16 @@ describe SportsDataApi::Nba::Game, vcr: {
|
|
108
99
|
its(:away_team) { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
109
100
|
describe 'parsing team info' do
|
110
101
|
it 'home team should have an name' do
|
111
|
-
subject.home_team.name.should eq '
|
102
|
+
subject.home_team.name.should eq 'Toronto Raptors'
|
112
103
|
end
|
113
104
|
it 'away team should have an name' do
|
114
|
-
subject.away_team.name.should eq '
|
105
|
+
subject.away_team.name.should eq 'Milwaukee Bucks'
|
115
106
|
end
|
116
107
|
it 'home team should have an alias' do
|
117
|
-
subject.home_team.alias.should eq '
|
108
|
+
subject.home_team.alias.should eq 'TOR'
|
118
109
|
end
|
119
110
|
it 'away team should have an alias' do
|
120
|
-
subject.away_team.alias.should eq '
|
111
|
+
subject.away_team.alias.should eq 'MIL'
|
121
112
|
end
|
122
113
|
end
|
123
114
|
its(:venue) { should be_an_instance_of(SportsDataApi::Nba::Venue) }
|
@@ -6,14 +6,18 @@ describe SportsDataApi::Nba::Games, vcr: {
|
|
6
6
|
match_requests_on: [:host, :path]
|
7
7
|
} do
|
8
8
|
context 'results from daily schedule fetch' do
|
9
|
-
|
10
|
-
SportsDataApi.set_access_level(:nba, '
|
9
|
+
before do
|
10
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
11
11
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
12
|
-
SportsDataApi::Nba.daily(2013, 12, 12)
|
13
12
|
end
|
14
|
-
subject {
|
13
|
+
subject { SportsDataApi::Nba.daily(2018, 1, 1) }
|
15
14
|
it { should be_an_instance_of(SportsDataApi::Nba::Games) }
|
16
|
-
its(:date) { should eq
|
17
|
-
its(:count) { should eq
|
15
|
+
its(:date) { should eq '2018-01-01' }
|
16
|
+
its(:count) { should eq 4 }
|
17
|
+
|
18
|
+
it 'is enumerable' do
|
19
|
+
games = subject.map { |g| g.id }
|
20
|
+
expect(games).to match_array(%w[3e4d96b7-ac9b-4ad9-889d-08e894d07e59 97f525d9-0aee-4297-9b3c-b474166d8c79 c0f6a26d-8cdc-4eaa-be07-d1eb16324b45 effe3c21-395e-42c8-a036-1e14d6b332b9])
|
21
|
+
end
|
18
22
|
end
|
19
23
|
end
|
@@ -7,66 +7,96 @@ describe SportsDataApi::Nba::Player, vcr: {
|
|
7
7
|
} do
|
8
8
|
before do
|
9
9
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
10
|
-
SportsDataApi.set_access_level(:nba, '
|
10
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
11
11
|
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
expect(
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
expect(
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
expect(
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
expect(
|
34
|
-
|
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'
|
12
|
+
context 'when from team_roster' do
|
13
|
+
let(:roster) { SportsDataApi::Nba.team_roster('583ec825-fb46-11e1-82cb-f4ce4684ea4c') }
|
14
|
+
let(:players) { roster.players }
|
15
|
+
it 'parses out the data' do
|
16
|
+
player = players.find do |x|
|
17
|
+
x.player[:id] == '8ec91366-faea-4196-bbfd-b8fab7434795'
|
18
|
+
end
|
19
|
+
expect(player[:status]).to eq 'ACT'
|
20
|
+
expect(player[:full_name]).to eq 'Stephen Curry'
|
21
|
+
expect(player[:first_name]).to eq 'Stephen'
|
22
|
+
expect(player[:last_name]).to eq 'Curry'
|
23
|
+
expect(player[:abbr_name]).to eq 'S.Curry'
|
24
|
+
expect(player[:height]).to eq 75
|
25
|
+
expect(player[:weight]).to eq 190
|
26
|
+
expect(player[:position]).to eq 'G'
|
27
|
+
expect(player[:primary_position]).to eq 'PG'
|
28
|
+
expect(player[:jersey_number]).to eq '30'
|
29
|
+
expect(player[:experience]).to eq '8'
|
30
|
+
expect(player[:college]).to eq 'Davidson'
|
31
|
+
expect(player[:birth_place]).to eq 'Akron, OH, USA'
|
32
|
+
expect(player[:birthdate]).to eq '1988-03-14'
|
33
|
+
expect(player[:updated]).to eq '2017-10-17T19:37:08+00:00'
|
34
|
+
expect(player[:reference]).to eq '201939'
|
35
|
+
expect(player.stats).to be_nil
|
62
36
|
end
|
37
|
+
end
|
63
38
|
|
64
|
-
|
65
|
-
|
66
|
-
|
39
|
+
context 'when from .game_summary' do
|
40
|
+
let(:game_summary) { SportsDataApi::Nba.game_summary('e1dcf692-330d-46d3-8add-a241b388fbe2') }
|
41
|
+
let(:team) { game_summary.home_team }
|
42
|
+
let(:players) { team.players }
|
67
43
|
|
68
|
-
it '
|
69
|
-
|
44
|
+
it 'parses out the data' do
|
45
|
+
player = players.find do |x|
|
46
|
+
x.player[:id] == '8ec91366-faea-4196-bbfd-b8fab7434795'
|
47
|
+
end
|
48
|
+
expect(player[:status]).to be_nil
|
49
|
+
expect(player[:full_name]).to eq 'Stephen Curry'
|
50
|
+
expect(player[:first_name]).to eq 'Stephen'
|
51
|
+
expect(player[:last_name]).to eq 'Curry'
|
52
|
+
expect(player[:position]).to eq 'G'
|
53
|
+
expect(player[:primary_position]).to eq 'PG'
|
54
|
+
expect(player[:jersey_number]).to eq '30'
|
55
|
+
expect(player[:starter]).to eq true
|
56
|
+
expect(player[:active]).to eq true
|
57
|
+
expect(player.stats).to be_a SportsDataApi::Nba::Stats
|
58
|
+
expect(player.stats[:minutes]).to eq "23:57"
|
59
|
+
expect(player.stats[:field_goals_made]).to eq 4
|
60
|
+
expect(player.stats[:field_goals_att]).to eq 10
|
61
|
+
expect(player.stats[:field_goals_pct]).to eq 40.0
|
62
|
+
expect(player.stats[:three_points_made]).to eq 2
|
63
|
+
expect(player.stats[:three_points_att]).to eq 5
|
64
|
+
expect(player.stats[:three_points_pct]).to eq 40.0
|
65
|
+
expect(player.stats[:two_points_made]).to eq 2
|
66
|
+
expect(player.stats[:two_points_att]).to eq 5
|
67
|
+
expect(player.stats[:two_points_pct]).to eq 40.0
|
68
|
+
expect(player.stats[:blocked_att]).to eq 0
|
69
|
+
expect(player.stats[:free_throws_made]).to eq 0
|
70
|
+
expect(player.stats[:free_throws_att]).to eq 0
|
71
|
+
expect(player.stats[:free_throws_pct]).to eq 0.0
|
72
|
+
expect(player.stats[:offensive_rebounds]).to eq 0
|
73
|
+
expect(player.stats[:defensive_rebounds]).to eq 4
|
74
|
+
expect(player.stats[:rebounds]).to eq 4
|
75
|
+
expect(player.stats[:assists]).to eq 6
|
76
|
+
expect(player.stats[:turnovers]).to eq 1
|
77
|
+
expect(player.stats[:steals]).to eq 1
|
78
|
+
expect(player.stats[:blocks]).to eq 0
|
79
|
+
expect(player.stats[:assists_turnover_ratio]).to eq 6.0
|
80
|
+
expect(player.stats[:personal_fouls]).to eq 4
|
81
|
+
expect(player.stats[:tech_fouls]).to eq 0
|
82
|
+
expect(player.stats[:flagrant_fouls]).to eq 0
|
83
|
+
expect(player.stats[:pls_min]).to eq 28
|
84
|
+
expect(player.stats[:points]).to eq 10
|
85
|
+
expect(player.stats[:double_double]).to eq false
|
86
|
+
expect(player.stats[:triple_double]).to eq false
|
87
|
+
expect(player.stats[:effective_fg_pct]).to eq 50.0
|
88
|
+
expect(player.stats[:efficiency]).to eq 10
|
89
|
+
expect(player.stats[:efficiency_game_score]).to eq 8.4
|
90
|
+
expect(player.stats[:points_in_paint]).to eq 0
|
91
|
+
expect(player.stats[:points_in_paint_att]).to eq 0
|
92
|
+
expect(player.stats[:points_in_paint_made]).to eq 0
|
93
|
+
expect(player.stats[:points_in_paint_pct]).to eq 0.0
|
94
|
+
expect(player.stats[:true_shooting_att]).to eq 10.0
|
95
|
+
expect(player.stats[:true_shooting_pct]).to eq 50.0
|
96
|
+
expect(player.stats[:fouls_drawn]).to eq 0
|
97
|
+
expect(player.stats[:offensive_fouls]).to eq 0
|
98
|
+
expect(player.stats[:points_off_turnovers]).to eq 0
|
99
|
+
expect(player.stats[:second_chance_pts]).to eq 0
|
70
100
|
end
|
71
101
|
end
|
72
102
|
end
|
@@ -28,13 +28,14 @@ describe SportsDataApi::Nba::Season, vcr: {
|
|
28
28
|
end
|
29
29
|
context 'results from schedule fetch' do
|
30
30
|
let(:season) do
|
31
|
-
SportsDataApi.set_access_level(:nba, '
|
31
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
32
32
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
33
|
-
SportsDataApi::Nba.schedule(
|
33
|
+
SportsDataApi::Nba.schedule(2017, :reg)
|
34
34
|
end
|
35
35
|
subject { season }
|
36
36
|
it { should be_an_instance_of(SportsDataApi::Nba::Season) }
|
37
|
-
its(:
|
37
|
+
its(:id) { should eq '7dcb5184-ab33-49fe-bd18-c4ca2b1cfc08' }
|
38
|
+
its(:year) { should eq 2017 }
|
38
39
|
its(:type) { should eq :REG }
|
39
40
|
its(:games) { should have(1230).games }
|
40
41
|
end
|
@@ -5,27 +5,17 @@ describe SportsDataApi::Nba::Team, vcr: {
|
|
5
5
|
record: :new_episodes,
|
6
6
|
match_requests_on: [:host, :path]
|
7
7
|
} do
|
8
|
-
|
8
|
+
before do
|
9
9
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
10
|
-
SportsDataApi.set_access_level(:nba, '
|
11
|
-
SportsDataApi::Nba.teams
|
12
|
-
end
|
13
|
-
let(:roster) do
|
14
|
-
SportsDataApi.set_key(:nba, api_key(:nba))
|
15
|
-
SportsDataApi.set_access_level(:nba, 't')
|
16
|
-
SportsDataApi::Nba.team_roster('583ec825-fb46-11e1-82cb-f4ce4684ea4c')
|
17
|
-
end
|
18
|
-
let(:game_summary) do
|
19
|
-
SportsDataApi.set_key(:nba, api_key(:nba))
|
20
|
-
SportsDataApi.set_access_level(:nba, 't')
|
21
|
-
SportsDataApi::Nba.game_summary('e1dcf692-330d-46d3-8add-a241b388fbe2')
|
10
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
22
11
|
end
|
23
12
|
|
24
13
|
context 'results from teams fetch' do
|
25
|
-
|
14
|
+
let(:teams) { SportsDataApi::Nba.teams }
|
15
|
+
subject { teams.find { |t| t.alias == 'WAS' } }
|
16
|
+
|
26
17
|
it { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
27
18
|
its(:id) { should eq "583ec8d4-fb46-11e1-82cb-f4ce4684ea4c" }
|
28
|
-
its(:alias) { should eq 'WAS' }
|
29
19
|
its(:conference) { should eq 'EASTERN' }
|
30
20
|
its(:division) { should eq 'SOUTHEAST' }
|
31
21
|
its(:market) { should eq 'Washington' }
|
@@ -33,8 +23,11 @@ describe SportsDataApi::Nba::Team, vcr: {
|
|
33
23
|
its(:players) { should eq [] }
|
34
24
|
its(:points) { should be_nil }
|
35
25
|
end
|
26
|
+
|
36
27
|
context 'results from team roster fetch' do
|
28
|
+
let(:roster) { SportsDataApi::Nba.team_roster('583ec825-fb46-11e1-82cb-f4ce4684ea4c') }
|
37
29
|
subject { roster }
|
30
|
+
|
38
31
|
it { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
39
32
|
its(:id) { should eq "583ec825-fb46-11e1-82cb-f4ce4684ea4c" }
|
40
33
|
its(:alias) { should eq 'GSW' }
|
@@ -44,11 +37,14 @@ describe SportsDataApi::Nba::Team, vcr: {
|
|
44
37
|
its(:points) { should be_nil }
|
45
38
|
context 'players' do
|
46
39
|
subject { roster.players }
|
47
|
-
its(:count) { should eq
|
40
|
+
its(:count) { should eq 17 }
|
48
41
|
end
|
49
42
|
end
|
43
|
+
|
50
44
|
context 'results from game_summary fetch' do
|
45
|
+
let(:game_summary) { SportsDataApi::Nba.game_summary('e1dcf692-330d-46d3-8add-a241b388fbe2') }
|
51
46
|
subject { game_summary.home_team }
|
47
|
+
|
52
48
|
it { should be_an_instance_of(SportsDataApi::Nba::Team) }
|
53
49
|
its(:id) { should eq '583ec825-fb46-11e1-82cb-f4ce4684ea4c' }
|
54
50
|
its(:market) { should eq 'Golden State' }
|
@@ -58,7 +54,7 @@ describe SportsDataApi::Nba::Team, vcr: {
|
|
58
54
|
its(:conference) { should be_nil }
|
59
55
|
its(:division) { should be_nil }
|
60
56
|
its(:players) { should be_an_instance_of(Array) }
|
61
|
-
|
57
|
+
|
62
58
|
context 'players' do
|
63
59
|
subject { game_summary.home_team.players }
|
64
60
|
its(:count) { should eq 14 }
|
@@ -89,95 +85,95 @@ describe SportsDataApi::Nba::Team, vcr: {
|
|
89
85
|
expect(subject.player[:jersey_number]).to eq "5"
|
90
86
|
end
|
91
87
|
it 'should have a played' do
|
92
|
-
expect(subject.player[:played]).to eq
|
88
|
+
expect(subject.player[:played]).to eq true
|
93
89
|
end
|
94
90
|
it 'should have an active' do
|
95
|
-
expect(subject.player[:active]).to eq
|
91
|
+
expect(subject.player[:active]).to eq true
|
96
92
|
end
|
97
|
-
its(:stats){ should be_an_instance_of(SportsDataApi::Stats) }
|
93
|
+
its(:stats){ should be_an_instance_of(SportsDataApi::Nba::Stats) }
|
98
94
|
|
99
95
|
context 'stats' do
|
100
|
-
subject { game_summary.home_team.players.first.stats
|
96
|
+
subject { game_summary.home_team.players.first.stats }
|
101
97
|
it 'should have minutes' do
|
102
|
-
expect(subject[:minutes]).to
|
98
|
+
expect(subject[:minutes]).to eq '19:45'
|
103
99
|
end
|
104
100
|
it 'should have field_goals_made' do
|
105
|
-
expect(subject[:field_goals_made]).to
|
101
|
+
expect(subject[:field_goals_made]).to eq 2
|
106
102
|
end
|
107
103
|
it 'should have field_goals_made' do
|
108
|
-
expect(subject[:field_goals_att]).to
|
104
|
+
expect(subject[:field_goals_att]).to eq 10
|
109
105
|
end
|
110
106
|
it 'should have field_goals_pct' do
|
111
|
-
expect(subject[:field_goals_pct]).to
|
107
|
+
expect(subject[:field_goals_pct]).to eq 20.0
|
112
108
|
end
|
113
109
|
it 'should have two_points_made' do
|
114
|
-
expect(subject[:two_points_made]).to
|
110
|
+
expect(subject[:two_points_made]).to eq 1
|
115
111
|
end
|
116
112
|
it 'should have two_points_att' do
|
117
|
-
expect(subject[:two_points_att]).to
|
113
|
+
expect(subject[:two_points_att]).to eq 8
|
118
114
|
end
|
119
115
|
it 'should have two_points_pct' do
|
120
|
-
expect(subject[:two_points_pct]).to
|
116
|
+
expect(subject[:two_points_pct]).to eq 12.5
|
121
117
|
end
|
122
118
|
it 'should have three_points_made' do
|
123
|
-
expect(subject[:three_points_made]).to
|
119
|
+
expect(subject[:three_points_made]).to eq 1
|
124
120
|
end
|
125
121
|
it 'should have three_points_att' do
|
126
|
-
expect(subject[:three_points_att]).to
|
122
|
+
expect(subject[:three_points_att]).to eq 2
|
127
123
|
end
|
128
124
|
it 'should have three_points_pct' do
|
129
|
-
expect(subject[:three_points_pct]).to
|
125
|
+
expect(subject[:three_points_pct]).to eq 50.0
|
130
126
|
end
|
131
127
|
it 'should have blocked_att' do
|
132
|
-
expect(subject[:blocked_att]).to
|
128
|
+
expect(subject[:blocked_att]).to eq 2
|
133
129
|
end
|
134
130
|
it 'should have free_throws_made' do
|
135
|
-
expect(subject[:free_throws_made]).to
|
131
|
+
expect(subject[:free_throws_made]).to eq 2
|
136
132
|
end
|
137
133
|
it 'should have free_throws_att' do
|
138
|
-
expect(subject[:free_throws_att]).to
|
134
|
+
expect(subject[:free_throws_att]).to eq 2
|
139
135
|
end
|
140
136
|
it 'should have free_throws_pct' do
|
141
|
-
expect(subject[:free_throws_pct]).to
|
137
|
+
expect(subject[:free_throws_pct]).to eq 100.0
|
142
138
|
end
|
143
139
|
it 'should have offensive_rebounds' do
|
144
|
-
expect(subject[:offensive_rebounds]).to
|
140
|
+
expect(subject[:offensive_rebounds]).to eq 1
|
145
141
|
end
|
146
142
|
it 'should have defensive_rebounds' do
|
147
|
-
expect(subject[:defensive_rebounds]).to
|
143
|
+
expect(subject[:defensive_rebounds]).to eq 7
|
148
144
|
end
|
149
145
|
it 'should have rebounds' do
|
150
|
-
expect(subject[:rebounds]).to
|
146
|
+
expect(subject[:rebounds]).to eq 8
|
151
147
|
end
|
152
148
|
it 'should have assists' do
|
153
|
-
expect(subject[:assists]).to
|
149
|
+
expect(subject[:assists]).to eq 3
|
154
150
|
end
|
155
151
|
it 'should have turnovers' do
|
156
|
-
expect(subject[:turnovers]).to
|
152
|
+
expect(subject[:turnovers]).to eq 0
|
157
153
|
end
|
158
154
|
it 'should have steals' do
|
159
|
-
expect(subject[:steals]).to
|
155
|
+
expect(subject[:steals]).to eq 1
|
160
156
|
end
|
161
157
|
it 'should have blocks' do
|
162
|
-
expect(subject[:blocks]).to
|
158
|
+
expect(subject[:blocks]).to eq 0
|
163
159
|
end
|
164
160
|
it 'should have assists_turnover_ratio' do
|
165
|
-
expect(subject[:assists_turnover_ratio]).to
|
161
|
+
expect(subject[:assists_turnover_ratio]).to eq 0
|
166
162
|
end
|
167
163
|
it 'should have personal_fouls' do
|
168
|
-
expect(subject[:personal_fouls]).to
|
164
|
+
expect(subject[:personal_fouls]).to eq 2
|
169
165
|
end
|
170
166
|
it 'should have tech_fouls' do
|
171
|
-
expect(subject[:tech_fouls]).to
|
167
|
+
expect(subject[:tech_fouls]).to eq 0
|
172
168
|
end
|
173
169
|
it 'should have flagrant_fouls' do
|
174
|
-
expect(subject[:flagrant_fouls]).to
|
170
|
+
expect(subject[:flagrant_fouls]).to eq 0
|
175
171
|
end
|
176
172
|
it 'should have pls_min' do
|
177
|
-
expect(subject[:pls_min]).to
|
173
|
+
expect(subject[:pls_min]).to eq 3
|
178
174
|
end
|
179
175
|
it 'should have points' do
|
180
|
-
expect(subject[:points]).to
|
176
|
+
expect(subject[:points]).to eq 7
|
181
177
|
end
|
182
178
|
end
|
183
179
|
end
|
@@ -5,72 +5,21 @@ describe SportsDataApi::Nba::Teams, vcr: {
|
|
5
5
|
record: :new_episodes,
|
6
6
|
match_requests_on: [:host, :path]
|
7
7
|
} do
|
8
|
-
|
8
|
+
before do
|
9
9
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
10
|
-
SportsDataApi.set_access_level(:nba, '
|
11
|
-
SportsDataApi::Nba.teams
|
10
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
12
11
|
end
|
12
|
+
subject { SportsDataApi::Nba.teams }
|
13
13
|
|
14
|
-
let(:url) { 'https://api.sportsdatallc.org/nba-t3/league/hierarchy.xml' }
|
15
|
-
|
16
|
-
let(:warriors_xml) do
|
17
|
-
str = RestClient.get(url, params: { api_key: api_key(:nba) }).to_s
|
18
|
-
xml = Nokogiri::XML(str)
|
19
|
-
xml.remove_namespaces!
|
20
|
-
xml.xpath('/league/conference/division/team[@alias=\'GSW\']')
|
21
|
-
end
|
22
|
-
|
23
|
-
let(:warriors) { SportsDataApi::Nba::Team.new(warriors_xml) }
|
24
|
-
|
25
|
-
subject { teams }
|
26
|
-
its(:conferences) { should eq %w(EASTERN WESTERN).map { |str| str.to_sym } }
|
27
|
-
its(:divisions) { should eq %w(SOUTHEAST ATLANTIC CENTRAL NORTHWEST SOUTHWEST PACIFIC).map { |str| str.to_sym } }
|
28
14
|
its(:count) { should eq 30 }
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
it { should respond_to :atlantic }
|
39
|
-
it { should respond_to :PACIFIC }
|
40
|
-
|
41
|
-
its(:EASTERN) { should be_a Array }
|
42
|
-
its(:WESTERN) { should be_a Array }
|
43
|
-
|
44
|
-
context '#EASTERN' do
|
45
|
-
subject { teams.EASTERN }
|
46
|
-
its(:count) { should eq 15 }
|
47
|
-
end
|
48
|
-
|
49
|
-
context '#eastern' do
|
50
|
-
subject { teams.eastern }
|
51
|
-
its(:count) { should eq 15 }
|
52
|
-
end
|
53
|
-
|
54
|
-
context '#WESTERN' do
|
55
|
-
subject { teams.WESTERN }
|
56
|
-
its(:count) { should eq 15 }
|
57
|
-
end
|
58
|
-
|
59
|
-
context '#western' do
|
60
|
-
subject { teams.western }
|
61
|
-
its(:count) { should eq 15 }
|
62
|
-
end
|
63
|
-
|
64
|
-
context '#pacific' do
|
65
|
-
subject { teams.pacific }
|
66
|
-
its(:count) { should eq 5 }
|
67
|
-
it { should include warriors }
|
68
|
-
end
|
69
|
-
|
70
|
-
context '#PACIFIC' do
|
71
|
-
subject { teams.PACIFIC }
|
72
|
-
its(:count) { should eq 5 }
|
73
|
-
it { should include warriors }
|
74
|
-
end
|
15
|
+
it 'parses outs the specific team' do
|
16
|
+
pistons = subject.find { |t| t.name == 'Pistons' }
|
17
|
+
expect(pistons.id).to eq '583ec928-fb46-11e1-82cb-f4ce4684ea4c'
|
18
|
+
expect(pistons.market).to eq 'Detroit'
|
19
|
+
expect(pistons.alias).to eq 'DET'
|
20
|
+
expect(pistons.conference).to eq 'EASTERN'
|
21
|
+
expect(pistons.division).to eq 'CENTRAL'
|
22
|
+
expect(pistons.venue).to be_a SportsDataApi::Nba::Venue
|
23
|
+
expect(pistons.players).to be_empty
|
75
24
|
end
|
76
25
|
end
|
@@ -5,20 +5,37 @@ describe SportsDataApi::Nba::Venue, vcr: {
|
|
5
5
|
record: :new_episodes,
|
6
6
|
match_requests_on: [:host, :path]
|
7
7
|
} do
|
8
|
-
|
9
|
-
SportsDataApi.set_access_level(:nba, '
|
8
|
+
before do
|
9
|
+
SportsDataApi.set_access_level(:nba, 'trial')
|
10
10
|
SportsDataApi.set_key(:nba, api_key(:nba))
|
11
|
-
SportsDataApi::Nba.daily(2013, 12, 12)
|
12
11
|
end
|
12
|
+
|
13
13
|
context 'results from weekly schedule fetch' do
|
14
|
-
|
14
|
+
let(:daily) { SportsDataApi::Nba.daily(2013, 12, 12) }
|
15
|
+
subject { daily.first.venue }
|
16
|
+
|
17
|
+
its(:id) { should eq '7a330bcd-ac0f-50ca-bc29-2460e5c476b3' }
|
18
|
+
its(:name) { should eq 'Barclays Center' }
|
19
|
+
its(:address) { should eq '620 Atlantic Avenue.' }
|
20
|
+
its(:city) { should eq 'Brooklyn' }
|
21
|
+
its(:state) { should eq 'NY' }
|
22
|
+
its(:zip) { should eq '11217' }
|
23
|
+
its(:country) { should eq 'USA' }
|
24
|
+
its(:capacity) { should eq 17732 }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'from teams' do
|
28
|
+
let(:teams) { SportsDataApi::Nba.teams }
|
29
|
+
let(:nets) { teams.find { |t| t.name == 'Nets' } }
|
30
|
+
subject { nets.venue }
|
31
|
+
|
15
32
|
its(:id) { should eq '7a330bcd-ac0f-50ca-bc29-2460e5c476b3' }
|
16
33
|
its(:name) { should eq 'Barclays Center' }
|
17
34
|
its(:address) { should eq '620 Atlantic Avenue.' }
|
18
35
|
its(:city) { should eq 'Brooklyn' }
|
19
36
|
its(:state) { should eq 'NY' }
|
20
|
-
its(:zip) { '11217' }
|
37
|
+
its(:zip) { should eq '11217' }
|
21
38
|
its(:country) { should eq 'USA' }
|
22
|
-
its(:capacity) { should eq
|
39
|
+
its(:capacity) { should eq 17732 }
|
23
40
|
end
|
24
41
|
end
|