sports_data_api 0.11.3 → 0.11.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 163cb7875408397dd2c91cb33be6d59959b560bd
4
- data.tar.gz: c66059aa7a900fecdbfc5656dbd1e69b3d869e55
3
+ metadata.gz: 1573bfabde4846e7900508165cdf0ab809c9bd1b
4
+ data.tar.gz: 463c8b2301292be250d5534c231812c061da9413
5
5
  SHA512:
6
- metadata.gz: 571d1169c9d41262898c20ef00af334a296ba8f1234464e2952c01b22b71bff931c0b3c49e6763bcf76ec7c41ecb7cd3e44b6001573b22ad3e39d94fedb249a9
7
- data.tar.gz: 9ea125bdbd1afb39c806ba0bf3238d50c1151a62765639985fa130a1ea816d50bde38e2e27ec174f19fc79e91473b35e763a9d6c8b6dcd00ec99d572b72b3528
6
+ metadata.gz: 10fe3f991743a639118a3c2cccc2b1ccd1c8df486b7bf7bb554f46d70616bb1341e7a1b6cc83b97dbe9c2bbae82af366754b84a8c91f65da5b095c9b2ec07d22
7
+ data.tar.gz: 8b2836362ed1e771a44365d4e5e18aebce07ba08316431176b0fc4947b595a6d55149e58db23508494e44a2bff2f621606aecb6b1614ba4c5e2195f4a72ac3e4
@@ -15,6 +15,7 @@ module SportsDataApi
15
15
  autoload :League, File.join(DIR, 'league')
16
16
  autoload :MergedStats, File.join(DIR, 'merged_stats')
17
17
  autoload :Player, File.join(DIR, 'player')
18
+ autoload :Scoring, File.join(DIR, 'scoring')
18
19
  autoload :Statistics, File.join(DIR, 'statistics')
19
20
  autoload :Team, File.join(DIR, 'team')
20
21
 
@@ -0,0 +1,27 @@
1
+ module SportsDataApi
2
+ module Mlb
3
+ class Scoring
4
+ attr_reader :scoring
5
+
6
+ def initialize(scoring)
7
+ @scoring = scoring
8
+ end
9
+
10
+ def inning
11
+ @inning ||= last_inning ? last_inning['number'] : nil
12
+ end
13
+
14
+ def inning_half
15
+ return unless last_inning
16
+
17
+ @inning_half ||= last_inning['runs'] == 'X' ? 'top' : 'bot'
18
+ end
19
+
20
+ private
21
+
22
+ def last_inning
23
+ @last_inning ||= (scoring || []).sort_by { |i| i['number'] }.last
24
+ end
25
+ end
26
+ end
27
+ end
@@ -14,11 +14,15 @@ module SportsDataApi
14
14
  end
15
15
 
16
16
  def starting_pitcher
17
- @starting_pitcher ||= populate_player :starting_pitcher
17
+ @starting_pitcher ||= populate_model :starting_pitcher, Player
18
18
  end
19
19
 
20
20
  def probable_pitcher
21
- @probable_pitcher ||= populate_player :probable_pitcher
21
+ @probable_pitcher ||= populate_model :probable_pitcher, Player
22
+ end
23
+
24
+ def scoring
25
+ @scoring ||= populate_model :scoring, Scoring
22
26
  end
23
27
 
24
28
  private
@@ -29,8 +33,8 @@ module SportsDataApi
29
33
  end
30
34
  end
31
35
 
32
- def populate_player(key)
33
- Player.new(team[key]) if team.has_key?(key)
36
+ def populate_model(key, klass)
37
+ klass.new(team[key]) if team.has_key?(key)
34
38
  end
35
39
  end
36
40
  end
@@ -1,3 +1,3 @@
1
1
  module SportsDataApi
2
- VERSION = '0.11.3'
2
+ VERSION = '0.11.5'
3
3
  end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe SportsDataApi::Mlb::Scoring do
