コード例 #1
0
def test_is_date_in_season(vig_app):
    date_in_season = datetime(2019, 5, 25)
    result = Season.is_date_in_season(vig_app.db_session, date_in_season)
    assert result.success
    season = result.value
    assert season.year == date_in_season.year

    date_not_in_season = datetime(2019, 1, 15)
    result = Season.is_date_in_season(vig_app.db_session, date_not_in_season)
    assert result.failure
    assert "is not within the scope of the MLB 2019 Regular Season" in result.error

    invalid_year = datetime(1941, 12, 7)
    with pytest.raises(InvalidSeasonException):
        result = Season.is_date_in_season(vig_app.db_session, invalid_year)
コード例 #2
0
def test_validate_date_range(vig_app):
    start_date_2018 = datetime(2018, 6, 22)
    invalid_date_2019 = datetime(2019, 2, 24)
    start_date_2019 = datetime(2019, 5, 3)
    end_date_2019 = datetime(2019, 8, 11)

    result = Season.validate_date_range(vig_app.db_session, start_date_2019, end_date_2019)
    assert result.success
    season = result.value
    assert season.year == 2019

    result = Season.validate_date_range(vig_app.db_session, start_date_2018, end_date_2019)
    assert result.failure
    assert (
        "Start and end dates must both be in the same year and within the scope of that year's MLB Regular Season."
    ) in result.error

    result = Season.validate_date_range(vig_app.db_session, end_date_2019, start_date_2019)
    assert result.failure
    assert '"start" must be a date before (or the same date as) "end":' in result.error

    result = Season.validate_date_range(vig_app.db_session, invalid_date_2019, end_date_2019)
    assert result.failure
    assert "Start and end date must both be within the MLB 2019 Regular Season:" in result.error
コード例 #3
0
def test_season_status_report(vig_app):
    season = Season.find_by_year(vig_app.db_session, MLB_YEAR)
    assert season
    assert season.year == MLB_YEAR
    assert season.season_type == SeasonType.REGULAR_SEASON
    report = season.status_report()
    assert "BBref Daily Dash Scraped.....................: 7/186 days (4%)" in report
    assert "Brooks Daily Dash Scraped....................: 7/186 days (4%)" in report
    assert "BBref Boxscores Scraped......................: NO 8/97" in report
    assert "Brooks Games Scraped.........................: NO 8/97" in report
    assert "PitchFx Logs Scraped.........................: NO 79/79 (100%)" in report
    assert "Combined BBRef/PitchFX Data (Success/Total)..: NO 8/8" in report
    assert "Pitch App Count (BBRef/Brooks)...............: 79/868" in report
    assert "Pitch App Count (PFx/data/no data)...........: 79/77/2" in report
    assert "PitchFX Data Errors (Valid AB/Invalid AB)....: NO 0/0" in report
    assert "Pitch Count (BBRef/Brooks/PFx)...............: 2,456/2,467/2,467" in report
    assert "Pitch Count Audited (BBRef/PFx/Removed)......: 2,456/2,419/5" in report
コード例 #4
0
 def get_2018_2019_seasons(db_session):
     s2018 = Season.find_by_year(db_session, 2018)
     s2019 = Season.find_by_year(db_session, 2019)
     return [s2018, s2019]
