Passed
Push — master ( 5696b4...a69b32 )
by manny
01:27
created

test_coop.test_entrant_and_opponent1_finished()   A

Complexity

Conditions 1

Size

Total Lines 29
Code Lines 24

Duplication

Lines 29
Ratio 100 %

Importance

Changes 0
Metric Value
eloc 24
dl 29
loc 29
rs 9.304
c 0
b 0
f 0
cc 1
nop 1
1
from datetime import datetime, timedelta, timezone
2
3
from gadgets.coop import Coop
4
5
from races_for_testing import get_test_race, time_ago
6
from users_for_testing import get_test_entrant
7
8
9
def test_random_users(random_users):
10
    previous_user = next(random_users)
11
    for user in random_users:
12
        assert previous_user.id != user.id
13
14
15
def test_coop_no_one_finished(random_users):
16
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
17
    partner = get_test_entrant(next(random_users), status_value="in_progress")
18
    opponent1 = get_test_entrant(
19
        next(random_users), status_value="in_progress")
20
    opponent2 = get_test_entrant(
21
        next(random_users), status_value="in_progress",)
22
23
    race = get_test_race(
24
        entrants=[
25
            entrant,
26
            partner,
27
            opponent1,
28
            opponent2
29
        ],
30
        opened_by=next(random_users),
31
        started_at=time_ago(hours=1)
32
    )
33
    coop = Coop()
34
    coop.enabled = True
35
    coop.partner = partner.user.full_name
36
    coop.opponent1 = opponent1.user.full_name
37
    coop.opponent2 = opponent2.user.full_name
38
    coop.update_coop_text(race, entrant.user.full_name)
39
    assert coop.label_text == "Race still in progress"
40
    assert coop.text == " "
41
42
43 View Code Duplication
def test_only_entrant_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
44
    entrant = get_test_entrant(
45
        next(random_users),
46
        status_value="finished", finished_at=datetime.now(timezone.utc),
47
        finish_time=timedelta(hours=1, microseconds=1)
48
    )
49
    partner = get_test_entrant(next(random_users), status_value="in_progress")
50
    opponent1 = get_test_entrant(
51
        next(random_users), status_value="in_progress")
52
    opponent2 = get_test_entrant(
53
        next(random_users), status_value="in_progress")
54
55
    race = get_test_race(
56
        entrants=[entrant, partner, opponent1, opponent2],
57
        opened_by=next(random_users),
58
        started_at=time_ago(hours=1, minutes=15)
59
    )
60
    coop = Coop()
61
    coop.enabled = True
62
    coop.partner = partner.user.full_name
63
    coop.opponent1 = opponent1.user.full_name
64
    coop.opponent2 = opponent2.user.full_name
65
    coop.update_coop_text(race, entrant.user.full_name)
66
    assert coop.label_text == "Race still in progress"
67
    assert coop.text == " "
68
69
70 View Code Duplication
def test_only_partner_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
71
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
72
    partner = get_test_entrant(
73
        next(random_users),
74
        status_value="finished", finished_at=datetime.now(timezone.utc),
75
        finish_time=timedelta(hours=1, microseconds=1)
76
    )
77
    opponent1 = get_test_entrant(
78
        next(random_users), status_value="in_progress",
79
    )
80
    opponent2 = get_test_entrant(
81
        next(random_users), status_value="in_progress"
82
    )
83
84
    race = get_test_race(
85
        entrants=[entrant, partner, opponent1, opponent2],
86
        opened_by=next(random_users),
87
        started_at=time_ago(hours=1, minutes=15)
88
    )
89
    coop = Coop()
90
    coop.enabled = True
91
    coop.partner = partner.user.full_name
92
    coop.opponent1 = opponent1.user.full_name
93
    coop.opponent2 = opponent2.user.full_name
94
    coop.update_coop_text(race, entrant.user.full_name)
95
    assert coop.label_text == "Race still in progress"
96
    assert coop.text == " "
