Passed
Push — master ( b2363b...f4eeba )
by manny
01:38
created

test_coop.time_ago()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
from datetime import datetime, timedelta, timezone
2
from gadgets.coop import Coop
3
from users_for_testing import get_test_entrant
4
from races_for_testing import get_test_race, time_ago
5
6
def test_coop_no_one_finished():
7
    entrant = get_test_entrant(status_value="in_progress")
8
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
9
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
10
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
11
12
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1))
13
    coop = Coop()
14
    coop.enabled = True
15
    coop.partner = partner.user.full_name
16
    coop.opponent1 = opponent1.user.full_name
17
    coop.opponent2 = opponent2.user.full_name
18
    coop.update_coop_text(race, entrant.user.full_name)
19
    assert coop.label_text == "Race still in progress"
20
    assert coop.text == " "
21
22 View Code Duplication
def test_only_entrant_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
23
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
24
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
25
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
26
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
27
28
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
29
    coop = Coop()
30
    coop.enabled = True
31
    coop.partner = partner.user.full_name
32
    coop.opponent1 = opponent1.user.full_name
33
    coop.opponent2 = opponent2.user.full_name
34
    coop.update_coop_text(race, entrant.user.full_name)
35
    assert coop.label_text == "Race still in progress"
36
    assert coop.text == " "
37
38 View Code Duplication
def test_only_partner_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
39
    entrant = get_test_entrant(status_value="in_progress")
40
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id])
41
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
42
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
43
44
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
45
    coop = Coop()
46
    coop.enabled = True
47
    coop.partner = partner.user.full_name
48
    coop.opponent1 = opponent1.user.full_name
49
    coop.opponent2 = opponent2.user.full_name
50
    coop.update_coop_text(race, entrant.user.full_name)
51
    assert coop.label_text == "Race still in progress"
52
    assert coop.text == " "
53
54 View Code Duplication
def test_only_opponent1_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
55
    entrant = get_test_entrant(status_value="in_progress")
56
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
57
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
58
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
59
60
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
61
    coop = Coop()
62
    coop.enabled = True
63
    coop.partner = partner.user.full_name
64
    coop.opponent1 = opponent1.user.full_name
65
    coop.opponent2 = opponent2.user.full_name
66
    coop.update_coop_text(race, entrant.user.full_name)
67
    assert coop.label_text == "Race still in progress"
68
    assert coop.text == " "
69
70 View Code Duplication
def test_only_opponent2_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
71
    entrant = get_test_entrant(status_value="in_progress")
72
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
73
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
74
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
75
76
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
77
    coop = Coop()
78
    coop.enabled = True
79
    coop.partner = partner.user.full_name
80
    coop.opponent1 = opponent1.user.full_name
81
    coop.opponent2 = opponent2.user.full_name
82
    coop.update_coop_text(race, entrant.user.full_name)
83
    assert coop.label_text == "Race still in progress"
84
    assert coop.text == " "
85
86 View Code Duplication
def test_entrant_and_partner_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
87
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
88
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
89
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
90
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
91
92
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
93
    coop = Coop()
94
    coop.enabled = True
95
    coop.partner = partner.user.full_name
96
    coop.opponent1 = opponent1.user.full_name
97
    coop.opponent2 = opponent2.user.full_name
98
    coop.update_coop_text(race, entrant.user.full_name)
99
    assert coop.label_text == "We won!"
100
    assert coop.text == "1:30:00.0"
101
102 View Code Duplication
def test_opponents_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
103
    entrant = get_test_entrant(status_value="in_progress")
104
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
105
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
106
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
107
108
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
109
    coop = Coop()
110
    coop.enabled = True
111
    coop.partner = partner.user.full_name
112
    coop.opponent1 = opponent1.user.full_name
113
    coop.opponent2 = opponent2.user.full_name
114
    coop.update_coop_text(race, entrant.user.full_name)
115
    assert coop.label_text == "They won. :("
116
    assert coop.text == "1:30:00.0"
117
118 View Code Duplication
def test_entrant_and_opponent1_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
119
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1))
120
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
121
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
122
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
123
124
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
125
    coop = Coop()
126
    coop.enabled = True
127
    coop.partner = partner.user.full_name
128
    coop.opponent1 = opponent1.user.full_name
129
    coop.opponent2 = opponent2.user.full_name
