Code Duplication    Length = 29-33 lines in 4 locations

tests/test_coop.py 4 locations

@@ 163-195 (lines=33) @@
160
    assert coop.opponent_time_color == coop.still_racing_color
161
162
163
def test_entrant_and_partner_finished(random_users):
164
    entrant = get_test_entrant(
165
        next(random_users),
166
        status_value="finished", finished_at=datetime.now(timezone.utc),
167
        finish_time=timedelta(hours=1, microseconds=1)
168
    )
169
    partner = get_test_entrant(
170
        next(random_users), status_value="finished",
171
        finished_at=datetime.now(timezone.utc),
172
        finish_time=timedelta(hours=2, microseconds=1),
173
    )
174
    opponent1 = get_test_entrant(
175
        next(random_users), status_value="in_progress"
176
    )
177
    opponent2 = get_test_entrant(
178
        next(random_users), status_value="in_progress",
179
    )
180
181
    race = get_test_race(
182
        entrants=[entrant, partner, opponent1, opponent2],
183
        opened_by=next(random_users),
184
        started_at=time_ago(hours=2, minutes=15)
185
    )
186
    coop = Coop()
187
    coop.enabled = True
188
    coop.partner = partner.user.full_name
189
    coop.opponent1 = opponent1.user.full_name
190
    coop.opponent2 = opponent2.user.full_name
191
    coop.update_coop_text(race, entrant.user.full_name)
192
    assert coop.opponent_time_text == "2:15:00.0"
193
    assert coop.our_time_text == "1:30:00.0"
194
    assert coop.our_time_color == coop.winner_color
195
    assert coop.opponent_time_color == coop.loser_color
196
197
198
def test_opponents_finished(random_users):
@@ 262-292 (lines=31) @@
259
    assert coop.opponent_time_color == coop.still_racing_color
260
261
262
def test_partner_and_opponent1_finished(random_users):
263
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
264
    partner = get_test_entrant(
265
        next(random_users),
266
        status_value="finished", finished_at=datetime.now(timezone.utc),
267
        finish_time=timedelta(hours=2, microseconds=1),
268
    )
269
    opponent1 = get_test_entrant(
270
        next(random_users),
271
        status_value="finished", finished_at=datetime.now(timezone.utc),
272
        finish_time=timedelta(hours=1, microseconds=1),
273
    )
274
    opponent2 = get_test_entrant(
275
        next(random_users), status_value="in_progress",
276
    )
277
278
    race = get_test_race(
279
        entrants=[entrant, partner, opponent1, opponent2],
280
        opened_by=next(random_users),
281
        started_at=time_ago(hours=2, minutes=15)
282
    )
283
    coop = Coop()
284
    coop.enabled = True
285
    coop.partner = partner.user.full_name
286
    coop.opponent1 = opponent1.user.full_name
287
    coop.opponent2 = opponent2.user.full_name
288
    coop.update_coop_text(race, entrant.user.full_name)
289
    assert coop.opponent_time_text == " "
290
    assert coop.our_time_text == " "
291
    assert coop.our_time_color == coop.still_racing_color
292
    assert coop.opponent_time_color == coop.still_racing_color
293
294
295
def test_entrant_and_partner_and_opponent1_finished_race_ongoing(random_users):
@@ 229-259 (lines=31) @@
226
    assert coop.opponent_time_color == coop.winner_color
227
228
229
def test_entrant_and_opponent1_finished(random_users):
230
    entrant = get_test_entrant(
231
        next(random_users),
232
        status_value="finished", finished_at=datetime.now(timezone.utc),
233
        finish_time=timedelta(hours=2, microseconds=1)
234
    )
235
    partner = get_test_entrant(next(random_users), status_value="in_progress")
236
    opponent1 = get_test_entrant(
237
        next(random_users),
238
        status_value="finished", finished_at=datetime.now(timezone.utc),
239
        finish_time=timedelta(hours=1, microseconds=1)
240
    )
241
    opponent2 = get_test_entrant(
242
        next(random_users), status_value="in_progress",
243
    )
244
245
    race = get_test_race(
246
        entrants=[entrant, partner, opponent1, opponent2],
247
        opened_by=next(random_users),
248
        started_at=time_ago(hours=2, minutes=15)
249
    )
250
    coop = Coop()
251
    coop.enabled = True
252
    coop.partner = partner.user.full_name
253
    coop.opponent1 = opponent1.user.full_name
254
    coop.opponent2 = opponent2.user.full_name
255
    coop.update_coop_text(race, entrant.user.full_name)
256
    assert coop.opponent_time_text == " "
257
    assert coop.our_time_text == " "
258
    assert coop.our_time_color == coop.still_racing_color
259
    assert coop.opponent_time_color == coop.still_racing_color
260
261
262
def test_partner_and_opponent1_finished(random_users):
@@ 198-226 (lines=29) @@
195
    assert coop.opponent_time_color == coop.loser_color
196
197
198
def test_opponents_finished(random_users):
199
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
200
    partner = get_test_entrant(next(random_users), status_value="in_progress")
201
    opponent1 = get_test_entrant(
202
        next(random_users),
203
        status_value="finished", finished_at=datetime.now(timezone.utc),
204
        finish_time=timedelta(hours=1, microseconds=1),
205
    )
206
    opponent2 = get_test_entrant(
207
        next(random_users),
208
        status_value="finished", finished_at=datetime.now(timezone.utc),
209
        finish_time=timedelta(hours=2, microseconds=1)
210
    )
211
212
    race = get_test_race(
213
        entrants=[entrant, partner, opponent1, opponent2],
214
        opened_by=next(random_users),
215
        started_at=time_ago(hours=2, minutes=15)
216
    )
217
    coop = Coop()
218
    coop.enabled = True
219
    coop.partner = partner.user.full_name
220
    coop.opponent1 = opponent1.user.full_name
221
    coop.opponent2 = opponent2.user.full_name
222
    coop.update_coop_text(race, entrant.user.full_name)
223
    assert coop.opponent_time_text == "1:30:00.0"
224
    assert coop.our_time_text == "2:15:00.0"
225
    assert coop.our_time_color == coop.loser_color
226
    assert coop.opponent_time_color == coop.winner_color
227
228
229
def test_entrant_and_opponent1_finished(random_users):