def test_ncaaf_boxscore_string_representation(self): expected = ('Boxscore for Clemson at Wake Forest ' '(Saturday Sep 12, 2020)') boxscore = Boxscore(BOXSCORE) assert boxscore.__repr__() == expected
def test_ncaaf_boxscore_players(self): boxscore = Boxscore(BOXSCORE) assert len(boxscore.home_players) == 37 assert len(boxscore.away_players) == 45 for player in boxscore.home_players: assert not player.dataframe.empty for player in boxscore.away_players: assert not player.dataframe.empty
def test_invalid_url_yields_empty_class(self): flexmock(Boxscore) \ .should_receive('_retrieve_html_page') \ .and_return(None) boxscore = Boxscore(BOXSCORE) for key, value in boxscore.__dict__.items(): if key == '_uri': continue assert value is None
def setup_method(self, *args, **kwargs): self.results = { 'date': 'Saturday Sep 12, 2020', 'time': '7:30 PM ET', 'stadium': '', 'winner': AWAY, 'winning_name': 'Clemson', 'winning_abbr': 'CLEMSON', 'losing_name': 'Wake Forest', 'losing_abbr': 'WAKE-FOREST', 'away_points': 37, 'away_first_downs': 27, 'away_rush_attempts': 46, 'away_rush_yards': 185, 'away_rush_touchdowns': 3, 'away_pass_completions': 26, 'away_pass_attempts': 36, 'away_pass_yards': 376, 'away_pass_touchdowns': 1, 'away_interceptions': 1, 'away_total_yards': 561, 'away_fumbles': 0, 'away_fumbles_lost': 0, 'away_turnovers': 1, 'away_penalties': 5, 'away_yards_from_penalties': 55, 'home_points': 13, 'home_first_downs': 15, 'home_rush_attempts': 34, 'home_rush_yards': 37, 'home_rush_touchdowns': 0, 'home_pass_completions': 19, 'home_pass_attempts': 38, 'home_pass_yards': 293, 'home_pass_touchdowns': 1, 'home_interceptions': 0, 'home_total_yards': 330, 'home_fumbles': 0, 'home_fumbles_lost': 0, 'home_turnovers': 0, 'home_penalties': 1, 'home_yards_from_penalties': 6 } flexmock(utils) \ .should_receive('_todays_date') \ .and_return(MockDateTime(YEAR, MONTH)) self.boxscore = Boxscore(BOXSCORE)
def test_game_summary_with_no_scores_returns_none(self): result = Boxscore(None)._parse_summary( pq("""<table class="linescore nohover stats_table no_freeze"> <tbody> <tr> <td class="center"></td> <td class="center"></td> </tr> <tr> <td class="center"></td> <td class="center"></td> </tr> </tbody> </table>""")) assert result == {'away': [None], 'home': [None]}
def boxscore(self): """ Returns an instance of the Boxscore class containing more detailed stats on the game. """ return Boxscore(self._boxscore)
def setup_method(self, *args, **kwargs): flexmock(Boxscore) \ .should_receive('_parse_game_data') \ .and_return(None) self.boxscore = Boxscore(None)
class TestNCAAFBoxscore: @patch('requests.get', side_effect=mock_pyquery) def setup_method(self, *args, **kwargs): flexmock(Boxscore) \ .should_receive('_parse_game_data') \ .and_return(None) self.boxscore = Boxscore(None) def test_away_team_wins(self): fake_away_points = PropertyMock(return_value=28) fake_home_points = PropertyMock(return_value=21) type(self.boxscore)._away_points = fake_away_points type(self.boxscore)._home_points = fake_home_points assert self.boxscore.winner == AWAY def test_home_team_wins(self): fake_away_points = PropertyMock(return_value=21) fake_home_points = PropertyMock(return_value=28) type(self.boxscore)._away_points = fake_away_points type(self.boxscore)._home_points = fake_home_points assert self.boxscore.winner == HOME def test_winning_name_di_is_home(self): expected_name = 'Home Name' test_name = '<a>cfb/schools</a>Home Name' fake_winner = PropertyMock(return_value=HOME) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.winning_name == expected_name def test_winning_name_non_di_is_home(self): expected_name = 'Home Name' test_name = 'Home Name' fake_winner = PropertyMock(return_value=HOME) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.winning_name == expected_name def test_winning_name_di_is_away(self): expected_name = 'Away Name' test_name = '<a>cfb/schools</a>Away Name' fake_winner = PropertyMock(return_value=AWAY) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.winning_name == expected_name def test_winning_name_non_di_is_away(self): expected_name = 'Away Name' test_name = 'Away Name' fake_winner = PropertyMock(return_value=AWAY) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.winning_name == expected_name def test_winning_abbr_di_is_home(self): expected_name = 'HOME' test_name = '<a>cfb/schools</a>HOME' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=HOME) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.winning_abbr == expected_name def test_winning_abbr_non_di_is_home(self): expected_name = 'HOME' test_name = 'HOME' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=HOME) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.winning_abbr == expected_name def test_winning_abbr_di_is_away(self): expected_name = 'AWAY' test_name = '<a>cfb/schools</a>AWAY' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=AWAY) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.winning_abbr == expected_name def test_winning_abbr_non_di_is_away(self): expected_name = 'AWAY' test_name = 'AWAY' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=AWAY) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.winning_abbr == expected_name def test_losing_name_di_is_home(self): expected_name = 'Home Name' test_name = '<a>cfb/schools</a>Home Name' fake_winner = PropertyMock(return_value=AWAY) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.losing_name == expected_name def test_losing_name_non_di_is_home(self): expected_name = 'Home Name' test_name = 'Home Name' fake_winner = PropertyMock(return_value=AWAY) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.losing_name == expected_name def test_losing_name_di_is_away(self): expected_name = 'Away Name' test_name = '<a>cfb/schools</a>Away Name' fake_winner = PropertyMock(return_value=HOME) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.losing_name == expected_name def test_losing_name_non_di_is_away(self): expected_name = 'Away Name' test_name = 'Away Name' fake_winner = PropertyMock(return_value=HOME) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.losing_name == expected_name def test_losing_abbr_di_is_home(self): expected_name = 'HOME' test_name = '<a>cfb/schools</a>HOME' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=AWAY) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.losing_abbr == expected_name def test_losing_abbr_non_di_is_home(self): expected_name = 'HOME' test_name = 'HOME' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=AWAY) fake_home_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._home_name = fake_home_name assert self.boxscore.losing_abbr == expected_name def test_losing_abbr_di_is_away(self): expected_name = 'AWAY' test_name = '<a>cfb/schools</a>AWAY' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=HOME) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.losing_abbr == expected_name def test_losing_abbr_non_di_is_away(self): expected_name = 'AWAY' test_name = 'AWAY' flexmock(utils) \ .should_receive('_parse_abbreviation') \ .and_return(expected_name) fake_winner = PropertyMock(return_value=HOME) fake_away_name = PropertyMock(return_value=MockName(test_name)) type(self.boxscore).winner = fake_winner type(self.boxscore)._away_name = fake_away_name assert self.boxscore.losing_abbr == expected_name def test_game_summary_with_no_scores_returns_none(self): result = Boxscore(None)._parse_summary( pq("""<table class="linescore nohover stats_table no_freeze"> <tbody> <tr> <td class="center"></td> <td class="center"></td> </tr> <tr> <td class="center"></td> <td class="center"></td> </tr> </tbody> </table>""")) assert result == {'away': [None], 'home': [None]} def test_invalid_url_returns_none(self): result = Boxscore(None)._retrieve_html_page('') assert result is None def test_game_information_regular_game(self): fields = ['date', 'time', 'stadium'] fields = { 'date': 'Saturday Nov 25, 2017', 'time': '12:00 PM ET', 'stadium': 'Ross-Ade Stadium - West Lafayette, Indiana' } mock_field = """Saturday Nov 25, 2017 12:00 PM ET Ross-Ade Stadium - West Lafayette, Indiana Logos via Sports Logos.net / About logos """ m = MockBoxscoreData(MockField(mock_field)) self.boxscore._parse_game_date_and_location(m) for field, value in fields.items(): assert getattr(self.boxscore, field) == value def test_game_information_championship_game(self): fields = ['date', 'time', 'stadium'] fields = { 'date': 'Saturday Dec 2, 2017', 'time': '8:00 PM ET', 'stadium': 'Lucas Oil Stadium - Indianapolis, Indiana' } mock_field = """Big Ten Conference Championship Saturday Dec 2, 2017 8:00 PM ET Lucas Oil Stadium - Indianapolis, Indiana Logos via Sports Logos.net / About logos """ m = MockBoxscoreData(MockField(mock_field)) self.boxscore._parse_game_date_and_location(m) for field, value in fields.items(): assert getattr(self.boxscore, field) == value def test_somewhat_limited_game_information(self): fields = ['date', 'time', 'stadium'] fields = {'date': 'Friday Nov 24, 2017', 'time': '', 'stadium': ''} mock_field = """Friday Nov 24, 2017 Logos via Sports Logos.net / About logos """ m = MockBoxscoreData(MockField(mock_field)) self.boxscore._parse_game_date_and_location(m) for field, value in fields.items(): assert getattr(self.boxscore, field) == value def test_limited_game_information(self): fields = ['date', 'time', 'stadium'] fields = {'date': 'Friday Nov 24, 2017', 'time': '', 'stadium': ''} mock_field = 'Friday Nov 24, 2017' m = MockBoxscoreData(MockField(mock_field)) self.boxscore._parse_game_date_and_location(m) for field, value in fields.items(): assert getattr(self.boxscore, field) == value def test_limited_game_information_championship(self): fields = ['date', 'time', 'stadium'] fields = {'date': 'Saturday Dec 2, 2017', 'time': '', 'stadium': ''} mock_field = """Big Ten Conference Championship Saturday Dec 2, 2017 Logos via Sports Logos.net / About logos """ m = MockBoxscoreData(MockField(mock_field)) self.boxscore._parse_game_date_and_location(m) for field, value in fields.items(): assert getattr(self.boxscore, field) == value def test_no_game_information_championship(self): fields = ['date', 'time', 'stadium'] fields = {'date': '', 'time': '', 'stadium': ''} mock_field = """Big Ten Conference Championship Logos via Sports Logos.net / About logos """ m = MockBoxscoreData(MockField(mock_field)) self.boxscore._parse_game_date_and_location(m) for field, value in fields.items(): assert getattr(self.boxscore, field) == value def test_empty_boxscore_class_returns_dataframe_of_none(self): fake_points = PropertyMock(return_value=None) type(self.boxscore)._home_points = fake_points type(self.boxscore)._away_points = fake_points assert self.boxscore._home_points is None assert self.boxscore._away_points is None assert self.boxscore.dataframe is None def test_empty_attribute_returns_none(self): fake_rushes = PropertyMock(return_value=None) type(self.boxscore)._away_rush_attempts = fake_rushes assert self.boxscore.away_rush_attempts is None def test_non_int_value_returns_none(self): fake_rushes = PropertyMock(return_value='bad') type(self.boxscore)._away_rush_attempts = fake_rushes assert self.boxscore.away_rush_attempts is None
def test_invalid_url_returns_none(self): result = Boxscore(None)._retrieve_html_page('') assert result is None