nfl_data 0.0.10 → 0.0.11

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: 9fd1960572c8ad1676477b259f550f616665d587
4
- data.tar.gz: 23369e62b15791b7885d8b21ab5ab85a9c2cab04
3
+ metadata.gz: fde80abd92b5afed0b3c16a9cd3d687387380bd5
4
+ data.tar.gz: f904cf0f9158c3996494aff4864f1ab3767daa59
5
5
  SHA512:
6
- metadata.gz: 393b22f179d6c5eb1d7e986d727e634ba647fdd8534bdc6a40f00e9e8ec0a33837f5a795f264d8966e3db74f523c3291ce10e386e09a3215cd18dfbd588ff653
7
- data.tar.gz: 3473ede86be3f67842d75ba6fe118d70625781e71bb8bd1cf555908722bfe4bc62815fad05466cfdeb30b26e5871a1bc6c97cc402877a79e9b1c1ca3872b4798
6
+ metadata.gz: 6e7d173e1e01bdf293fda1ad9c5c495bb6d7a3f4d5ee0382a680e411241450aaf0c6c762aeb7334a48ec6f403de1e702ceeec7981d29b5478123f9dac38b415e
7
+ data.tar.gz: fd76a8e7240ae7b46e4c5b084c52138f11eb671de0ae7d8115d926a205e510636563d670e3291ec138e68688e1e594e134baeb729fc57c200944f1059528b365
@@ -0,0 +1,5 @@
1
+ engines:
2
+ rubocop:
3
+ enabled: true
4
+ bundler-audit:
5
+ enabled: true
@@ -0,0 +1,2 @@
1
+ Style/Documentation:
2
+ Enabled: false
data/README.md CHANGED
@@ -5,6 +5,7 @@ This gem is for parsing data from NFL.com and returning a JSON blob that can be
5
5
  This was written by @mikesells and @thetizzo
6
6
 