コード例 #5
0
def test_import_and_keep_existing(vig_app, mocker):
    def get_2018_2019_seasons(db_session):
        s2018 = Season.find_by_year(db_session, 2018)
        s2019 = Season.find_by_year(db_session, 2019)
        return [s2018, s2019]

    mocker.patch(
        "vigorish.tasks.import_scraped_data.db.Season.get_all_regular_seasons",
        get_2018_2019_seasons)

    season_18 = Season.find_by_year(vig_app.db_session, 2018)
    season_19 = Season.find_by_year(vig_app.db_session, 2019)
    scraped_ids_2018_before = {}
    scraped_ids_2018_before[
        DataSet.
        BBREF_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_GAMES_FOR_DATE, season_18)
    scraped_ids_2018_before[
        DataSet.
        BROOKS_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_GAMES_FOR_DATE, season_18)
    scraped_ids_2018_before[
        DataSet.
        BBREF_BOXSCORES] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_BOXSCORES, season_18)
    scraped_ids_2018_before[
        DataSet.
        BROOKS_PITCH_LOGS] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCH_LOGS, season_18)
    scraped_ids_2018_before[
        DataSet.
        BROOKS_PITCHFX] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCHFX, season_18)
    assert not scraped_ids_2018_before[DataSet.BBREF_GAMES_FOR_DATE]
    assert not scraped_ids_2018_before[DataSet.BROOKS_GAMES_FOR_DATE]
    assert not scraped_ids_2018_before[DataSet.BBREF_BOXSCORES]
    assert not scraped_ids_2018_before[DataSet.BROOKS_PITCH_LOGS]
    assert not scraped_ids_2018_before[DataSet.BROOKS_PITCHFX]

    scraped_ids_2019_before = {}
    scraped_ids_2019_before[
        DataSet.
        BBREF_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_GAMES_FOR_DATE, season_19)
    scraped_ids_2019_before[
        DataSet.
        BROOKS_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_GAMES_FOR_DATE, season_19)
    scraped_ids_2019_before[
        DataSet.
        BBREF_BOXSCORES] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_BOXSCORES, season_19)
    scraped_ids_2019_before[
        DataSet.
        BROOKS_PITCH_LOGS] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCH_LOGS, season_19)
    scraped_ids_2019_before[
        DataSet.
        BROOKS_PITCHFX] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCHFX, season_19)
    assert scraped_ids_2019_before[DataSet.BBREF_GAMES_FOR_DATE] == [GAME_DATE]
    assert scraped_ids_2019_before[DataSet.BROOKS_GAMES_FOR_DATE] == [
        GAME_DATE
    ]
    assert scraped_ids_2019_before[DataSet.BBREF_BOXSCORES] == [BBREF_GAME_ID]
    assert scraped_ids_2019_before[DataSet.BROOKS_PITCH_LOGS] == [BB_GAME_ID]
    assert all(
        pitch_app_id.startswith(BBREF_GAME_ID)
        for pitch_app_id in scraped_ids_2019_before[DataSet.BROOKS_PITCHFX])

    import_task = ImportScrapedDataTask(vig_app)
    result = import_task.execute(overwrite_existing=True)
    assert result.success

    scraped_ids_2018_after = {}
    scraped_ids_2018_after[
        DataSet.
        BBREF_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_GAMES_FOR_DATE, season_18)
    scraped_ids_2018_after[
        DataSet.
        BROOKS_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_GAMES_FOR_DATE, season_18)
    scraped_ids_2018_after[
        DataSet.
        BBREF_BOXSCORES] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_BOXSCORES, season_18)
    scraped_ids_2018_after[
        DataSet.
        BROOKS_PITCH_LOGS] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCH_LOGS, season_18)
    scraped_ids_2018_after[
        DataSet.
        BROOKS_PITCHFX] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCHFX, season_18)
    assert not scraped_ids_2018_after[DataSet.BBREF_BOXSCORES]
    assert not scraped_ids_2018_after[DataSet.BROOKS_PITCHFX]
    assert scraped_ids_2018_after[DataSet.BBREF_GAMES_FOR_DATE] == [
        datetime(2018, 3, 29),
        datetime(2018, 4, 1),
        datetime(2018, 4, 17),
        datetime(2018, 6, 17),
    ]
    assert scraped_ids_2018_after[DataSet.BROOKS_GAMES_FOR_DATE] == [
        datetime(2018, 4, 1),
        datetime(2018, 6, 17),
    ]
    assert scraped_ids_2018_after[DataSet.BROOKS_PITCH_LOGS] == [
        "gid_2018_04_01_anamlb_oakmlb_1"
    ]

    scraped_ids_2019_after = {}
    scraped_ids_2019_after[
        DataSet.
        BBREF_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_GAMES_FOR_DATE, season_19)
    scraped_ids_2019_after[
        DataSet.
        BROOKS_GAMES_FOR_DATE] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_GAMES_FOR_DATE, season_19)
    scraped_ids_2019_after[
        DataSet.
        BBREF_BOXSCORES] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BBREF_BOXSCORES, season_19)
    scraped_ids_2019_after[
        DataSet.
        BROOKS_PITCH_LOGS] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCH_LOGS, season_19)
    scraped_ids_2019_after[
        DataSet.
        BROOKS_PITCHFX] = vig_app.scraped_data.get_scraped_ids_from_database(
            DataSet.BROOKS_PITCHFX, season_19)
    assert len(scraped_ids_2019_after[DataSet.BBREF_GAMES_FOR_DATE]) == 8
    assert len(scraped_ids_2019_after[DataSet.BROOKS_GAMES_FOR_DATE]) == 8
    assert len(scraped_ids_2019_after[DataSet.BBREF_BOXSCORES]) == 9
    assert len(scraped_ids_2019_after[DataSet.BROOKS_PITCH_LOGS]) == 9
    assert len(scraped_ids_2019_after[DataSet.BROOKS_PITCHFX]) == 79
