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.
Files changed (32) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +1 -0
  3. data/lib/sports_data_api/nba/broadcast.rb +1 -9
  4. data/lib/sports_data_api/nba/game.rb +56 -37
  5. data/lib/sports_data_api/nba/games.rb +16 -13
  6. data/lib/sports_data_api/nba/player.rb +4 -16
  7. data/lib/sports_data_api/nba/season.rb +15 -10
  8. data/lib/sports_data_api/nba/stats.rb +6 -0
  9. data/lib/sports_data_api/nba/team.rb +29 -17
  10. data/lib/sports_data_api/nba/teams.rb +14 -65
  11. data/lib/sports_data_api/nba/venue.rb +10 -12
  12. data/lib/sports_data_api/nba.rb +10 -9
  13. data/lib/sports_data_api/version.rb +1 -1
  14. data/spec/cassettes/sports_data_api_nba.yml +66434 -112102
  15. data/spec/cassettes/sports_data_api_nba_broadcast.yml +67 -56
  16. data/spec/cassettes/sports_data_api_nba_game.yml +31079 -21019
  17. data/spec/cassettes/sports_data_api_nba_games.yml +112 -68
  18. data/spec/cassettes/sports_data_api_nba_league_hierarchy.yml +553 -469
  19. data/spec/cassettes/sports_data_api_nba_player.yml +1173 -212
  20. data/spec/cassettes/sports_data_api_nba_season.yml +18253 -18195
  21. data/spec/cassettes/sports_data_api_nba_team.yml +1429 -1284
  22. data/spec/cassettes/sports_data_api_nba_venue.yml +438 -56
  23. data/spec/lib/sports_data_api/nba/broadcast_spec.rb +8 -4
  24. data/spec/lib/sports_data_api/nba/game_spec.rb +32 -41
  25. data/spec/lib/sports_data_api/nba/games_spec.rb +10 -6
  26. data/spec/lib/sports_data_api/nba/player_spec.rb +86 -56
  27. data/spec/lib/sports_data_api/nba/season_spec.rb +4 -3
  28. data/spec/lib/sports_data_api/nba/team_spec.rb +44 -48
  29. data/spec/lib/sports_data_api/nba/teams_spec.rb +12 -63
  30. data/spec/lib/sports_data_api/nba/venue_spec.rb +23 -6
  31. data/spec/lib/sports_data_api/nba_spec.rb +97 -15
  32. 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
- let(:season) do
8
+ before do
9
9
  SportsDataApi.set_key(:nba, api_key(:nba))
10
- SportsDataApi.set_access_level(:nba, 't')
11
- SportsDataApi::Nba.schedule(2013, :REG)
10
+ SportsDataApi.set_access_level(:nba, 'trial')
12
11
  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
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 '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(: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 'Indiana Pacers'
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 'Orlando Magic'
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 'IND'
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 'ORL'
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
- context 'results from game_summary fetch' do
60
- subject { game_summary }
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 be_an_instance_of(SportsDataApi::Nba::Broadcast) }
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
- context 'results from daily schedule fetch' do
96
- subject { daily_schedule.first }
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 '9dbf017d-250d-4ee7-8b3b-00dfa2f9e8b7' }
99
- its(:scheduled) { should eq Time.new(2013, 12, 12, 20, 00, 00, '-05:00') }
100
- its(:home) { should eq '583ec9d6-fb46-11e1-82cb-f4ce4684ea4c' }
101
- its(:away) { should eq '583ecdfb-fb46-11e1-82cb-f4ce4684ea4c' }
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 'Brooklyn Nets'
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 'Los Angeles Clippers'
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 'BKN'
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 'LAC'
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
- let(:games) do
10
- SportsDataApi.set_access_level(:nba, 't')
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 { games }
13
+ subject { SportsDataApi::Nba.daily(2018, 1, 1) }
15
14
  it { should be_an_instance_of(SportsDataApi::Nba::Games) }
16
- its(:date) { should eq "2013-12-12" }
17
- its(:count) { should eq 2 }
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, 't')
10
+ SportsDataApi.set_access_level(:nba, 'trial')
11
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'
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
- it 'should have a college' do
65
- expect(subject[:college]).to eql 'Vanderbilt'
66
- end
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 'should have a birth_place' do
69
- expect(subject[:birth_place]).to eql 'Benin City,, NGA'
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, 't')
31
+ SportsDataApi.set_access_level(:nba, 'trial')
32
32
  SportsDataApi.set_key(:nba, api_key(:nba))
33
- SportsDataApi::Nba.schedule(2013, :reg)
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(:year) { should eq 2013 }
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
- let(:teams) do
8
+ before do
9
9
  SportsDataApi.set_key(:nba, api_key(:nba))
10
- SportsDataApi.set_access_level(:nba, 't')
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
- subject { teams.first }
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 15 }
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 "true"
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 "true"
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.statistics }
96
+ subject { game_summary.home_team.players.first.stats }
101
97
  it 'should have minutes' do
102
- expect(subject[:minutes]).to eql '19:45'
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 eql '2'
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 eql '10'
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 eql '20.0'
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 eql '1'
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 eql '8'
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 eql '0.125'
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 eql '1'
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 eql '2'
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 eql '50.0'
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 eql '2'
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 eql '2'
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 eql '2'
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 eql '100.0'
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 eql '1'
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 eql '7'
143
+ expect(subject[:defensive_rebounds]).to eq 7
148
144
  end
149
145
  it 'should have rebounds' do
150
- expect(subject[:rebounds]).to eql '8'
146
+ expect(subject[:rebounds]).to eq 8
151
147
  end
152
148
  it 'should have assists' do
153
- expect(subject[:assists]).to eql '3'
149
+ expect(subject[:assists]).to eq 3
154
150
  end
155
151
  it 'should have turnovers' do
156
- expect(subject[:turnovers]).to eql '0'
152
+ expect(subject[:turnovers]).to eq 0
157
153
  end
158
154
  it 'should have steals' do
159
- expect(subject[:steals]).to eql '1'
155
+ expect(subject[:steals]).to eq 1
160
156
  end
161
157
  it 'should have blocks' do
162
- expect(subject[:blocks]).to eql '0'
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 eql '0'
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 eql '2'
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 eql '0'
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 eql '0'
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 eql '3'
173
+ expect(subject[:pls_min]).to eq 3
178
174
  end
179
175
  it 'should have points' do
180
- expect(subject[:points]).to eql '7'
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
- let(:teams) do
8
+ before do
9
9
  SportsDataApi.set_key(:nba, api_key(:nba))
10
- SportsDataApi.set_access_level(:nba, 't')
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
- it { subject[:"583ec825-fb46-11e1-82cb-f4ce4684ea4c"].should eq warriors }
31
-
32
- describe 'meta methods' do
33
- it { should respond_to :EASTERN }
34
- it { should respond_to :WESTERN }
35
- it { should respond_to :eastern }
36
- it { should respond_to :western }
37
- it { should respond_to :ATLANTIC }
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
- let(:daily_schedule) do
9
- SportsDataApi.set_access_level(:nba, 't')
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
- subject { daily_schedule.first.venue }
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 '18200' }
39
+ its(:capacity) { should eq 17732 }
23
40
  end
24
41
  end