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)
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]
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
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)
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
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