Code Duplication    Length = 33-35 lines in 4 locations

tests/test_coop.py 4 locations

@@ 312-346 (lines=35) @@
309
    assert coop.text == "3:00:00.0"
310
311
312
def test_entrant_and_partner_and_opponent1_finished_race_over(random_users):
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
def test_opponents_and_entrant_finished_race_ongoing(random_users):
@@ 384-416 (lines=33) @@
381
    assert coop.text == "3:00:00.0"
382
383
384
def test_opponents_and_partner_finished_race_over(random_users):
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
def test_everyone_finished_we_won(random_users):
@@ 349-381 (lines=33) @@
346
    assert coop.text == "1:30:00.0"
347
348
349
def test_opponents_and_entrant_finished_race_ongoing(random_users):
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
def test_opponents_and_partner_finished_race_over(random_users):
@@ 277-309 (lines=33) @@
274
    assert coop.text == " "
275
276
277
def test_entrant_and_partner_and_opponent1_finished_race_ongoing(random_users):
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
def test_entrant_and_partner_and_opponent1_finished_race_over(random_users):