97
98
99 View Code Duplication
def test_only_opponent1_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
100
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
101
    partner = get_test_entrant(next(random_users), status_value="in_progress")
102
    opponent1 = get_test_entrant(
103
        next(random_users),
104
        status_value="finished", finished_at=datetime.now(timezone.utc),
105
        finish_time=timedelta(hours=1, microseconds=1)
106
    )
107
    opponent2 = get_test_entrant(
108
        next(random_users), status_value="in_progress"
109
    )
110
111
    race = get_test_race(
112
        entrants=[entrant, partner, opponent1, opponent2],
113
        opened_by=next(random_users),
114
        started_at=time_ago(hours=1, minutes=15)
115
    )
116
    coop = Coop()
117
    coop.enabled = True
118
    coop.partner = partner.user.full_name
119
    coop.opponent1 = opponent1.user.full_name
120
    coop.opponent2 = opponent2.user.full_name
121
    coop.update_coop_text(race, entrant.user.full_name)
122
    assert coop.label_text == "Race still in progress"
123
    assert coop.text == " "
124
125
126 View Code Duplication
def test_only_opponent2_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
127
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
128
    partner = get_test_entrant(next(random_users), status_value="in_progress")
129
    opponent1 = get_test_entrant(
130
        next(random_users), status_value="in_progress"
131
    )
132
    opponent2 = get_test_entrant(
133
        next(random_users), status_value="finished",
134
        finished_at=datetime.now(timezone.utc),
135
        finish_time=timedelta(hours=1, microseconds=1),
136
    )
137
138
    race = get_test_race(
139
        entrants=[entrant, partner, opponent1, opponent2],
140
        opened_by=next(random_users),
141
        started_at=time_ago(hours=1, minutes=15)
142
    )
143
    coop = Coop()
144
    coop.enabled = True
145
    coop.partner = partner.user.full_name
146
    coop.opponent1 = opponent1.user.full_name
147
    coop.opponent2 = opponent2.user.full_name
148
    coop.update_coop_text(race, entrant.user.full_name)
149
    assert coop.label_text == "Race still in progress"
150
    assert coop.text == " "
151
152
153 View Code Duplication
def test_entrant_and_partner_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
154
    entrant = get_test_entrant(
155
        next(random_users),
156
        status_value="finished", finished_at=datetime.now(timezone.utc),
157
        finish_time=timedelta(hours=1, microseconds=1)
158
    )
159
    partner = get_test_entrant(
160
        next(random_users), status_value="finished",
161
        finished_at=datetime.now(timezone.utc),
162
        finish_time=timedelta(hours=2, microseconds=1),
163
    )
164
    opponent1 = get_test_entrant(
165
        next(random_users), status_value="in_progress"
166
    )
167
    opponent2 = get_test_entrant(
168
        next(random_users), status_value="in_progress",
169
    )
170
171
    race = get_test_race(
172
        entrants=[entrant, partner, opponent1, opponent2],
173
        opened_by=next(random_users),
174
        started_at=time_ago(hours=2, minutes=15)
175
    )
176
    coop = Coop()
177
    coop.enabled = True
178
    coop.partner = partner.user.full_name
179
    coop.opponent1 = opponent1.user.full_name
180
    coop.opponent2 = opponent2.user.full_name
181
    coop.update_coop_text(race, entrant.user.full_name)
182
    assert coop.label_text == "We won!"
183
    assert coop.text == "1:30:00.0"
184
185
186 View Code Duplication
def test_opponents_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
187
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
188
    partner = get_test_entrant(next(random_users), status_value="in_progress")
189
    opponent1 = get_test_entrant(
190
        next(random_users),
191
        status_value="finished", finished_at=datetime.now(timezone.utc),
192
        finish_time=timedelta(hours=1, microseconds=1),
193
    )
194
    opponent2 = get_test_entrant(
195
        next(random_users),
196
        status_value="finished", finished_at=datetime.now(timezone.utc),
197
        finish_time=timedelta(hours=2, microseconds=1)
198
    )
