Passed
Push — master ( d83fa0...73c582 )
by manny
02:10
created

test_qualifier.test_cutoff_finished()   A

Complexity

Conditions 2

Size

Total Lines 14
Code Lines 14

Duplication

Lines 14
Ratio 100 %

Importance

Changes 0
Metric Value
eloc 14
dl 14
loc 14
rs 9.7
c 0
b 0
f 0
cc 2
nop 0
1
from datetime import datetime, time, timedelta, timezone
2
from gadgets.qualifier import Qualifier
3
from models.race import Entrant, Goal, Race, Status
4
from users_for_testing import get_test_user, get_test_entrant
5
from categories_for_testing import get_test_race_category
6
from races_for_testing import get_test_race, time_ago
7
8
9
def get_test_qualifier():
10
    qualifier = Qualifier()
11
    qualifier.enabled = True
12
    qualifier.qualifier_cutoff = 3
13
    qualifier.par_source = "par source"
14
    qualifier.score_source = "score source"
15
    return qualifier
16
17
def test_no_one_finished():
18
    entrant = get_test_entrant(status_value="in_progress")
19
    race = get_test_race(entrants_count=20, entrant=entrant)
20
    qualifier = get_test_qualifier()
21
    qualifier.update_qualifier_text(race, entrant.user.full_name)
22
    assert qualifier.entrant_score == " "
23
    assert qualifier.par_text == " "
24
25
def test_some_finished():
26
    entrant = get_test_entrant(status_value="in_progress")
27
    first_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1, users_used=[entrant.user.id])
28
    second_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2, users_used=[entrant.user.id, first_place.user.id])
29
    entrants = [ first_place, second_place, entrant ]
30
    for i in range(3, 20):
31
        users_used = (x.user for x in entrants)
0 ignored issues
show
introduced by
The variable x does not seem to be defined in case the for loop on line 30 is not entered. Are you sure this can never be the case?
Loading history...
32
        entrants.append(get_test_entrant(users_used=users_used))
33
    race = get_test_race(entrants=entrants)
34
    qualifier = get_test_qualifier()
35
    qualifier.update_qualifier_text(race, entrant.user.full_name)
36
    assert qualifier.entrant_score == " "
37
    assert qualifier.par_text == " "
38
39 View Code Duplication
def test_cutoff_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
40
    entrant = get_test_entrant(status_value="in_progress")
41
    first_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1, users_used=[entrant.user.id])
42
    second_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2, users_used=[entrant.user.id, first_place.user.id])
43
    third_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3, users_used=[entrant.user.id, first_place.user.id, second_place.user.id])
44
    entrants = [ first_place, second_place, third_place, entrant ]
45
    for i in range(4, 20):
46
        users_used = (x.user for x in entrants)
0 ignored issues
show
introduced by
The variable x does not seem to be defined in case the for loop on line 45 is not entered. Are you sure this can never be the case?
Loading history...
47
        entrants.append(get_test_entrant(users_used=users_used))
48
    race = get_test_race(entrants=entrants)
49
    qualifier = get_test_qualifier()
50
    qualifier.update_qualifier_text(race, entrant.user.full_name)
51
    assert qualifier.entrant_score == " "
52
    assert qualifier.par_text == "1:35:00.0"
53
54
def test_cutoff_and_entrant_finished():
55
    entrant = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=5), finish_time=timedelta(hours=1, minutes=45, microseconds=1))
56
    first_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1, users_used=[entrant.user.id])
57
    second_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2, users_used=[entrant.user.id, first_place.user.id])
58
    third_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3, users_used=[entrant.user.id, first_place.user.id, second_place.user.id])
59
    entrants = [ first_place, second_place, third_place, entrant ]
60
    for i in range(4, 20):
61
        users_used = (x.user for x in entrants)
0 ignored issues
show
introduced by
The variable x does not seem to be defined in case the for loop on line 60 is not entered. Are you sure this can never be the case?
Loading history...
62
        entrants.append(get_test_entrant(users_used=users_used))
63
    race = get_test_race(entrants=entrants)
64
    qualifier = get_test_qualifier()
65
    qualifier.update_qualifier_text(race, entrant.user.full_name)
66
    # par is 95 minutes, entrant's time is 105 minutes. 2-(105/95) ~= 0.89
67
    assert qualifier.entrant_score == "0.89"
68
    assert qualifier.par_text == "1:35:00.0"
69
70 View Code Duplication
def test_cutoff_and_entrant_finished_in_top():
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="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2)
72
    first_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1, users_used=[entrant.user.id])
73
    third_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3, users_used=[entrant.user.id, first_place.user.id])
74
    entrants = [ first_place, entrant, third_place ]
75
    for i in range(4, 20):
76
        users_used = (x.user for x in entrants)
0 ignored issues
show
introduced by
The variable x does not seem to be defined in case the for loop on line 75 is not entered. Are you sure this can never be the case?
Loading history...
77
        entrants.append(get_test_entrant(users_used=users_used))
78
    race = get_test_race(entrants=entrants)
79
    qualifier = get_test_qualifier()
80
    qualifier.update_qualifier_text(race, entrant.user.full_name)
81
    # par is 95 minutes, entrant's time is 95 minutes. 2-(95/95) = 1.00
82
    assert qualifier.entrant_score == "1.00"
83
    assert qualifier.par_text == "1:35:00.0"
84
85 View Code Duplication
def test_cutoff_and_entrant_finished_in_first():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
86
    entrant = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=2)
87
    second_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=1, users_used=[entrant.user.id])
88
    third_place = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=10), finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3, users_used=[entrant.user.id, second_place.user.id])
89
    entrants = [ entrant, second_place, third_place ]
90
    for i in range(4, 20):
91
        users_used = (x.user for x in entrants)
0 ignored issues
show
introduced by
The variable x does not seem to be defined in case the for loop on line 90 is not entered. Are you sure this can never be the case?
Loading history...
92
        entrants.append(get_test_entrant(users_used=users_used))
93
    race = get_test_race(entrants=entrants)
94
    qualifier = get_test_qualifier()
95
    qualifier.update_qualifier_text(race, entrant.user.full_name)
96
    # par is 95 minutes, entrant's time is 90 minutes. 2-(90/95) ""= 1.05
97
    assert qualifier.entrant_score == "1.05"
98
    assert qualifier.par_text == "1:35:00.0"