Code Duplication    Length = 15-15 lines in 4 locations

tests/test_coop.py 4 locations

@@ 201-215 (lines=15) @@
198
    assert coop.label_text == f"{partner.user.name} needs to finish before"
199
    assert coop.text == "3:00:00.0"
200
201
def test_opponents_and_partner_finished_race_over():
202
    entrant = get_test_entrant(status_value="in_progress")
203
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=3, microseconds=5), users_used=[entrant.user.id])
204
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
205
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
206
207
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=3, minutes=1))
208
    coop = Coop()
209
    coop.enabled = True
210
    coop.partner = partner.user.full_name
211
    coop.opponent1 = opponent1.user.full_name
212
    coop.opponent2 = opponent2.user.full_name
213
    coop.update_coop_text(race, entrant.user.full_name)
214
    assert coop.label_text == f"{opponent1.user.name} and {opponent2.user.name} won"
215
    assert coop.text == "1:30:00.0"
216
217
def test_everyone_finished_we_won():
218
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
@@ 185-199 (lines=15) @@
182
def time_ago(**kwargs):
183
    return datetime.now(timezone.utc)-timedelta(**kwargs)
184
185
def test_opponents_and_entrant_finished_race_ongoing():
186
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
187
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
188
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=2), users_used=[entrant.user.id, partner.user.id])
189
    opponent2 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
190
191
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=1))
192
    coop = Coop()
193
    coop.enabled = True
194
    coop.partner = partner.user.full_name
195
    coop.opponent1 = opponent1.user.full_name
196
    coop.opponent2 = opponent2.user.full_name
197
    coop.update_coop_text(race, entrant.user.full_name)
198
    assert coop.label_text == f"{partner.user.name} needs to finish before"
199
    assert coop.text == "3:00:00.0"
200
201
def test_opponents_and_partner_finished_race_over():
202
    entrant = get_test_entrant(status_value="in_progress")
@@ 166-180 (lines=15) @@
163
    assert coop.label_text == opponent2.user.name + " needs to finish before"
164
    assert coop.text == "3:00:00.0"
165
166
def test_entrant_and_partner_and_opponent1_finished_race_over():
167
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
168
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
169
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=3, microseconds=2), users_used=[entrant.user.id, partner.user.id])
170
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
171
172
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=3, minutes=4))
173
    coop = Coop()
174
    coop.enabled = True
175
    coop.partner = partner.user.full_name
176
    coop.opponent1 = opponent1.user.full_name
177
    coop.opponent2 = opponent2.user.full_name
178
    coop.update_coop_text(race, entrant.user.full_name)
179
    assert coop.label_text == f"{entrant.user.name} and {partner.user.name} won"
180
    assert coop.text == "1:30:00.0"
181
182
def time_ago(**kwargs):
183
    return datetime.now(timezone.utc)-timedelta(**kwargs)
@@ 150-164 (lines=15) @@
147
    assert coop.label_text == "Race still in progress"
148
    assert coop.text == " "
149
150
def test_entrant_and_partner_and_opponent1_finished_race_ongoing():
151
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1))
152
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1), users_used=[entrant.user.id])
153
    opponent1 = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id, partner.user.id])
154
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
155
156
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=12))
157
    coop = Coop()
158
    coop.enabled = True
159
    coop.partner = partner.user.full_name
160
    coop.opponent1 = opponent1.user.full_name
161
    coop.opponent2 = opponent2.user.full_name
162
    coop.update_coop_text(race, entrant.user.full_name)
163
    assert coop.label_text == opponent2.user.name + " needs to finish before"
164
    assert coop.text == "3:00:00.0"
165
166
def test_entrant_and_partner_and_opponent1_finished_race_over():
167
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))