7
7
  [![Gem Version](https://badge.fury.io/rb/nfl_data.svg)](http://badge.fury.io/rb/nfl_data)
8
+ [![Code Climate](https://codeclimate.com/github/thetizzo/nfl_data/badges/gpa.svg)](https://codeclimate.com/github/thetizzo/nfl_data)
8
9
 
9
10
  ## Installation
10
11
 
data/Rakefile CHANGED
@@ -4,5 +4,5 @@ require 'rake/testtask'
4
4
 
5
5
  Rake::TestTask.new do |t|
6
6
  t.libs << 'test'
7
- t.pattern = "test/**/*_test.rb"
7
+ t.pattern = 'test/**/*_test.rb'
8
8
  end
@@ -1,7 +1,6 @@
1
1
  module NflData
2
2
  module API
3
3
  class Player
4
-
5
4
  def initialize
6
5
  @parser = PlayerParser.new
7
6
  end
@@ -11,29 +10,26 @@ module NflData
11
10
  end
12
11
 
13
12
  class << self
14
-
15
13
  def get_all
16
- self.new.get(:all)
14
+ new.get(:all)
17
15
  end
18
16
 
19
17
  def get_quarterbacks
20
- self.new.get(:quarterbacks)
18
+ new.get(:quarterbacks)
21
19
  end
22
20
 
23
21
  def get_runningbacks
24
- self.new.get(:runningbacks)
22
+ new.get(:runningbacks)
25
23
  end
26
24
 
27
25
  def get_wide_receivers
28
- self.new.get(:wide_receivers)
26
+ new.get(:wide_receivers)
29
27
  end
30
28
 
31
29
  def get_tight_ends
32
- self.new.get(:tight_ends)
30
+ new.get(:tight_ends)
33
31
  end
34
-
35
32
  end
36
-
37
33
  end
38
34
  end
39
35
  end
@@ -1,7 +1,6 @@
1
1
  module NflData
2
2
  module API
3
3
  class Statline
4
-
5
4
  def initialize
6
5
  @parser = StatlineParser.new
7
6
  end
@@ -12,19 +11,19 @@ module NflData
12
11
 
13
12
  class << self
14
13
  def get_all(week, year)
15
- self.new.get(week, year, :all)
14
+ new.get(week, year, :all)
16
15
  end
17
16
 
18
17
  def get_passing(week, year)
19
- self.new.get(week, year, :passing)
18
+ new.get(week, year, :passing)
20
19
  end
21
20
 
22
21
  def get_rushing(week, year)
23
- self.new.get(week, year, :rushing)
22
+ new.get(week, year, :rushing)
24
23
  end
25
24
 
26
25
  def get_receiving(week, year)
27
- self.new.get(week, year, :receiving)
26
+ new.get(week, year, :receiving)
28
27
  end
29
28
  end
30
29
  end
@@ -1,7 +1,6 @@
1
1
  module NflData
2
2
  module API
3
3
  class Team
4
-
5
4
  def initialize
6
5
  @parser = TeamParser.new
7
6
  end
@@ -11,15 +10,13 @@ module NflData
11
10
  end
12
11
 
13
12
  class << self
14
-
15
13
  def get_all(year)
16
- self.new.get(year)
14
+ new.get(year)
17
15
  end
18
16
 
19
17
  def get_all_with_schedule(year)
20
- self.new.get(year, true)
18
+ new.get(year, true)
21
19
  end
22
-
23
20
  end
24
21
  end
25
22
  end
@@ -1,21 +1,20 @@
1
1
  module NflData
2
-
3
2
  class Player
4
- attr_accessor :first_name, :last_name, :full_name, :position, :number, :status, :team, :nfl_player_id
3
+ ATTRIBUTES = [
4
+ :first_name, :last_name, :full_name, :position, :number,
5
+ :status, :team, :nfl_player_id, :picture_link
6
+ ]
5
7
 
6
- def to_hash
7
- {
8
- first_name: first_name,
9
- last_name: last_name,
10
- full_name: full_name,
11
- position: position,
12
- number: number,
13
- status: status,
14
- team: team,
15
- nfl_player_id: nfl_player_id
16
- }
8
+ attr_accessor(*ATTRIBUTES)
9
+
10
+ def initialize(attributes = {})
11
+ attributes.each { |attr, value| send("#{attr}=", value) }
17
12
  end
18
13
 
14
+ def to_hash
15
+ attributes_hash = {}
16
+ ATTRIBUTES.each { |attr| attributes_hash.merge!(attr => send(attr)) }
17
+ attributes_hash
18
+ end
19
19
  end
20
-
21
20
  end
@@ -1,30 +1,21 @@
1
1
  module NflData
2
-
3
2
  class Statline
4
- attr_accessor :week, :year, :rush_atts, :rush_yards, :rush_tds, :fumbles,
5
- :pass_comp, :pass_att, :pass_yards, :pass_tds, :ints, :qb_rating, :receptions,
6
- :rec_yards, :rec_tds, :nfl_player_id, :sacks
3
+ ATTRIBUTES = [
4
+ :week, :year, :rush_atts, :rush_yards, :rush_tds, :fumbles, :pass_comp,
5
+ :pass_att, :pass_yards, :pass_tds, :ints, :qb_rating, :receptions,
6
+ :rec_yards, :rec_tds, :nfl_player_id
7
+ ]
8
+
9
+ attr_accessor(*ATTRIBUTES)
10
+
11
+ def initialize(attributes = {})
12
+ attributes.each { |attr, value| send("#{attr}=", value) }
13
+ end
7
14
 
8
15
  def to_hash
9
- {
10
- nfl_player_id: nfl_player_id,
11
- week: week,
12
- year: year,
13
- rush_atts: rush_atts,
14
- rush_yards: rush_yards,
15
- rush_tds: rush_tds,
16
- fumbles: fumbles,
17
- pass_comp: pass_comp,
18
- pass_att: pass_att,
19
- pass_yards: pass_yards,
20
- pass_tds: pass_tds,
21
- ints: ints,
22
- qb_rating: qb_rating,
23
- receptions: receptions,
24
- rec_yards: rec_yards,
25
- rec_tds: rec_tds
26
- }
16
+ attributes_hash = {}
17
+ ATTRIBUTES.each { |attr| attributes_hash.merge!(attr => send(attr)) }
18
+ attributes_hash
27
19
  end
28
20
  end
29
-
30
21
  end
@@ -18,7 +18,7 @@ module NflData
18
18
  end
19
19
 
20
20
  def to_hash
21
- @games.map { |game| game.to_hash }
21
+ @games.map(&:to_hash)
22
22
  end
23
23
 
24
24
  class Game
@@ -33,7 +33,6 @@ module NflData
33
33
  }
34
34
  end
35
35
  end
36
-
37
36
  end
38
37
  end
39
38
  end
@@ -5,84 +5,80 @@ module NflData
5
5
  attr_reader :base_url
6
6
 
7
7
  def initialize
8
- @base_url = "http://www.nfl.com/players/search?category=position&conferenceAbbr=null&playerType=current&conference=ALL&filter="
8
+ @base_url = 'http://www.nfl.com/players/search?category=position&conferenceAbbr=null&playerType=current&conference=ALL&filter='
9
9
  end
10
10
 
11
11
  def get_by_position(position)
12
- case position
13
- when :quarterbacks
14
- { position => get('quarterback') }
15
- when :runningbacks
16
- { position => get('runningback') }
17
- when :wide_receivers
18
- { position => get('widereceiver') }
19
- when :tight_ends
20
- { position => get('tightend') }
21
- when :all
12
+ if position == :all
22
13
  {
23
14
  quarterbacks: get('quarterback'),
24
15
  runningbacks: get('runningback'),
25
16
  wide_receivers: get('widereceiver'),
26
17
  tight_ends: get('tightend')
27
18
  }
19
+ else
20
+ # We have to remove the '_' and 's' because the NFL url has
21
+ # singular position names and all are one word.
22
+ { position => get(position.to_s.gsub(/s|_/, '')) }
28
23
  end
29
24
  end
30
25
 
31
26
  private
32
27
 
33
28
  def get(position)
34
- baseurl = @base_url + position
35
- url = baseurl
36
- returnVal = []
37
- page_num = 1
38
-
39
- count = 100
29
+ page_number = 1
30
+ url = "#{@base_url}#{position}&d-447263-p=#{page_number}"
31
+ return_val = []
40
32
 
41
33
  loop do
42
- page_num += 1
43
34
  players_found = update_or_create_players(url)
44
- returnVal.push(players_found[1])
35
+ return_val.push(players_found[1])
45
36
  break if players_found[0] == 0
46
- url = baseurl + '&d-447263-p='
47
- url += page_num.to_s
37
+ url = url.chomp(page_number.to_s)
38
+ page_number += 1
39
+ url += page_number.to_s
48
40
  end
49
41
 
50
- returnVal.flatten.map{ |player| player.to_hash }
42
+ return_val.flatten.map(&:to_hash)
51
43
  end
52
44
 
53
45
  def update_or_create_players(url)
54
- # puts "Pulling from url = #{url}"
55
46
  doc = open(url) { |f| Nokogiri(f) }
56
47
 
57
- #NFL.com stores players in 2 types of rows. Class = Odd or Even. This pulls them all.
58
- odds = doc.search("tr.odd")
59
- evens = doc.search("tr.even")
60
-
61
- all = odds + evens
62
-
63
- players = all.map do |p|
64
- player = Player.new
65
- elements = p.search("td")
66
- player.position = elements[0].inner_text.strip
67
- player.number = elements[1].inner_text.strip
68
- name = elements[2].inner_text.strip
69
- player.status = elements[3].inner_text.strip
70
- player.team = make_jacksonville_abbreviation_consistent(elements[12].inner_text.strip)
71
-
72
- #Get NFL.com Unique player id
73
- player.nfl_player_id = elements[2].to_s.split('/')[3]
74
-
75
- names = name.split(',')
76
-
77
- player.first_name = names[1].strip
78
- player.last_name = names[0].strip
79
-
80
- player.full_name = [player.first_name, player.last_name].join(' ')
81
- player
82
- end
83
-
48
+ # NFL.com stores players in 2 types of rows.
49
+ # css class = odd or even.
50
+ all_rows = doc.search('tr.odd') + doc.search('tr.even')
51
+ players = all_rows.map { |row| parse_player_from_row(row.search('td')) }
84
52
  [players.count, players]
85
53
  end
86
54
 
55
+ def parse_player_from_row(elements)
56
+ # Get NFL.com Unique player id
57
+ nfl_player_id = elements[2].to_s.split('/')[3]
58
+
59
+ # player id is the only one with complicated parsing so we
60
+ # can just extract the inner text out of the rest of the elements
61
+ elements = elements.map(&:inner_text).map(&:strip)
62
+ names = elements[2].split(',').map(&:strip).reverse
63
+
64
+ Player.new(
65
+ nfl_player_id: nfl_player_id,
66
+ position: elements[0],
67
+ number: elements[1],
68
+ status: elements[3],
69
+ team: make_jacksonville_abbreviation_consistent(elements[12]),
70
+ first_name: names[0],
71
+ last_name: names[1],
72
+ full_name: names.join(' '),
73
+ picture_link: get_picture_link(nfl_player_id, names[0], names[1])
74
+ )
75
+ end
76
+
77
+ def get_picture_link(nfl_player_id, first_name, last_name)
78
+ return nil if ENV['NFL_DATA_ENV'] == 'test'
79
+ url = "http://www.nfl.com/player/#{first_name.gsub(/\s/, '')}#{last_name.gsub(/\s/, '')}/#{nfl_player_id}/profile"
80
+ doc = open(url) { |f| Nokogiri(f) }
81
+ doc.search('div.player-photo img').first.attributes['src'].value
82
+ end
87
83
  end
88
84
  end
@@ -1,6 +1,5 @@
1
1
  module NflData
2
2
  class StatlineParser
3
-
4
3
  def initialize
5
4
  end
6
5
 
@@ -18,8 +17,9 @@ module NflData
18
17
  private
19
18
 
20
19
  def get_player_id_from_profile_url(element)
21
- old_url = "http://nfl.com" + element.search('a').first.attributes['href'].value
22
- new_url = ""
20
+ old_url = 'http://nfl.com' +
21
+ element.search('a').first.attributes['href'].value
22
+ new_url = ''
23
23
 
24
24
  begin
25
25
  open(old_url) do |resp|
@@ -29,26 +29,22 @@ module NflData
29
29
  return nil
30
30
  end
31
31
 
32
- new_url.gsub("http://www.nfl.com","").to_s.split('/')[3]
32
+ new_url.gsub('http://www.nfl.com', '').to_s.split('/')[3]
33
33
  end
34
34
 
35
35
  def grab_week(weeknum, year, stat_type)
36
- baseUrl = "http://www.nfl.com/stats/weeklyleaders?type=REG"
37
- weekUrl = "&week="
38
- seasonUrl = "&season=" + year.to_s
39
- catUrl = "&showCategory="
40
-
41
- url = baseUrl + weekUrl + weeknum.to_s + seasonUrl + catUrl + stat_type
36
+ url = 'http://www.nfl.com/stats/weeklyleaders?type=REG' \
37
+ "&week=#{weeknum}&season=#{year}&showCategory=#{stat_type}"
42
38
 
43
39
  doc = open(url) { |f| Nokogiri(f) }
44
40
 
45
- odds = doc.search("tr.odd")
46
- evens = doc.search("tr.even")
41
+ odds = doc.search('tr.odd')
42
+ evens = doc.search('tr.even')
47
43
 
48
44
  all = odds + evens
49
45
 
50
46
  all.map do |player_row|
51
- elements = player_row.search("td")
47
+ elements = player_row.search('td')
52
48
 
53
49
  statline = Statline.new
54
50
 
@@ -56,21 +52,20 @@ module NflData
56
52
  statline.week = weeknum
57
53
  statline.year = year
58
54
 
59
- if (stat_type == 'Rushing')
55
+ if stat_type == 'Rushing'
60
56
  statline.rush_atts = elements[4].inner_text.strip
61
57
  statline.rush_yards = elements[5].inner_text.strip
62
58
  statline.rush_tds = elements[7].inner_text.strip
63
59
  statline.fumbles = elements[8].inner_text.strip
64
- elsif (stat_type == 'Passing')
60
+ elsif stat_type == 'Passing'
65
61
  statline.pass_comp = elements[4].inner_text.strip
66
62
  statline.pass_att = elements[5].inner_text.strip
67
63
  statline.pass_yards = elements[6].inner_text.strip
68
64
  statline.pass_tds = elements[7].inner_text.strip
69
65
  statline.ints = elements[8].inner_text.strip
70
- statline.sacks = elements[9].inner_text.strip
71
66
  statline.qb_rating = elements[11].inner_text.strip
72
67
  statline.fumbles = elements [10].inner_text.strip
73
- elsif (stat_type == 'Receiving')
68
+ elsif stat_type == 'Receiving'
74
69
  statline.receptions = elements[4].inner_text.strip
75
70
  statline.rec_yards = elements[5].inner_text.strip
76
71
  statline.rec_tds = elements[7].inner_text.strip
@@ -5,7 +5,7 @@ module NflData
5
5
  attr_reader :base_url
6
6
 
7
7
  def initialize
8
- @base_url = "http://www.nfl.com/standings?category=league&split=Overall&season="
8
+ @base_url = 'http://www.nfl.com/standings?category=league&split=Overall&season='
9
9
  end
10
10
 
11
11
  def get_by_year(year, with_schedule)
@@ -27,14 +27,15 @@ module NflData
27
27
  if href.nil?
28
28
  true
29
29
  else
30
- !href.value.start_with?("/teams/profile?team=")
30
+ !href.value.start_with?('/teams/profile?team=')
31
31
  end
32
32
  end
33
33
 
34
34
  team_links.map do |link|
35
35
  team = Team.new
36
36
  team.name = link.inner_text.strip
37
- team.short_name = make_jacksonville_abbreviation_consistent(link.attribute('href').value.scan(/=(.*)/).flatten.first)
37
+ short_name = link.attribute('href').value.scan(/=(.*)/).flatten.first
38
+ team.short_name = make_jacksonville_abbreviation_consistent(short_name)
38
39
  team.schedule = get_schedule(team, year) if with_schedule
39
40
 
40
41
  team.to_hash
@@ -42,7 +43,9 @@ module NflData
42
43
  end
43
44
 
44
45
  def get_schedule(team, year)
45
- url = "http://www.nfl.com/teams/schedule?seasonType=REG&team=#{team.short_name}&season=#{year}"
46
+ url = 'http://www.nfl.com/teams/schedule?seasonType=REG&' \
47
+ "team=#{team.short_name}&season=#{year}"
48
+
46
49
  schedule = Team::Schedule.new
47
50
 
48
51
  doc = open(url) { |f| Nokogiri(f) }
@@ -50,25 +53,25 @@ module NflData
50
53
  tables = doc.search('table.data-table1')
51
54
 
52
55
  tables.each do |table|
53
- # Skip any empty tables. They put these in between post season and regular seasons game tables
56
+ # Skip any empty tables. They put these in between post season
57
+ # and regular seasons game tables
54
58
  next if table.children.count <= 1
55
59
  title = table.search('tr.thd1 td')
56
60
 
57
61
  # Need to check for the Regular Season table and a table with no title
58
62
  # because during the season the NFl splits the games between 2 tables
59
- if ['Regular Season', ''].include?(title.inner_text.strip)
60
- weeks = table.search('tr.tbdy1')
61
-
62
- weeks.each do |week|
63
- game = Team::Schedule::Game.new
64
- elements = week.search('td')
65
- game.week = elements[0].inner_text.strip
66
- game.date = elements[1].inner_text.strip
67
- participants = elements[2].search('a')
68
- game.opponent = get_opponent(team, participants)
69
- game.home_game = home_game?(team, participants)
70
- schedule.games << game
71
- end
63
+ next unless ['Regular Season', ''].include?(title.inner_text.strip)
64
+ weeks = table.search('tr.tbdy1')
65
+
66
+ weeks.each do |week|
67
+ game = Team::Schedule::Game.new
68
+ elements = week.search('td')
69
+ game.week = elements[0].inner_text.strip
70
+ game.date = elements[1].inner_text.strip
71
+ participants = elements[2].search('a')
72
+ game.opponent = get_opponent(team, participants)
73
+ game.home_game = home_game?(team, participants)
74
+ schedule.games << game
72
75
  end
73
76
  end
74
77
 
@@ -1,3 +1,3 @@
1
1
  module NflData
2
- VERSION = '0.0.10'
2
+ VERSION = '0.0.11'
3
3
  end
@@ -11,8 +11,8 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ['j.m.taylor1@gmail.com']
12
12
  spec.homepage = 'https://github.com/thetizzo/nfl_data'
13
13
  spec.license = 'MIT'
14
- spec.summary = %q{Parse NFL data like a boss}
15
- spec.description = %q{Parse NFL data like a boss}
14
+ spec.summary = 'Parse NFL data like a boss'
15
+ spec.description = 'Parse NFL data like a boss'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'minitest', '~> 5.4.1'
25
25
  spec.add_development_dependency 'vcr', '~> 2.9.3'
26
26
  spec.add_development_dependency 'webmock', '~> 1.19.0'
27
+ spec.add_development_dependency 'rubocop', '~> 0.35.1'
27
28
 
28
29
  spec.add_dependency 'nokogiri', '~> 1.6'
29
30
  end
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  describe Player do
4
-
5
4
  before do
6
5
  @player = Player.new
7
6
  end
@@ -42,6 +41,10 @@ describe Player do
42
41
  @player.must_respond_to :nfl_player_id
43
42
  end
44
43
 
44
+ it 'has a picture_link' do
45
+ @player.must_respond_to :picture_link
46
+ end
47
+
45
48
  describe 'to_hash' do
46
49
  before do
47
50
  @player.first_name = 'John'
@@ -52,6 +55,7 @@ describe Player do
52
55
  @player.status = 'Retired'
53
56
  @player.team = 'Broncos'
54
57
  @player.nfl_player_id = '123'
58
+ @player.picture_link = 'google.com'
55
59
  end
56
60
 
57
61
  def valid_player_hash
@@ -63,13 +67,13 @@ describe Player do
63
67
  number: 7,
64
68
  status: 'Retired',
65
69
  team: 'Broncos',
66
- nfl_player_id: '123'
70
+ nfl_player_id: '123',
71
+ picture_link: 'google.com'
67
72
  }
68
73
  end
69
74
 
70
75
  it 'can return itself as hash' do
71
76
  @player.to_hash.must_equal valid_player_hash
72
77
  end
73
-
74
78
  end
75
79
  end
@@ -73,28 +73,24 @@ describe Statline do
73
73
  @statline.must_respond_to :nfl_player_id
74
74
  end
75
75
 
76
- it 'has sacks' do
77
- @statline.must_respond_to :sacks
78
- end
79
-
80
76
  describe 'to_hash' do
81
77
  before do
82
- @statline.nfl_player_id = '123'
83
- @statline.week = 1
84
- @statline.year = 2014
85
- @statline.rush_atts = 1
86
- @statline.rush_yards = 25
87
- @statline.rush_tds = 1
88
- @statline.fumbles = 0
89
- @statline.pass_comp = 1
90
- @statline.pass_att = 2
91
- @statline.pass_yards = 100
92
- @statline.pass_tds = 1
93
- @statline.ints = 1
94
- @statline.qb_rating = "46.8"
95
- @statline.receptions = 2
96
- @statline.rec_yards = 25
97
- @statline.rec_tds = 1
78
+ @statline.nfl_player_id = '123'
79
+ @statline.week = 1
80
+ @statline.year = 2014
81
+ @statline.rush_atts = 1
82
+ @statline.rush_yards = 25
83
+ @statline.rush_tds = 1
84
+ @statline.fumbles = 0
85
+ @statline.pass_comp = 1
86
+ @statline.pass_att = 2
87
+ @statline.pass_yards = 100
88
+ @statline.pass_tds = 1
89
+ @statline.ints = 1
90
+ @statline.qb_rating = '46.8'
91
+ @statline.receptions = 2
92
+ @statline.rec_yards = 25
93
+ @statline.rec_tds = 1
98
94
  end
99
95
 
100
96
  def valid_statline_hash
@@ -111,7 +107,7 @@ describe Statline do
111
107
  pass_yards: 100,
112
108
  pass_tds: 1,
113
109
  ints: 1,
114
- qb_rating: "46.8",
110
+ qb_rating: '46.8',
115
111
  receptions: 2,
116
112
  rec_yards: 25,
117
113
  rec_tds: 1
@@ -121,6 +117,5 @@ describe Statline do
121
117
  it 'can return itself as hash' do
122
118
  @statline.to_hash.must_equal valid_statline_hash
123
119
  end
124
-
125
120
  end
126
121
  end
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  describe Team do
4
-
5
4
  before do
6
5
  @team = Team.new
7
6
  end
@@ -40,6 +39,5 @@ describe Team do
40
39
  it 'can return itself as hash' do
41
40
  @team.to_hash.must_equal valid_player_hash
42
41
  end
43
-
44
42
  end
45
43
  end
@@ -10,7 +10,11 @@ describe PlayerParser do
10
10
  end
11
11
 
12
12
  it 'should know the correct base url' do
13
- @parser.base_url.must_equal "http://www.nfl.com/players/search?category=position&conferenceAbbr=null&playerType=current&conference=ALL&filter="
13
+ expected_base_url = 'http://www.nfl.com/players/search?category=' \
14
+ 'position&conferenceAbbr=null&playerType=current' \
15
+ '&conference=ALL&filter='
16
+
17
+ @parser.base_url.must_equal expected_base_url
14
18
  end
15
19
 
16
20
  describe 'get_by_position' do
@@ -19,7 +23,7 @@ describe PlayerParser do
19
23
  response = @parser.get_by_position(:quarterbacks)
20
24
 
21
25
  response.keys.must_include :quarterbacks
22
- response[:quarterbacks].count.must_equal 123
26
+ response[:quarterbacks].count.must_equal 118
23
27
  end
24
28
  end
25
29
 
@@ -28,7 +32,7 @@ describe PlayerParser do
28
32
  response = @parser.get_by_position(:runningbacks)
29
33
 
30
34
  response.keys.must_include :runningbacks
31
- response[:runningbacks].count.must_equal 245
35
+ response[:runningbacks].count.must_equal 243
32
36
  end
33
37
  end
34
38
 
@@ -37,7 +41,7 @@ describe PlayerParser do
37
41
  response = @parser.get_by_position(:wide_receivers)
38
42
 
39
43
  response.keys.must_include :wide_receivers
40
- response[:wide_receivers].count.must_equal 398
44
+ response[:wide_receivers].count.must_equal 339
41
45
  end
42
46
  end
43
47
 
@@ -46,7 +50,7 @@ describe PlayerParser do
46
50
  response = @parser.get_by_position(:tight_ends)
47
51
 
48
52
  response.keys.must_include :tight_ends
49
- response[:tight_ends].count.must_equal 206
53
+ response[:tight_ends].count.must_equal 188
50
54
  end
51
55
  end
52
56
 
@@ -55,10 +59,10 @@ describe PlayerParser do
55
59
  response = @parser.get_by_position(:all)
56
60
 
57
61
  {
58
- quarterbacks: 123,
59
- runningbacks: 245,
60
- wide_receivers: 398,
61
- tight_ends: 206
62
+ quarterbacks: 118,
63
+ runningbacks: 243,
64
+ wide_receivers: 339,
65
+ tight_ends: 188
62
66
  }.each do |position, player_count|
63
67
  response.keys.must_include position
64
68
  response[position].count.must_equal player_count
@@ -70,10 +74,12 @@ describe PlayerParser do
70
74
  VCR.use_cassette('all_players') do
71
75
  response = @parser.get_by_position(:all)
72
76
 
73
- players = [response[:quarterbacks], response[:runningbacks], response[:wide_receivers], response[:tight_ends]].flatten
77
+ players =
78
+ [response[:quarterbacks], response[:runningbacks],
79
+ response[:wide_receivers], response[:tight_ends]].flatten
74
80
 
75
- players.any? {|player| player[:team] == 'JAX'}.must_equal true
76
- players.none? {|player| player[:team] == 'JAC'}.must_equal true
81
+ players.any? { |player| player[:team] == 'JAX' }.must_equal true
82
+ players.none? { |player| player[:team] == 'JAC' }.must_equal true
77
83
  end
78
84
  end
79
85
  end
@@ -30,6 +30,5 @@ describe StatlineParser do
30
30
  response.count.must_equal 210
31
31
  end
32
32
  end
33
-
34
33
  end
35
34
  end
@@ -10,7 +10,7 @@ describe TeamParser do
10
10
  end
11
11
 
12
12
  it 'should know the correct base url' do
13
- @parser.base_url.must_equal "http://www.nfl.com/standings?category=league&split=Overall&season="
13
+ @parser.base_url.must_equal 'http://www.nfl.com/standings?category=league&split=Overall&season='
14
14
  end
15
15
 
16
16
  describe 'get_by_year' do
@@ -33,8 +33,8 @@ describe TeamParser do
33
33
  it 'should use JAX as the abbreviation for Jacksonville' do
34
34
  VCR.use_cassette('teams_with_schedule') do
35
35
  result = @parser.get_by_year(2014, true)
36
- result.any? {|team| team[:short_name] == 'JAX'}.must_equal true
37
- result.none? {|team| team[:short_name] == 'JAC'}.must_equal true
36
+ result.any? { |team| team[:short_name] == 'JAX' }.must_equal true
37
+ result.none? { |team| team[:short_name] == 'JAC' }.must_equal true
38
38
  end
39
39
  end
40
40
  end
@@ -1,3 +1,5 @@
1
+ ENV['NFL_DATA_ENV'] = 'test'
2
+
1
3
  require 'nfl_data'
2
4
 
3
5
  require 'minitest/autorun'
@@ -7,6 +9,6 @@ require 'vcr'
7
9
  include NflData
8
10
 
9
11
  VCR.configure do |c|
10
- c.cassette_library_dir = 'test/fixtures/cassettes'
12
+ c.cassette_library_dir = 'test/cassettes'
11
13
  c.hook_into :webmock
12
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nfl_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - thetizzo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-12 00:00:00.000000000 Z
11
+ date: 2017-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.19.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.35.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.35.1
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: nokogiri
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -102,7 +116,9 @@ executables:
102
116
  extensions: []
103
117
  extra_rdoc_files: []
104
118
  files:
119
+ - ".codeclimate.yml"
105
120
  - ".gitignore"
121
+ - ".rubocop.yml"
106
122
  - Gemfile
107
123
  - LICENSE.txt
108
124
  - README.md
@@ -151,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
167
  version: '0'
152
168
  requirements: []
153
169
  rubyforge_project:
154
- rubygems_version: 2.4.5
170
+ rubygems_version: 2.4.5.1
155
171
  signing_key:
156
172
  specification_version: 4
157
173
  summary: Parse NFL data like a boss