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

test_qualifier.test_some_finished()   A

Complexity

Conditions 2

Size

Total Lines 17
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 17
rs 9.55
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
def test_no_one_finished():
9
    entrant = get_test_entrant(status_value="in_progress")
10
    race = get_test_race(entrants_count=20, entrant=entrant)
11
    qualifier = Qualifier()
12
    qualifier.enabled = True
13
    qualifier.qualifier_cutoff = 3
14
    qualifier.par_source = "par source"
15
    qualifier.score_source = "score source"
16
    qualifier.update_qualifier_text(race, entrant.user.full_name)
17
    assert qualifier.entrant_score == " "
18
    assert qualifier.par_text == " "
19
20
def test_some_finished():
21
    entrant = get_test_entrant(status_value="in_progress")
22
    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])
23
    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])
24
    entrants = [ first_place, second_place, entrant ]
25
    for i in range(3, 20):
26
        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 25 is not entered. Are you sure this can never be the case?
Loading history...
27
        entrants.append(get_test_entrant(users_used=users_used))
28
    race = get_test_race(entrants=entrants)
29
    qualifier = Qualifier()
30
    qualifier.enabled = True
31
    qualifier.qualifier_cutoff = 3
32
    qualifier.par_source = "par source"
33
    qualifier.score_source = "score source"
34
    qualifier.update_qualifier_text(race, entrant.user.full_name)
35
    assert qualifier.entrant_score == " "
36
    assert qualifier.par_text == " "
37
38
def test_cutoff_finished():
39
    entrant = get_test_entrant(status_value="in_progress")
40
    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])
41
    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])
42
    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])
43
    entrants = [ first_place, second_place, third_place, entrant ]
44
    for i in range(4, 20):
45
        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 44 is not entered. Are you sure this can never be the case?
Loading history...
46
        entrants.append(get_test_entrant(users_used=users_used))
47
    race = get_test_race(entrants=entrants)
48
    qualifier = Qualifier()
49
    qualifier.enabled = True
50
    qualifier.qualifier_cutoff = 3
51
    qualifier.par_source = "par source"
52
    qualifier.score_source = "score source"
53
    qualifier.update_qualifier_text(race, entrant.user.full_name)
54
    assert qualifier.entrant_score == " "
55
    assert qualifier.par_text == "1:35:00.0"
56
57
def test_cutoff_and_entrant_finished():
58
    entrant = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=5), finish_time=timedelta(hours=1, minutes=45, microseconds=1))
59
    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])
60
    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])
61
    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])
62
    entrants = [ first_place, second_place, third_place, entrant ]
63
    for i in range(4, 20):
64
        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 63 is not entered. Are you sure this can never be the case?
Loading history...
65
        entrants.append(get_test_entrant(users_used=users_used))
66
    race = get_test_race(entrants=entrants)
67
    qualifier = Qualifier()
68
    qualifier.enabled = True
69
    qualifier.qualifier_cutoff = 3
70
    qualifier.par_source = "par source"
71
    qualifier.score_source = "score source"
72
    qualifier.update_qualifier_text(race, entrant.user.full_name)
73
    # par is 95 minutes, entrant's time is 105 minutes. 2-(105/95) ~= 0.89
74
    assert qualifier.entrant_score == "0.89"
75
    assert qualifier.par_text == "1:35:00.0"
76
77 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...
78
    entrant = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=15), finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2)
79
    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])
80
    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])
81
    entrants = [ first_place, entrant, third_place ]
82
    for i in range(4, 20):
83
        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 82 is not entered. Are you sure this can never be the case?
Loading history...
84
        entrants.append(get_test_entrant(users_used=users_used))
85
    race = get_test_race(entrants=entrants)
86
    qualifier = Qualifier()
87
    qualifier.enabled = True
88
    qualifier.qualifier_cutoff = 3
89
    qualifier.par_source = "par source"
90
    qualifier.score_source = "score source"
91
    qualifier.update_qualifier_text(race, entrant.user.full_name)
92
    # par is 95 minutes, entrant's time is 95 minutes. 2-(95/95) = 1.00
93
    assert qualifier.entrant_score == "1.00"
94
    assert qualifier.par_text == "1:35:00.0"
95
96 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...
97
    entrant = get_test_entrant(status_value="finished", finished_at=time_ago(minutes=20), finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=2)
98
    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])
99
    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])
100
    entrants = [ entrant, second_place, third_place ]
101
    for i in range(4, 20):
102
        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 101 is not entered. Are you sure this can never be the case?
Loading history...
103
        entrants.append(get_test_entrant(users_used=users_used))
104
    race = get_test_race(entrants=entrants)
105
    qualifier = Qualifier()
106
    qualifier.enabled = True
107
    qualifier.qualifier_cutoff = 3
108
    qualifier.par_source = "par source"
109
    qualifier.score_source = "score source"
110
    qualifier.update_qualifier_text(race, entrant.user.full_name)
111
    # par is 95 minutes, entrant's time is 90 minutes. 2-(90/95) ""= 1.05
112
    assert qualifier.entrant_score == "1.05"
113
    assert qualifier.par_text == "1:35:00.0"