199
200
    race = get_test_race(
201
        entrants=[entrant, partner, opponent1, opponent2],
202
        opened_by=next(random_users),
203
        started_at=time_ago(hours=2, minutes=15)
204
    )
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 == "They won. :("
212
    assert coop.text == "1:30:00.0"
213
214
215 View Code Duplication
def test_entrant_and_opponent1_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
216
    entrant = get_test_entrant(
217
        next(random_users),
218
        status_value="finished", finished_at=datetime.now(timezone.utc),
219
        finish_time=timedelta(hours=2, microseconds=1)
220
    )
221
    partner = get_test_entrant(next(random_users), status_value="in_progress")
222
    opponent1 = get_test_entrant(
223
        next(random_users),
224
        status_value="finished", finished_at=datetime.now(timezone.utc),
225
        finish_time=timedelta(hours=1, microseconds=1)
226
    )
227
    opponent2 = get_test_entrant(
228
        next(random_users), status_value="in_progress",
229
    )
230
231
    race = get_test_race(
232
        entrants=[entrant, partner, opponent1, opponent2],
233
        opened_by=next(random_users),
234
        started_at=time_ago(hours=2, minutes=15)
235
    )
236
    coop = Coop()
237
    coop.enabled = True
238
    coop.partner = partner.user.full_name
239
    coop.opponent1 = opponent1.user.full_name
240
    coop.opponent2 = opponent2.user.full_name
241
    coop.update_coop_text(race, entrant.user.full_name)
242
    assert coop.label_text == "Race still in progress"
243
    assert coop.text == " "
