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.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +2 -1
  6. data/Guardfile +1 -1
  7. data/README.md +20 -5
  8. data/lib/sports_data_api/exception.rb +5 -0
  9. data/lib/sports_data_api/mlb/boxscore.rb +36 -0
  10. data/lib/sports_data_api/mlb/broadcast.rb +14 -0
  11. data/lib/sports_data_api/mlb/game.rb +30 -0
  12. data/lib/sports_data_api/mlb/game_stat.rb +26 -0
  13. data/lib/sports_data_api/mlb/game_stats.rb +44 -0
  14. data/lib/sports_data_api/mlb/games.rb +29 -0
  15. data/lib/sports_data_api/mlb/player.rb +17 -0
  16. data/lib/sports_data_api/mlb/players.rb +42 -0
  17. data/lib/sports_data_api/mlb/season.rb +18 -0
  18. data/lib/sports_data_api/mlb/team.rb +35 -0
  19. data/lib/sports_data_api/mlb/teams.rb +42 -0
  20. data/lib/sports_data_api/mlb/venue.rb +15 -0
  21. data/lib/sports_data_api/mlb/venues.rb +37 -0
  22. data/lib/sports_data_api/mlb.rb +82 -0
  23. data/lib/sports_data_api/nba/broadcast.rb +14 -0
  24. data/lib/sports_data_api/nba/game.rb +54 -0
  25. data/lib/sports_data_api/nba/games.rb +26 -0
  26. data/lib/sports_data_api/nba/player.rb +22 -0
  27. data/lib/sports_data_api/nba/season.rb +28 -0
  28. data/lib/sports_data_api/nba/team.rb +40 -0
  29. data/lib/sports_data_api/nba/teams.rb +83 -0
  30. data/lib/sports_data_api/nba/venue.rb +20 -0
  31. data/lib/sports_data_api/nba.rb +71 -0
  32. data/lib/sports_data_api/nfl/broadcast.rb +15 -0
  33. data/lib/sports_data_api/nfl/game.rb +83 -0
  34. data/lib/sports_data_api/nfl/games.rb +29 -0
  35. data/lib/sports_data_api/nfl/injuries.rb +9 -0
  36. data/lib/sports_data_api/nfl/player.rb +15 -0
  37. data/lib/sports_data_api/nfl/player_season_stats.rb +26 -0
  38. data/lib/sports_data_api/nfl/season.rb +27 -0
  39. data/lib/sports_data_api/nfl/team.rb +46 -0
  40. data/lib/sports_data_api/nfl/team_roster.rb +17 -0
  41. data/lib/sports_data_api/nfl/team_season_stats.rb +19 -0
  42. data/lib/sports_data_api/nfl/teams.rb +84 -0
  43. data/lib/sports_data_api/nfl/venue.rb +22 -0
  44. data/lib/sports_data_api/nfl/weather.rb +17 -0
  45. data/lib/sports_data_api/nfl/week.rb +20 -0
  46. data/lib/sports_data_api/nfl.rb +98 -0
  47. data/lib/sports_data_api/stats.rb +13 -0
  48. data/lib/sports_data_api/version.rb +1 -1
  49. data/lib/sports_data_api.rb +37 -12
  50. data/spec/cassettes/sports_data_api_mlb_game.yml +20193 -0
  51. data/spec/cassettes/sports_data_api_mlb_game_boxscore.yml +225 -0
  52. data/spec/cassettes/sports_data_api_mlb_game_stats.yml +657 -0
  53. data/spec/cassettes/sports_data_api_mlb_games.yml +195 -0
  54. data/spec/cassettes/sports_data_api_mlb_player.yml +10891 -0
  55. data/spec/cassettes/sports_data_api_mlb_season.yml +20193 -0
  56. data/spec/cassettes/sports_data_api_mlb_team.yml +182 -0
  57. data/spec/cassettes/sports_data_api_mlb_team_roster.yml +10891 -0
  58. data/spec/cassettes/sports_data_api_mlb_teams.yml +403 -0
  59. data/spec/cassettes/sports_data_api_mlb_venues.yml +343 -0
  60. data/spec/cassettes/sports_data_api_nba.yml +74176 -0
  61. data/spec/cassettes/sports_data_api_nba_broadcast.yml +88 -0
  62. data/spec/cassettes/sports_data_api_nba_game.yml +21202 -0
  63. data/spec/cassettes/sports_data_api_nba_games.yml +128 -0
  64. data/spec/cassettes/sports_data_api_nba_league_hierarchy.yml +545 -0
  65. data/spec/cassettes/sports_data_api_nba_player.yml +244 -0
  66. data/spec/cassettes/sports_data_api_nba_season.yml +18228 -0
  67. data/spec/cassettes/sports_data_api_nba_team.yml +1398 -0
  68. data/spec/cassettes/sports_data_api_nba_team_roster.yml +244 -0
  69. data/spec/cassettes/sports_data_api_nba_venue.yml +88 -0
  70. data/spec/cassettes/sports_data_api_nfl.yml +19105 -0
  71. data/spec/cassettes/sports_data_api_nfl_broadcast.yml +112 -0
  72. data/spec/cassettes/sports_data_api_nfl_game.yml +16139 -0
  73. data/spec/cassettes/sports_data_api_nfl_games.yml +912 -0
  74. data/spec/cassettes/sports_data_api_nfl_player_season_stats.yml +997 -0
  75. data/spec/cassettes/sports_data_api_nfl_season.yml +14100 -0
  76. data/spec/cassettes/sports_data_api_nfl_team.yml +783 -0
  77. data/spec/cassettes/sports_data_api_nfl_team_hierarchy.yml +909 -0
  78. data/spec/cassettes/sports_data_api_nfl_team_roster.yml +618 -0
  79. data/spec/cassettes/sports_data_api_nfl_team_season_stats.yml +981 -0
  80. data/spec/cassettes/sports_data_api_nfl_venue.yml +112 -0
  81. data/spec/cassettes/sports_data_api_nfl_weather.yml +112 -0
  82. data/spec/cassettes/sports_data_api_nfl_week.yml +14100 -0
  83. data/spec/lib/sports_data_api/mlb/boxscore_spec.rb +63 -0
  84. data/spec/lib/sports_data_api/mlb/game_spec.rb +24 -0
  85. data/spec/lib/sports_data_api/mlb/game_stats_spec.rb +25 -0
  86. data/spec/lib/sports_data_api/mlb/games_spec.rb +24 -0
  87. data/spec/lib/sports_data_api/mlb/player_spec.rb +103 -0
  88. data/spec/lib/sports_data_api/mlb/players_spec.rb +17 -0
  89. data/spec/lib/sports_data_api/mlb/season_spec.rb +19 -0
  90. data/spec/lib/sports_data_api/mlb/team_spec.rb +24 -0
  91. data/spec/lib/sports_data_api/mlb/teams_spec.rb +30 -0
  92. data/spec/lib/sports_data_api/mlb/venues_spec.rb +17 -0
  93. data/spec/lib/sports_data_api/nba/broadcast_spec.rb +18 -0
  94. data/spec/lib/sports_data_api/nba/game_spec.rb +87 -0
  95. data/spec/lib/sports_data_api/nba/games_spec.rb +19 -0
  96. data/spec/lib/sports_data_api/nba/player_spec.rb +72 -0
  97. data/spec/lib/sports_data_api/nba/season_spec.rb +41 -0
  98. data/spec/lib/sports_data_api/nba/team_spec.rb +185 -0
  99. data/spec/lib/sports_data_api/nba/teams_spec.rb +76 -0
  100. data/spec/lib/sports_data_api/nba/venue_spec.rb +24 -0
  101. data/spec/lib/sports_data_api/nba_spec.rb +41 -0
  102. data/spec/lib/sports_data_api/nfl/broadcast_spec.rb +19 -0
  103. data/spec/lib/sports_data_api/nfl/game_spec.rb +126 -0
  104. data/spec/lib/sports_data_api/nfl/games_spec.rb +21 -0
  105. data/spec/lib/sports_data_api/nfl/player_season_stats.rb +28 -0
  106. data/spec/lib/sports_data_api/nfl/season_spec.rb +41 -0
  107. data/spec/lib/sports_data_api/nfl/team_roster_spec.rb +28 -0
  108. data/spec/lib/sports_data_api/nfl/team_season_stats.rb +19 -0
  109. data/spec/lib/sports_data_api/nfl/team_spec.rb +52 -0
  110. data/spec/lib/sports_data_api/nfl/teams_spec.rb +77 -0
  111. data/spec/lib/sports_data_api/nfl/venue_spec.rb +26 -0
  112. data/spec/lib/sports_data_api/nfl/weather_spec.rb +21 -0
  113. data/spec/lib/sports_data_api/nfl/week_spec.rb +21 -0
  114. data/spec/lib/sports_data_api/nfl_spec.rb +113 -0
  115. data/spec/lib/sports_data_api_spec.rb +8 -5
  116. data/spec/spec_helper.rb +30 -9
  117. data/sports_data_api.gemspec +19 -15
  118. metadata +267 -76
  119. data/.rvmrc +0 -38
  120. data/lib/nfl.rb +0 -149
  121. data/spec/lib/nfl_spec.rb +0 -125
  122. data/spec/xml/boxscore.xml +0 -93
  123. data/spec/xml/schedule.xml +0 -4067
  124. 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