コード例 #1
0
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"
コード例 #2
0
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"
コード例 #3
0
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"
コード例 #4
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"
コード例 #5
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"
コード例 #6
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
コード例 #7
0
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"
コード例 #8
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
コード例 #9
0
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