def test_opponents_and_entrant_finished_race_ongoing(random_users): entrant = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1)) partner = get_test_entrant(next(random_users), status_value="in_progress") opponent1 = get_test_entrant( next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=2), ) opponent2 = get_test_entrant( next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), ) race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, microseconds=3)) coop = Coop() coop.enabled = True coop.partner = partner.user.full_name coop.opponent1 = opponent1.user.full_name coop.opponent2 = opponent2.user.full_name coop.update_coop_text(race, entrant.user.full_name) assert coop.opponent_time_text == "2:00:00.0" assert coop.our_time_text == "0:29:59.9" race.started_at = time_ago(hours=2, minutes=30, microseconds=3) coop.update_coop_text(race, entrant.user.full_name) assert coop.opponent_time_text == "2:00:00.0" assert coop.our_time_text == "0:14:59.9"
def test_entrant_and_partner_and_opponent1_finished_race_ongoing(random_users): entrant = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1)) partner = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1)) opponent1 = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1)) opponent2 = get_test_entrant(next(random_users), status_value="in_progress") race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], opened_by=next(random_users), started_at=time_ago(hours=2, minutes=12)) coop = Coop() coop.enabled = True coop.partner = partner.user.full_name coop.opponent1 = opponent1.user.full_name coop.opponent2 = opponent2.user.full_name coop.update_coop_text(race, entrant.user.full_name) assert coop.opponent_time_text == "0:23:59.9" assert coop.our_time_text == "2:00:00.0" assert coop.our_time_color == coop.still_racing_color assert coop.opponent_time_color == coop.still_racing_color race.started_at = time_ago(hours=2, minutes=52) coop.update_coop_text(race, entrant.user.full_name) assert coop.opponent_time_text == "0:03:59.9"
def test_cutoff_finished(random_users): entrant = get_test_entrant(next(random_users), status_value="in_progress") first_place = get_test_entrant( next(random_users), status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1, ) second_place = get_test_entrant( next(random_users), status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2, ) third_place = get_test_entrant(next(random_users), status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3) entrants = get_test_entrants(random_users, first_place, second_place, third_place, entrant) race = get_test_race(entrants=entrants) qualifier = get_test_qualifier() qualifier.update_qualifier_text(race, entrant.user.full_name) assert qualifier.entrant_score == " " assert qualifier.par_text == "1:35:00.0"
def test_cutoff_and_entrant_finished_waay_ahead(random_users): entrant = get_test_entrant(next(random_users), status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, microseconds=1), place=2) second_place = get_test_entrant(next(random_users), status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=1) third_place = get_test_entrant(next(random_users), status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3) entrants = get_test_entrants(random_users, entrant, second_place, third_place) race = get_test_race(entrants=entrants) qualifier = get_test_qualifier() qualifier.update_qualifier_text(race, entrant.user.full_name) # par is 95 minutes, entrant's time is 60 minutes. 2-(60/85) ~= 1.29 # but max score is 1.05 assert qualifier.entrant_score == "1.05" assert qualifier.par_text == "1:25:00.0"
def test_cutoff_and_entrant_finished_in_top(random_users): entrant = get_test_entrant(next(random_users), status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2) first_place = get_test_entrant( next(random_users), status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1, ) third_place = get_test_entrant( next(random_users), status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3, ) entrants = get_test_entrants(random_users, first_place, third_place, entrant) race = get_test_race(entrants=entrants) qualifier = get_test_qualifier() qualifier.update_qualifier_text(race, entrant.user.full_name) # par is 95 minutes, entrant's time is 95 minutes. 2-(95/95) = 1.00 assert qualifier.entrant_score == "1.00" assert qualifier.par_text == "1:35:00.0"
def test_everyone_finished_opponents_won(random_users): entrant = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1)) partner = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1)) opponent1 = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1)) opponent2 = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1)) race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], opened_by=next(random_users), started_at=time_ago(hours=2, minutes=1)) coop = Coop() coop.enabled = True coop.partner = partner.user.full_name coop.opponent1 = opponent1.user.full_name coop.opponent2 = opponent2.user.full_name coop.update_coop_text(race, entrant.user.full_name) assert coop.opponent_time_text == "1:30:00.0" assert coop.opponent_time_color == coop.winner_color assert coop.our_time_text == "2:00:00.0" assert coop.our_time_color == coop.loser_color
def test_entrant_and_partner_and_opponent1_finished_race_over(random_users): entrant = get_test_entrant(next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1)) partner = get_test_entrant( next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), ) opponent1 = get_test_entrant( next(random_users), status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=3, microseconds=2), ) opponent2 = get_test_entrant(next(random_users), status_value="in_progress") race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], opened_by=next(random_users), started_at=time_ago(hours=3, minutes=4)) coop = Coop() coop.enabled = True coop.partner = partner.user.full_name coop.opponent1 = opponent1.user.full_name coop.opponent2 = opponent2.user.full_name coop.update_coop_text(race, entrant.user.full_name) assert (coop.opponent_time_text == "3:02:00.0") assert coop.our_time_text == "1:30:00.0"
def test_timer_counting_down(random_users): timer = get_test_timer() race = get_test_race(status_value="pending", version=13, started_at=time_ago(seconds=-5.01), start_delay=timedelta(seconds=15.0), entrants=get_test_entrants(random_users)) color, text = timer.get_timer_text(race, "") assert color is None assert text == "-0:00:05.0" timer.use_podium_colors = True color, text = timer.get_timer_text(race, "") assert color is timer.pre_color
def test_coop_no_one_finished(random_users): entrant = get_test_entrant(next(random_users), status_value="in_progress") partner = get_test_entrant(next(random_users), status_value="in_progress") opponent1 = get_test_entrant(next(random_users), status_value="in_progress") opponent2 = get_test_entrant( next(random_users), status_value="in_progress", ) race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], opened_by=next(random_users), started_at=time_ago(hours=1)) coop = Coop() coop.enabled = True coop.partner = partner.user.full_name coop.opponent1 = opponent1.user.full_name coop.opponent2 = opponent2.user.full_name coop.update_coop_text(race, entrant.user.full_name) assert coop.opponent_time_text == " " assert coop.our_time_text == " " assert coop.our_time_color == coop.still_racing_color assert coop.opponent_time_color == coop.still_racing_color