コード例 #6
0
def test_total_days_in_season(vig_app):
    with patch("vigorish.models.season.date") as mock_date:
        mock_date.today.return_value = date(2019, 7, 10)
        s2019 = Season.find_by_year(vig_app.db_session, 2019)
        assert s2019.total_days == 104
コード例 #7
0
def test_season_as_dict(vig_app):
    season = Season.find_by_year(vig_app.db_session, MLB_YEAR)
    assert season
    assert season.year == MLB_YEAR
    assert season.season_type == SeasonType.REGULAR_SEASON
    season_dict = season.as_dict()
    assert season_dict
    check_dict = {
        "asg_date_str": "2019-07-09",
        "combined_data_for_all_pitchfx_logs": False,
        "end_date_str": "2019-09-29",
        "name": "MLB 2019 Regular Season",
        "percent_complete_bbref_boxscores_scraped": "0%",
        "percent_complete_bbref_games_for_date": 0.03763440860215054,
        "percent_complete_brooks_games_for_date": 0.03763440860215054,
        "percent_complete_brooks_pitch_logs": "0%",
        "percent_complete_pitchfx_logs_scraped": 1.0,
        "pitch_app_count_bbref": 79,
        "pitch_app_count_brooks": 868,
        "pitch_app_count_pitchfx": 79,
        "pitchfx_error_for_any_pitchfx_logs": False,
        "pitchfx_is_valid_for_all_pitchfx_logs": True,
        "scraped_all_bbref_boxscores": False,
        "scraped_all_bbref_games_for_date": False,
        "scraped_all_brooks_games_for_date": False,
        "scraped_all_brooks_pitch_logs": False,
        "scraped_all_pitchfx_logs": False,
        "start_date_str": "2019-03-28",
        "total_at_bats_invalid_pitchfx": 0,
        "total_at_bats_missing_pitchfx": 7,
        "total_at_bats_pitchfx_error": 0,
        "total_at_bats_removed_pitchfx": 2,
        "total_batters_faced_bbref": 631,
        "total_batters_faced_pitchfx": 624,
        "total_bbref_boxscores_scraped": 8,
        "total_brooks_pitch_logs_scraped": 8,
        "total_days": 186,
        "total_days_scraped_bbref": 7,
        "total_days_scraped_brooks": 7,
        "total_games": 97,
        "total_games_combined": 8,
        "total_games_combined_fail": 0,
        "total_games_combined_success": 8,
        "total_missing_pitchfx_count": 37,
        "total_pitch_apps_combined_data": 79,
        "total_pitch_apps_invalid_pitchfx": 0,
        "total_pitch_apps_no_pitchfx_data": 2,
        "total_pitch_apps_pitchfx_error": 0,
        "total_pitch_apps_pitchfx_is_valid": 79,
        "total_pitch_apps_scraped_pitchfx": 79,
        "total_pitch_apps_with_pitchfx_data": 77,
        "total_pitch_count_bbref": 2456,
        "total_pitch_count_bbref_audited": 2456,
        "total_pitch_count_pitch_logs": 2467,
        "total_pitch_count_pitchfx": 2467,
        "total_pitch_count_pitchfx_audited": 2419,
        "total_removed_pitchfx_count": 5,
        "year": 2019,
    }

    assert check_dict == season_dict
コード例 #8
0
ファイル: crud.py プロジェクト: a-luna/vig-api
def get_all_dates_in_season(year: int, app: Vigorish):
    season = Season.find_by_year(app.db_session, year)
    return season.get_date_range() if season else []