4
+ context 'when no scoring array' do
5
+ subject { SportsDataApi::Mlb::Scoring.new(nil) }
6
+
7
+ its(:inning) { should be_nil }
8
+ its(:inning_half) { should be_nil }
9
+ end
10
+
11
+ context 'when empty scoring' do
12
+ subject { SportsDataApi::Mlb::Scoring.new([]) }
13
+
14
+ its(:inning) { should be_nil }
15
+ its(:inning_half) { should be_nil }
16
+ end
17
+
18
+ context 'when 9 innings and scores' do
19
+ it 'returns the innings and no half inning' do
20
+ data = (1..9).to_a.each_with_object([]) do |num, arr|
21
+ arr.push({
22
+ 'number' => num, 'sequence' => num,
23
+ 'runs' => 0, 'type' => 'inning'
24
+ })
25
+ end
26
+ subject = SportsDataApi::Mlb::Scoring.new(data)
27
+
28
+ expect(subject.inning).to eq 9
29
+ expect(subject.inning_half).to eq 'bot'
30
+ end
31
+ end
32
+
33
+ context 'when top 7 innings and scores' do
34
+ it 'returns the innings and no half inning' do
35
+ data = (1..7).to_a.each_with_object([]) do |num, arr|
36
+ arr.push({
37
+ 'number' => num, 'sequence' => num,
38
+ 'runs' => (num == 7 ? 'X' : 0), 'type' => 'inning'
39
+ })
40
+ end
41
+ subject = SportsDataApi::Mlb::Scoring.new(data)
42
+
43
+ expect(subject.inning).to eq 7
44
+ expect(subject.inning_half).to eq 'top'
45
+ end
46
+ end
47
+
48
+ context 'when bottom 6 innings and scores' do
49
+ it 'returns the innings and no half inning' do
50
+ data = (1..6).to_a.each_with_object([]) do |num, arr|
51
+ arr.push({
52
+ 'number' => num, 'sequence' => num,
53
+ 'runs' => 0, 'type' => 'inning'
54
+ })
55
+ end
56
+ subject = SportsDataApi::Mlb::Scoring.new(data)
57
+
58
+ expect(subject.inning).to eq 6
59
+ expect(subject.inning_half).to eq 'bot'
60
+ end
61
+ end
62
+ end
@@ -17,6 +17,7 @@ describe SportsDataApi::Mlb::Team, vcr: {
17
17
  its(:starting_pitcher) { should be_nil }
18
18
  its(:probable_pitcher) { should be_nil }
19
19
  its(:expected_players) { should be_empty }
20
+ its(:scoring) { should be_nil }
20
21
 
21
22
  it 'sets the id' do
22
23
  expect(subject[:id]).to eq '575c19b7-4052-41c2-9f0a-1c5813d02f99'
@@ -39,6 +40,7 @@ describe SportsDataApi::Mlb::Team, vcr: {
39
40
  end
40
41
 
41
42
  it { should be_an_instance_of(SportsDataApi::Mlb::Team) }
43
+ its(:scoring) { should be_instance_of(SportsDataApi::Mlb::Scoring) }
42
44
 
43
45
  its(:expected_players) { should be_empty }
44
46
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sports_data_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.3
4
+ version: 0.11.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Lovelett
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-16 00:00:00.000000000 Z
12
+ date: 2017-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -298,6 +298,7 @@ files:
298
298
  - lib/sports_data_api/mlb/league.rb
299
299
  - lib/sports_data_api/mlb/merged_stats.rb
300
300
  - lib/sports_data_api/mlb/player.rb
301
+ - lib/sports_data_api/mlb/scoring.rb
301
302
  - lib/sports_data_api/mlb/statistics.rb
302
303
  - lib/sports_data_api/mlb/team.rb
303
304
  - lib/sports_data_api/nba.rb
@@ -472,6 +473,7 @@ files:
472
473
  - spec/lib/sports_data_api/mlb/league_spec.rb
473
474
  - spec/lib/sports_data_api/mlb/merged_stats_spec.rb
474
475
  - spec/lib/sports_data_api/mlb/player_spec.rb
476
+ - spec/lib/sports_data_api/mlb/scoring_spec.rb
475
477
  - spec/lib/sports_data_api/mlb/season_schedule_spec.rb
476
478
  - spec/lib/sports_data_api/mlb/statistics_spec.rb
477
479
  - spec/lib/sports_data_api/mlb/team_spec.rb
@@ -653,6 +655,7 @@ test_files:
653
655
  - spec/lib/sports_data_api/mlb/league_spec.rb
654
656
  - spec/lib/sports_data_api/mlb/merged_stats_spec.rb
655
657
  - spec/lib/sports_data_api/mlb/player_spec.rb
658
+ - spec/lib/sports_data_api/mlb/scoring_spec.rb
656
659
  - spec/lib/sports_data_api/mlb/season_schedule_spec.rb
657
660
  - spec/lib/sports_data_api/mlb/statistics_spec.rb
658
661
  - spec/lib/sports_data_api/mlb/team_spec.rb