Exemplo n.º 1
0
def test_assign_winners_week2_away_win_home_win():
    previous_week = ScheduleWeek(week_number=1, week_type=WeekType.PLAYOFFS)
    previous_week.matchups = [
        Matchup(id="01",
                away=team_3,
                home=team_2,
                type=MatchupType.PLAYOFF,
                away_score=100,
                home_score=50),
        Matchup(id="02",
                away=team_4,
                home=team_1,
                type=MatchupType.PLAYOFF,
                away_score=50,
                home_score=100)
    ]

    current_week = ScheduleWeek(week_number=2, week_type=WeekType.CHAMPIONSHIP)
    current_week.matchups = [Matchup(id="01", type=MatchupType.CHAMPIONSHIP)]

    current_week.assign_playoff_matchups(PlayoffType.TOP_4, teams,
                                         previous_week)
    matchup = current_week.matchups[0]
    are_equal(matchup.away, team_3)
    are_equal(matchup.home, team_1)
Exemplo n.º 2
0
def generate_top_4_playoffs(first_playoff_week: int) -> List[ScheduleWeek]:
    week_1 = ScheduleWeek(week_number=first_playoff_week,
                          week_type=WeekType.PLAYOFFS)
    week_1.matchups.append(Matchup(type=MatchupType.PLAYOFF))
    week_1.matchups.append(Matchup(type=MatchupType.PLAYOFF))

    championship_week = ScheduleWeek(week_number=first_playoff_week + 1,
                                     week_type=WeekType.CHAMPIONSHIP)
    championship_week.matchups.append(Matchup(type=MatchupType.CHAMPIONSHIP))

    return [week_1, championship_week]
Exemplo n.º 3
0
def generate_playoffs(
    total_teams: int,
    playoff_type: PlayoffType,
    first_playoff_week,
    enable_loser_playoff,
) -> List[ScheduleWeek]:
    playoffs = []  # type: List[ScheduleWeek]

    if playoff_type == PlayoffType.TOP_2:
        playoffs.append(generate_top_2_playoffs(first_playoff_week))
    elif playoff_type == PlayoffType.TOP_3:
        playoffs.extend(generate_top_3_playoffs(first_playoff_week))
    elif playoff_type == PlayoffType.TOP_4:
        playoffs.extend(generate_top_4_playoffs(first_playoff_week))
    elif playoff_type == PlayoffType.TOP_6:
        playoffs.extend(generate_top_6_playoffs(first_playoff_week))
    else:
        raise NotSupportedException(
            f"Playoff type '{playoff_type}' is not supported")

    if enable_loser_playoff:
        enough_teams = total_teams - playoff_type >= 2
        if enough_teams:
            loser_game = Matchup(type=MatchupType.LOSER)
            playoffs[0].matchups.append(loser_game)

    return playoffs
Exemplo n.º 4
0
def test_update_roster_name_updates_schedule_config_home():
    week_number = 1

    league = League.construct(id="league1",
                              draft_state=DraftState.NOT_STARTED,
                              name="Test League",
                              schedule_generated=True,
                              commissioner_id="commish")
    roster = Roster(id="roster1", name="Mock Roster")
    user_league = UserLeaguePreview.create(roster, league)
    schedule = create_mock_schedule(week_number)

    roster_repo = get_league_roster_repo(roster)
    league_repo = get_league_repo(league)
    user_league_repo = get_user_league_repo(user_league)
    matchup_repo = get_league_week_matchup_repo()
    config_repo = get_league_config_repo()

    matchup = Matchup(id="1", home=roster, type=MatchupType.REGULAR)
    matchup_repo.set(league.id, week_number, matchup)
    schedule.weeks[0].matchups.append(matchup)

    config_repo.set_schedule_config(league.id, schedule)

    command_executor = UpdateRosterNameCommandExecutor(
        league_config_repo=config_repo,
        league_repo=league_repo,
        league_roster_repo=roster_repo,
        league_week_matchup_repo=matchup_repo,
        user_league_repo=user_league_repo,
        publisher=get_publisher(),
        league_transaction_repo=get_league_transaction_repo())

    new_name = "Update Roster Name"

    command = UpdateRosterNameCommand(league_id=league.id,
                                      roster_id=roster.id,
                                      roster_name=new_name,
                                      current_user_id=roster.id)

    result = command_executor.execute(command)

    assert result.success

    expected = new_name
    updated_schedule = config_repo.get_schedule_config(league.id)
    actual = updated_schedule.weeks[0].matchups[0].home.name

    are_equal(expected, actual)
Exemplo n.º 5
0
def generate_regular_season(
    number_of_weeks: int,
    sequence: List[List[ScheduledMatchup]],
    rosters: List[Roster],
) -> List[ScheduleWeek]:
    weeks = []

    for week_number in range(1, number_of_weeks + 1):
        games = sequence[0]
        week = ScheduleWeek(week_number=week_number,
                            week_type=WeekType.REGULAR)

        for game in games:
            away = rosters[game.away]
            home = rosters[game.home]
            matchup = Matchup(away=away, home=home, type=MatchupType.REGULAR)
            week.matchups.append(matchup)

        weeks.append(week)

        sequence.append(sequence.pop(0))

    return weeks
Exemplo n.º 6
0
def generate_top_2_playoffs(first_playoff_week: int) -> ScheduleWeek:
    championship_week = ScheduleWeek(week_number=first_playoff_week,
                                     week_type=WeekType.CHAMPIONSHIP)
    championship_week.matchups.append(Matchup(type=MatchupType.CHAMPIONSHIP))

    return championship_week