130
    coop.update_coop_text(race, entrant.user.full_name)
131
    assert coop.label_text == "Race still in progress"
132
    assert coop.text == " "
133
134 View Code Duplication
def test_partner_and_opponent1_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
135
    entrant = get_test_entrant(status_value="in_progress")
136
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
137
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
138
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
139
140
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
141
    coop = Coop()
142
    coop.enabled = True
143
    coop.partner = partner.user.full_name
144
    coop.opponent1 = opponent1.user.full_name
145
    coop.opponent2 = opponent2.user.full_name
146
    coop.update_coop_text(race, entrant.user.full_name)
147
    assert coop.label_text == "Race still in progress"
148
    assert coop.text == " "
149
150 View Code Duplication
def test_entrant_and_partner_and_opponent1_finished_race_ongoing():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
151
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1))
152
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
153
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
154
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
155
156
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=12))
157
    coop = Coop()
158
    coop.enabled = True
159
    coop.partner = partner.user.full_name
160
    coop.opponent1 = opponent1.user.full_name
161
    coop.opponent2 = opponent2.user.full_name
162
    coop.update_coop_text(race, entrant.user.full_name)
163
    assert coop.label_text == opponent2.user.name + " needs to finish before"
164
    assert coop.text == "3:00:00.0"
165
166 View Code Duplication
def test_entrant_and_partner_and_opponent1_finished_race_over():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
167
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
168
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
169
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=3, microseconds=2), users_used=[entrant.user.id, partner.user.id])
170
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
171
172
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=3, minutes=4))
173
    coop = Coop()
174
    coop.enabled = True
175
    coop.partner = partner.user.full_name
176
    coop.opponent1 = opponent1.user.full_name
177
    coop.opponent2 = opponent2.user.full_name
178
    coop.update_coop_text(race, entrant.user.full_name)
179
    assert coop.label_text == f"{entrant.user.name} and {partner.user.name} won"
180
    assert coop.text == "1:30:00.0"
181
182 View Code Duplication
def test_opponents_and_entrant_finished_race_ongoing():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
183
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
184
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
185
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=2), users_used=[entrant.user.id, partner.user.id])
186
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
187
188
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=1))
189
    coop = Coop()
190
    coop.enabled = True
191
    coop.partner = partner.user.full_name
192
    coop.opponent1 = opponent1.user.full_name
193
    coop.opponent2 = opponent2.user.full_name
194
    coop.update_coop_text(race, entrant.user.full_name)
195
    assert coop.label_text == f"{partner.user.name} needs to finish before"
196
    assert coop.text == "3:00:00.0"
197
198 View Code Duplication
def test_opponents_and_partner_finished_race_over():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
199
    entrant = get_test_entrant(status_value="in_progress")
200
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=3, microseconds=5), users_used=[entrant.user.id])
201
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
202
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
203
204
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=3, minutes=1))
205
    coop = Coop()
206
    coop.enabled = True
207
    coop.partner = partner.user.full_name
208
    coop.opponent1 = opponent1.user.full_name
209
    coop.opponent2 = opponent2.user.full_name
210
    coop.update_coop_text(race, entrant.user.full_name)
211
    assert coop.label_text == f"{opponent1.user.name} and {opponent2.user.name} won"
212
    assert coop.text == "1:30:00.0"
213
214 View Code Duplication
def test_everyone_finished_we_won():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
215
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
216
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
217
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id])
218
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
219
220
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=1))
221
    coop = Coop()
222
    coop.enabled = True
223
    coop.partner = partner.user.full_name
224
    coop.opponent1 = opponent1.user.full_name
225
    coop.opponent2 = opponent2.user.full_name
226
    coop.update_coop_text(race, entrant.user.full_name)
227
    assert coop.label_text == f"We won!!! Average time:"
228
    assert coop.text == "1:30:00.0"
229
230 View Code Duplication
def test_everyone_finished_opponents_won():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
231
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1))
232
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
233
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
234
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
235
236
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=1))
237
    coop = Coop()
238
    coop.enabled = True
239
    coop.partner = partner.user.full_name
240
    coop.opponent1 = opponent1.user.full_name
241
    coop.opponent2 = opponent2.user.full_name
242
    coop.update_coop_text(race, entrant.user.full_name)
243
    assert coop.label_text == f"Opponents won, average time:"
244
    assert coop.text == "1:30:00.0"