1
|
|
|
from typing import List |
2
|
|
|
from datetime import datetime, timedelta, timezone |
3
|
|
|
from models.race import Race, Goal, Status, Entrant |
4
|
|
|
from users_for_testing import get_test_user, get_test_entrant |
5
|
|
|
from categories_for_testing import get_test_race_category |
6
|
|
|
|
7
|
|
|
def time_ago(**kwargs): |
8
|
|
|
return datetime.now(timezone.utc)-timedelta(**kwargs) |
9
|
|
|
|
10
|
|
|
def get_test_race(status_value="in_progress", version=1, entrants_count=2, started_at=datetime.now(timezone.utc), |
11
|
|
|
start_delay=timedelta(seconds=-15), opened_at=datetime.now(timezone.utc), ended_at=None, |
12
|
|
|
cancelled_at: datetime = None, entrant: Entrant = None, entrants: List[Entrant] = None) -> Race: |
13
|
|
|
if not entrants: |
14
|
|
|
entrants = [] |
15
|
|
|
for i in range(0, entrants_count): |
16
|
|
|
e = get_test_entrant(entrants) |
17
|
|
|
entrants.append(e) |
18
|
|
|
entrant_count_finished = 0 |
19
|
|
|
else: |
20
|
|
|
entrant_count_finished = list.count((list((x.status.value == "finished" for x in entrants))), True) |
|
|
|
|
21
|
|
|
test_race= Race(name="", |
22
|
|
|
status=Status(value=status_value, |
23
|
|
|
verbose_value="", help_text=""), |
24
|
|
|
category=get_test_race_category(), |
25
|
|
|
goal=Goal("", False), |
26
|
|
|
info="A test race", |
27
|
|
|
url="", |
28
|
|
|
data_url="", |
29
|
|
|
websocket_url="", |
30
|
|
|
websocket_bot_url="", |
31
|
|
|
websocket_oauth_url="", |
32
|
|
|
entrants_count=entrants_count, |
33
|
|
|
entrants_count_inactive=0, |
34
|
|
|
entrants_count_finished=entrant_count_finished, |
35
|
|
|
entrants=entrants, |
36
|
|
|
version=version, |
37
|
|
|
started_at=started_at, |
38
|
|
|
start_delay=start_delay, |
39
|
|
|
ended_at=ended_at, |
40
|
|
|
cancelled_at=cancelled_at, |
41
|
|
|
unlisted=False, |
42
|
|
|
time_limit=timedelta(days=1), |
43
|
|
|
streaming_required=True, |
44
|
|
|
auto_start=True, |
45
|
|
|
opened_by=get_test_user(), |
46
|
|
|
opened_at=opened_at, |
47
|
|
|
monitors=[], |
48
|
|
|
recordable=True, |
49
|
|
|
recorded=False, |
50
|
|
|
recorded_by=None, |
51
|
|
|
allow_comments=True, |
52
|
|
|
hide_comments=False, |
53
|
|
|
allow_midrace_chat=True |
54
|
|
|
) |
55
|
|
|
if entrant is not None: |
56
|
|
|
if not entrant in test_race.entrants: |
57
|
|
|
test_race.entrants.pop() |
58
|
|
|
test_race.entrants.append(entrant) |
59
|
|
|
return test_race |
60
|
|
|
|