def test_drop_player_must_still_be_on_roster_already_dropped(): roster1 = Roster(id="1", name="team 1", rank=1, positions=deepcopy(league_positions)) roster1.positions["1"].player = player2 roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, drop_player=player2, amount=25)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player3, drop_player=player2, amount=15)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1]) assert roster1.waiver_bids[ 1].result == WaiverBidResult.FailedDropPlayerNotOnRoster
def test_tie_goes_to_highest_priority_two_ties(): roster1 = Roster(id="1", name="team 1", rank=1, positions=deepcopy(league_positions)) roster2 = Roster(id="2", name="team 2", rank=2, positions=deepcopy(league_positions)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, amount=5)) roster2.waiver_bids.append( WaiverBid(roster_id=roster2.id, player=player1, amount=5)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player2, amount=5)) roster2.waiver_bids.append( WaiverBid(roster_id=roster2.id, player=player2, amount=5)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1, roster2]) assert roster1.waiver_bids[ 0].result == WaiverBidResult.FailedLowerPriority, "Assert 1 failed" assert roster2.waiver_bids[ 0].result == WaiverBidResult.SuccessPending, "Assert 2 failed" assert roster1.waiver_bids[ 1].result == WaiverBidResult.SuccessPending, "Assert 3 failed" assert roster2.waiver_bids[ 1].result == WaiverBidResult.FailedLowerPriority, "Assert 4 failed"
def test_roster_budget_is_updated(): roster1 = Roster(id="1", name="team 1", rank=1, positions=deepcopy(league_positions)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, amount=5)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1]) assert roster1.waiver_budget == 95
def test_waiver_priority_is_reverse_rank(): roster1 = Roster(id="1", name="team 1", rank=1) roster2 = Roster(id="2", name="team 2", rank=3) roster3 = Roster(id="3", name="team 3", rank=4) roster4 = Roster(id="4", name="team 4", rank=2) rosters = [roster1, roster2, roster3, roster4] target = WaiverService(get_roster_player_service()) waiver_priority = target.get_initial_waiver_priority(rosters) assert waiver_priority[0] == "3" assert waiver_priority[1] == "2" assert waiver_priority[2] == "4" assert waiver_priority[3] == "1"
def test_cannot_exceed_waiver_budget_one_bid(): roster1 = Roster(id="1", name="team 1", rank=1, waiver_budget=20, positions=deepcopy(league_positions)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, amount=25)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1]) assert roster1.waiver_bids[ 0].result == WaiverBidResult.FailedNotEnoughMoney
def test_teams_with_no_bids_work_ok(): roster1 = Roster(id="1", name="team 1", rank=1, positions=deepcopy(league_positions)) roster2 = Roster(id="2", name="team 2", rank=2, positions=deepcopy(league_positions)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, amount=5)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1, roster2]) assert roster1.waiver_bids[0].result == WaiverBidResult.SuccessPending
def test_drop_player_must_still_be_on_roster(): roster1 = Roster(id="1", name="team 1", rank=1, positions=deepcopy(league_positions)) # note that player 2 is not actually in a position on roster1 roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, drop_player=player2, amount=25)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1]) assert roster1.waiver_bids[ 0].result == WaiverBidResult.FailedDropPlayerNotOnRoster
def test_highest_bid_wins_second_team(): roster1 = Roster(id="1", name="team 1", rank=1, positions=deepcopy(league_positions)) roster2 = Roster(id="2", name="team 2", rank=2, positions=deepcopy(league_positions)) roster1.waiver_bids.append( WaiverBid(roster_id=roster1.id, player=player1, amount=4)) roster2.waiver_bids.append( WaiverBid(roster_id=roster2.id, player=player1, amount=5)) target = WaiverService(get_roster_player_service()) target.process_bids([roster1, roster2]) assert roster1.waiver_bids[0].result == WaiverBidResult.FailedOutBid assert roster2.waiver_bids[0].result == WaiverBidResult.SuccessPending
def get_target(rosters: List[Roster]) -> ProcessWaiversCommandExecutor: state_repo = StateRepository(MockFirestoreProxy([state])) league_repo = LeagueRepository(MockFirestoreProxy([deepcopy(league)])) league_roster_repo = LeagueRosterRepository(MockFirestoreProxy(rosters)) league_owned_player_repo = LeagueOwnedPlayerRepository( MockFirestoreProxy()) transaction_repo = LeagueTransactionRepository(MockFirestoreProxy()) league_week_repo = LeagueWeekRepository(MockFirestoreProxy()) roster_player_service = RosterPlayerService(league_owned_player_repo, league_roster_repo, transaction_repo) waiver_service = WaiverService(roster_player_service) return ProcessWaiversCommandExecutor(state_repo=state_repo, league_roster_repo=league_roster_repo, league_repo=league_repo, waiver_service=waiver_service, league_week_repo=league_week_repo)