244
245
246 View Code Duplication
def test_partner_and_opponent1_finished(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
247
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
248
    partner = get_test_entrant(
249
        next(random_users),
250
        status_value="finished", finished_at=datetime.now(timezone.utc),
251
        finish_time=timedelta(hours=2, microseconds=1),
252
    )
253
    opponent1 = get_test_entrant(
254
        next(random_users),
255
        status_value="finished", finished_at=datetime.now(timezone.utc),
256
        finish_time=timedelta(hours=1, microseconds=1),
257
    )
258
    opponent2 = get_test_entrant(
259
        next(random_users), status_value="in_progress",
260
    )
261
262
    race = get_test_race(
263
        entrants=[entrant, partner, opponent1, opponent2],
264
        opened_by=next(random_users),
265
        started_at=time_ago(hours=2, minutes=15)
266
    )
267
    coop = Coop()
268
    coop.enabled = True
269
    coop.partner = partner.user.full_name
270
    coop.opponent1 = opponent1.user.full_name
271
    coop.opponent2 = opponent2.user.full_name
272
    coop.update_coop_text(race, entrant.user.full_name)
273
    assert coop.label_text == "Race still in progress"
274
    assert coop.text == " "
275
276
277 View Code Duplication
def test_entrant_and_partner_and_opponent1_finished_race_ongoing(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
278
    entrant = get_test_entrant(
279
        next(random_users),
280
        status_value="finished", finished_at=datetime.now(timezone.utc),
281
        finish_time=timedelta(hours=2, microseconds=1)
282
    )
283
    partner = get_test_entrant(
284
        next(random_users),
285
        status_value="finished", finished_at=datetime.now(timezone.utc),
286
        finish_time=timedelta(hours=2, microseconds=1)
287
    )
288
    opponent1 = get_test_entrant(
289
        next(random_users),
290
        status_value="finished", finished_at=datetime.now(timezone.utc),
291
        finish_time=timedelta(hours=1, microseconds=1)
292
    )
293
    opponent2 = get_test_entrant(
294
        next(random_users), status_value="in_progress"
295
    )
296
297
    race = get_test_race(
298
        entrants=[entrant, partner, opponent1, opponent2],
299
        opened_by=next(random_users),
300
        started_at=time_ago(hours=2, minutes=12)
301
    )
302
    coop = Coop()
303
    coop.enabled = True
304
    coop.partner = partner.user.full_name
305
    coop.opponent1 = opponent1.user.full_name
306
    coop.opponent2 = opponent2.user.full_name
307
    coop.update_coop_text(race, entrant.user.full_name)
308
    assert coop.label_text == opponent2.user.name + " needs to finish before"
309
    assert coop.text == "3:00:00.0"
310
311
312 View Code Duplication
def test_entrant_and_partner_and_opponent1_finished_race_over(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
313
    entrant = get_test_entrant(
314
        next(random_users),
315
        status_value="finished", finished_at=datetime.now(timezone.utc),
316
        finish_time=timedelta(hours=1, microseconds=1)
317
    )
318
    partner = get_test_entrant(
319
        next(random_users),
320
        status_value="finished", finished_at=datetime.now(timezone.utc),
321
        finish_time=timedelta(hours=2, microseconds=1),
322
    )
323
    opponent1 = get_test_entrant(
324
        next(random_users),
325
        status_value="finished", finished_at=datetime.now(timezone.utc),
326
        finish_time=timedelta(hours=3, microseconds=2),
327
    )
328
    opponent2 = get_test_entrant(
329
        next(random_users), status_value="in_progress"
330
    )
331
332
    race = get_test_race(
333
        entrants=[entrant, partner, opponent1, opponent2],
334
        opened_by=next(random_users),
335
        started_at=time_ago(hours=3, minutes=4)
336
    )
337
    coop = Coop()
338
    coop.enabled = True
339
    coop.partner = partner.user.full_name
340
    coop.opponent1 = opponent1.user.full_name
341
    coop.opponent2 = opponent2.user.full_name
342
    coop.update_coop_text(race, entrant.user.full_name)
343
    assert (
344
        coop.label_text == f"{entrant.user.name} and {partner.user.name} won"
345
    )
346
    assert coop.text == "1:30:00.0"
347
348
349 View Code Duplication
def test_opponents_and_entrant_finished_race_ongoing(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
350
    entrant = get_test_entrant(
351
        next(random_users),
352
        status_value="finished", finished_at=datetime.now(timezone.utc),
353
        finish_time=timedelta(hours=1, microseconds=1)
354
    )
355
    partner = get_test_entrant(
356
        next(random_users), status_value="in_progress"
357
    )
358
    opponent1 = get_test_entrant(
359
        next(random_users),
360
        status_value="finished", finished_at=datetime.now(timezone.utc),
361
        finish_time=timedelta(hours=2, microseconds=2),
362
    )
363
    opponent2 = get_test_entrant(
364
        next(random_users),
365
        status_value="finished", finished_at=datetime.now(timezone.utc),
366
        finish_time=timedelta(hours=2, microseconds=1),
367
    )
368
369
    race = get_test_race(
370
        entrants=[entrant, partner, opponent1, opponent2],
371
        opened_by=next(random_users),
372
        started_at=time_ago(hours=2, minutes=1)
373
    )
374
    coop = Coop()
375
    coop.enabled = True
376
    coop.partner = partner.user.full_name
377
    coop.opponent1 = opponent1.user.full_name
378
    coop.opponent2 = opponent2.user.full_name
379
    coop.update_coop_text(race, entrant.user.full_name)
380
    assert coop.label_text == f"{partner.user.name} needs to finish before"
381
    assert coop.text == "3:00:00.0"
382
383
384 View Code Duplication
def test_opponents_and_partner_finished_race_over(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
385
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
386
    partner = get_test_entrant(
387
        next(random_users),
388
        status_value="finished", finished_at=datetime.now(timezone.utc),
389
        finish_time=timedelta(hours=3, microseconds=5),
390
    )
391
    opponent1 = get_test_entrant(
392
        next(random_users),
393
        status_value="finished", finished_at=datetime.now(timezone.utc),
394
        finish_time=timedelta(hours=1, microseconds=1),
395
    )
396
    opponent2 = get_test_entrant(
397
        next(random_users),
398
        status_value="finished", finished_at=datetime.now(timezone.utc),
399
        finish_time=timedelta(hours=2, microseconds=1)
400
    )
401
402
    race = get_test_race(
403
        entrants=[entrant, partner, opponent1, opponent2],
404
        opened_by=next(random_users),
405
        started_at=time_ago(hours=3, minutes=1)
406
    )
407
    coop = Coop()
408
    coop.enabled = True
409
    coop.partner = partner.user.full_name
410
    coop.opponent1 = opponent1.user.full_name
411
    coop.opponent2 = opponent2.user.full_name
412
    coop.update_coop_text(race, entrant.user.full_name)
413
414
    expected_text = f"{opponent1.user.name} and {opponent2.user.name} won"
415
    assert coop.label_text == expected_text
416
    assert coop.text == "1:30:00.0"
417
418
419 View Code Duplication
def test_everyone_finished_we_won(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
420
    entrant = get_test_entrant(
421
        next(random_users),
422
        status_value="finished", finished_at=datetime.now(timezone.utc),
423
        finish_time=timedelta(hours=1, microseconds=1)
424
    )
425
    partner = get_test_entrant(
426
        next(random_users),
427
        status_value="finished", finished_at=datetime.now(timezone.utc),
428
        finish_time=timedelta(hours=2, microseconds=1)
429
    )
430
    opponent1 = get_test_entrant(
431
        next(random_users),
432
        status_value="finished", finished_at=datetime.now(timezone.utc),
433
        finish_time=timedelta(hours=2, microseconds=1)
434
    )
435
    opponent2 = get_test_entrant(
436
        next(random_users),
437
        status_value="finished", finished_at=datetime.now(timezone.utc),
438
        finish_time=timedelta(hours=2, microseconds=1)
439
    )
440
441
    race = get_test_race(
442
        entrants=[entrant, partner, opponent1, opponent2],
443
        opened_by=next(random_users),
444
        started_at=time_ago(hours=2, minutes=1)
445
    )
446
    coop = Coop()
447
    coop.enabled = True
448
    coop.partner = partner.user.full_name
449
    coop.opponent1 = opponent1.user.full_name
450
    coop.opponent2 = opponent2.user.full_name
451
    coop.update_coop_text(race, entrant.user.full_name)
452
    assert coop.label_text == "We won!!! Average time:"
453
    assert coop.text == "1:30:00.0"
454
455
456 View Code Duplication
def test_everyone_finished_opponents_won(random_users):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
457
    entrant = get_test_entrant(
458
        next(random_users),
459
        status_value="finished", finished_at=datetime.now(timezone.utc),
460
        finish_time=timedelta(hours=2, microseconds=1)
461
    )
462
    partner = get_test_entrant(
463
        next(random_users),
464
        status_value="finished", finished_at=datetime.now(timezone.utc),
465
        finish_time=timedelta(hours=2, microseconds=1)
466
    )
467
    opponent1 = get_test_entrant(
468
        next(random_users),
469
        status_value="finished", finished_at=datetime.now(timezone.utc),
470
        finish_time=timedelta(hours=1, microseconds=1)
471
    )
472
    opponent2 = get_test_entrant(
473
        next(random_users),
474
        status_value="finished", finished_at=datetime.now(timezone.utc),
475
        finish_time=timedelta(hours=2, microseconds=1)
476
    )
477
478
    race = get_test_race(
479
        entrants=[entrant, partner, opponent1, opponent2],
480
        opened_by=next(random_users),
481
        started_at=time_ago(hours=2, minutes=1)
482
    )
483
    coop = Coop()
484
    coop.enabled = True
485
    coop.partner = partner.user.full_name
486
    coop.opponent1 = opponent1.user.full_name
487
    coop.opponent2 = opponent2.user.full_name
488
    coop.update_coop_text(race, entrant.user.full_name)
489
    assert coop.label_text == "Opponents won, average time:"
490
    assert coop.text == "1:30:00.0"
491