Code Duplication    Length = 24-25 lines in 3 locations

tests/test_qualifier.py 3 locations

@@ 159-183 (lines=25) @@
156
    assert qualifier.par_text == "1:35:00.0"
157
158
159
def test_cutoff_and_entrant_finished_waay_ahead(random_users):
160
    entrant = get_test_entrant(
161
        next(random_users), status_value="finished",
162
        finished_at=time_ago(minutes=20),
163
        finish_time=timedelta(hours=1, microseconds=1), place=2
164
    )
165
    second_place = get_test_entrant(
166
        next(random_users), status_value="finished",
167
        finished_at=time_ago(minutes=15),
168
        finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=1
169
    )
170
    third_place = get_test_entrant(
171
        next(random_users), status_value="finished",
172
        finished_at=time_ago(minutes=10),
173
        finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3
174
    )
175
    entrants = get_test_entrants(
176
        random_users, entrant, second_place, third_place)
177
    race = get_test_race(entrants=entrants)
178
    qualifier = get_test_qualifier()
179
    qualifier.update_qualifier_text(race, entrant.user.full_name)
180
    # par is 95 minutes, entrant's time is 60 minutes. 2-(60/85) ~= 1.29
181
    # but max score is 1.05
182
    assert qualifier.entrant_score == "1.05"
183
    assert qualifier.par_text == "1:25:00.0"
184
@@ 133-156 (lines=24) @@
130
    assert qualifier.par_text == "1:35:00.0"
131
132
133
def test_cutoff_and_entrant_finished_in_first(random_users):
134
    entrant = get_test_entrant(
135
        next(random_users), status_value="finished",
136
        finished_at=time_ago(minutes=20),
137
        finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=2
138
    )
139
    second_place = get_test_entrant(
140
        next(random_users), status_value="finished",
141
        finished_at=time_ago(minutes=15),
142
        finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=1
143
    )
144
    third_place = get_test_entrant(
145
        next(random_users), status_value="finished",
146
        finished_at=time_ago(minutes=10),
147
        finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3
148
    )
149
    entrants = get_test_entrants(
150
        random_users, entrant, second_place, third_place)
151
    race = get_test_race(entrants=entrants)
152
    qualifier = get_test_qualifier()
153
    qualifier.update_qualifier_text(race, entrant.user.full_name)
154
    # par is 95 minutes, entrant's time is 90 minutes. 2-(90/95) ~= 1.05
155
    assert qualifier.entrant_score == "1.05"
156
    assert qualifier.par_text == "1:35:00.0"
157
158
159
def test_cutoff_and_entrant_finished_waay_ahead(random_users):
@@ 107-130 (lines=24) @@
104
    assert qualifier.par_text == "1:35:00.0"
105
106
107
def test_cutoff_and_entrant_finished_in_top(random_users):
108
    entrant = get_test_entrant(
109
        next(random_users), status_value="finished",
110
        finished_at=time_ago(minutes=15),
111
        finish_time=timedelta(hours=1, minutes=35, microseconds=1), place=2
112
    )
113
    first_place = get_test_entrant(
114
        next(random_users), status_value="finished",
115
        finished_at=time_ago(minutes=20),
116
        finish_time=timedelta(hours=1, minutes=30, microseconds=1), place=1,
117
    )
118
    third_place = get_test_entrant(
119
        next(random_users), status_value="finished",
120
        finished_at=time_ago(minutes=10),
121
        finish_time=timedelta(hours=1, minutes=40, microseconds=1), place=3,
122
    )
123
    entrants = get_test_entrants(
124
        random_users, first_place, third_place, entrant)
125
    race = get_test_race(entrants=entrants)
126
    qualifier = get_test_qualifier()
127
    qualifier.update_qualifier_text(race, entrant.user.full_name)
128
    # par is 95 minutes, entrant's time is 95 minutes. 2-(95/95) = 1.00
129
    assert qualifier.entrant_score == "1.00"
130
    assert qualifier.par_text == "1:35:00.0"
131
132
133
def test_cutoff_and_entrant_finished_in_first(random_users):