Code Duplication    Length = 27-31 lines in 4 locations

tests/test_coop.py 4 locations

@@ 153-183 (lines=31) @@
150
    assert coop.text == " "
151
152
153
def test_entrant_and_partner_finished(random_users):
154
    entrant = get_test_entrant(
155
        next(random_users),
156
        status_value="finished", finished_at=datetime.now(timezone.utc),
157
        finish_time=timedelta(hours=1, microseconds=1)
158
    )
159
    partner = get_test_entrant(
160
        next(random_users), status_value="finished",
161
        finished_at=datetime.now(timezone.utc),
162
        finish_time=timedelta(hours=2, microseconds=1),
163
    )
164
    opponent1 = get_test_entrant(
165
        next(random_users), status_value="in_progress"
166
    )
167
    opponent2 = get_test_entrant(
168
        next(random_users), status_value="in_progress",
169
    )
170
171
    race = get_test_race(
172
        entrants=[entrant, partner, opponent1, opponent2],
173
        opened_by=next(random_users),
174
        started_at=time_ago(hours=2, minutes=15)
175
    )
176
    coop = Coop()
177
    coop.enabled = True
178
    coop.partner = partner.user.full_name
179
    coop.opponent1 = opponent1.user.full_name
180
    coop.opponent2 = opponent2.user.full_name
181
    coop.update_coop_text(race, entrant.user.full_name)
182
    assert coop.label_text == "We won!"
183
    assert coop.text == "1:30:00.0"
184
185
186
def test_opponents_finished(random_users):
@@ 246-274 (lines=29) @@
243
    assert coop.text == " "
244
245
246
def test_partner_and_opponent1_finished(random_users):
247
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
248
    partner = get_test_entrant(
249
        next(random_users),
250
        status_value="finished", finished_at=datetime.now(timezone.utc),
251
        finish_time=timedelta(hours=2, microseconds=1),
252
    )
253
    opponent1 = get_test_entrant(
254
        next(random_users),
255
        status_value="finished", finished_at=datetime.now(timezone.utc),
256
        finish_time=timedelta(hours=1, microseconds=1),
257
    )
258
    opponent2 = get_test_entrant(
259
        next(random_users), status_value="in_progress",
260
    )
261
262
    race = get_test_race(
263
        entrants=[entrant, partner, opponent1, opponent2],
264
        opened_by=next(random_users),
265
        started_at=time_ago(hours=2, minutes=15)
266
    )
267
    coop = Coop()
268
    coop.enabled = True
269
    coop.partner = partner.user.full_name
270
    coop.opponent1 = opponent1.user.full_name
271
    coop.opponent2 = opponent2.user.full_name
272
    coop.update_coop_text(race, entrant.user.full_name)
273
    assert coop.label_text == "Race still in progress"
274
    assert coop.text == " "
275
276
277
def test_entrant_and_partner_and_opponent1_finished_race_ongoing(random_users):
@@ 215-243 (lines=29) @@
212
    assert coop.text == "1:30:00.0"
213
214
215
def test_entrant_and_opponent1_finished(random_users):
216
    entrant = get_test_entrant(
217
        next(random_users),
218
        status_value="finished", finished_at=datetime.now(timezone.utc),
219
        finish_time=timedelta(hours=2, microseconds=1)
220
    )
221
    partner = get_test_entrant(next(random_users), status_value="in_progress")
222
    opponent1 = get_test_entrant(
223
        next(random_users),
224
        status_value="finished", finished_at=datetime.now(timezone.utc),
225
        finish_time=timedelta(hours=1, microseconds=1)
226
    )
227
    opponent2 = get_test_entrant(
228
        next(random_users), status_value="in_progress",
229
    )
230
231
    race = get_test_race(
232
        entrants=[entrant, partner, opponent1, opponent2],
233
        opened_by=next(random_users),
234
        started_at=time_ago(hours=2, minutes=15)
235
    )
236
    coop = Coop()
237
    coop.enabled = True
238
    coop.partner = partner.user.full_name
239
    coop.opponent1 = opponent1.user.full_name
240
    coop.opponent2 = opponent2.user.full_name
241
    coop.update_coop_text(race, entrant.user.full_name)
242
    assert coop.label_text == "Race still in progress"
243
    assert coop.text == " "
244
245
246
def test_partner_and_opponent1_finished(random_users):
@@ 186-212 (lines=27) @@
183
    assert coop.text == "1:30:00.0"
184
185
186
def test_opponents_finished(random_users):
187
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
188
    partner = get_test_entrant(next(random_users), status_value="in_progress")
189
    opponent1 = get_test_entrant(
190
        next(random_users),
191
        status_value="finished", finished_at=datetime.now(timezone.utc),
192
        finish_time=timedelta(hours=1, microseconds=1),
193
    )
194
    opponent2 = get_test_entrant(
195
        next(random_users),
196
        status_value="finished", finished_at=datetime.now(timezone.utc),
197
        finish_time=timedelta(hours=2, microseconds=1)
198
    )
199
200
    race = get_test_race(
201
        entrants=[entrant, partner, opponent1, opponent2],
202
        opened_by=next(random_users),
203
        started_at=time_ago(hours=2, minutes=15)
204
    )
205
    coop = Coop()
206
    coop.enabled = True
207
    coop.partner = partner.user.full_name
208
    coop.opponent1 = opponent1.user.full_name
209
    coop.opponent2 = opponent2.user.full_name
210
    coop.update_coop_text(race, entrant.user.full_name)
211
    assert coop.label_text == "They won. :("
212
    assert coop.text == "1:30:00.0"
213
214
215
def test_entrant_and_opponent1_finished(random_users):