sports_data_api 0.11.3 → 0.11.5

Sign up to get free protection for your applications and to get access to all the features.
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