Code Duplication    Length = 27-29 lines in 4 locations

tests/test_coop.py 4 locations

@@ 74-102 (lines=29) @@
71
    assert coop.opponent_time_color == coop.still_racing_color
72
73
74
def test_only_partner_finished(random_users):
75
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
76
    partner = get_test_entrant(
77
        next(random_users),
78
        status_value="finished", finished_at=datetime.now(timezone.utc),
79
        finish_time=timedelta(hours=1, microseconds=1)
80
    )
81
    opponent1 = get_test_entrant(
82
        next(random_users), status_value="in_progress",
83
    )
84
    opponent2 = get_test_entrant(
85
        next(random_users), status_value="in_progress"
86
    )
87
88
    race = get_test_race(
89
        entrants=[entrant, partner, opponent1, opponent2],
90
        opened_by=next(random_users),
91
        started_at=time_ago(hours=1, minutes=15)
92
    )
93
    coop = Coop()
94
    coop.enabled = True
95
    coop.partner = partner.user.full_name
96
    coop.opponent1 = opponent1.user.full_name
97
    coop.opponent2 = opponent2.user.full_name
98
    coop.update_coop_text(race, entrant.user.full_name)
99
    assert coop.opponent_time_text == " "
100
    assert coop.our_time_text == " "
101
    assert coop.our_time_color == coop.still_racing_color
102
    assert coop.opponent_time_color == coop.still_racing_color
103
104
105
def test_only_opponent1_finished(random_users):
@@ 134-160 (lines=27) @@
131
    assert coop.opponent_time_color == coop.still_racing_color
132
133
134
def test_only_opponent2_finished(random_users):
135
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
136
    partner = get_test_entrant(next(random_users), status_value="in_progress")
137
    opponent1 = get_test_entrant(
138
        next(random_users), status_value="in_progress"
139
    )
140
    opponent2 = get_test_entrant(
141
        next(random_users), status_value="finished",
142
        finished_at=datetime.now(timezone.utc),
143
        finish_time=timedelta(hours=1, microseconds=1),
144
    )
145
146
    race = get_test_race(
147
        entrants=[entrant, partner, opponent1, opponent2],
148
        opened_by=next(random_users),
149
        started_at=time_ago(hours=1, minutes=15)
150
    )
151
    coop = Coop()
152
    coop.enabled = True
153
    coop.partner = partner.user.full_name
154
    coop.opponent1 = opponent1.user.full_name
155
    coop.opponent2 = opponent2.user.full_name
156
    coop.update_coop_text(race, entrant.user.full_name)
157
    assert coop.opponent_time_text == " "
158
    assert coop.our_time_text == " "
159
    assert coop.our_time_color == coop.still_racing_color
160
    assert coop.opponent_time_color == coop.still_racing_color
161
162
163
def test_entrant_and_partner_finished(random_users):
@@ 105-131 (lines=27) @@
102
    assert coop.opponent_time_color == coop.still_racing_color
103
104
105
def test_only_opponent1_finished(random_users):
106
    entrant = get_test_entrant(next(random_users), status_value="in_progress")
107
    partner = get_test_entrant(next(random_users), status_value="in_progress")
108
    opponent1 = get_test_entrant(
109
        next(random_users),
110
        status_value="finished", finished_at=datetime.now(timezone.utc),
111
        finish_time=timedelta(hours=1, microseconds=1)
112
    )
113
    opponent2 = get_test_entrant(
114
        next(random_users), status_value="in_progress"
115
    )
116
117
    race = get_test_race(
118
        entrants=[entrant, partner, opponent1, opponent2],
119
        opened_by=next(random_users),
120
        started_at=time_ago(hours=1, minutes=15)
121
    )
122
    coop = Coop()
123
    coop.enabled = True
124
    coop.partner = partner.user.full_name
125
    coop.opponent1 = opponent1.user.full_name
126
    coop.opponent2 = opponent2.user.full_name
127
    coop.update_coop_text(race, entrant.user.full_name)
128
    assert coop.opponent_time_text == " "
129
    assert coop.our_time_text == " "
130
    assert coop.our_time_color == coop.still_racing_color
131
    assert coop.opponent_time_color == coop.still_racing_color
132
133
134
def test_only_opponent2_finished(random_users):
@@ 45-71 (lines=27) @@
42
    assert coop.opponent_time_color == coop.still_racing_color
43
44
45
def test_only_entrant_finished(random_users):
46
    entrant = get_test_entrant(
47
        next(random_users),
48
        status_value="finished", finished_at=datetime.now(timezone.utc),
49
        finish_time=timedelta(hours=1, microseconds=1)
50
    )
51
    partner = get_test_entrant(next(random_users), status_value="in_progress")
52
    opponent1 = get_test_entrant(
53
        next(random_users), status_value="in_progress")
54
    opponent2 = get_test_entrant(
55
        next(random_users), status_value="in_progress")
56
57
    race = get_test_race(
58
        entrants=[entrant, partner, opponent1, opponent2],
59
        opened_by=next(random_users),
60
        started_at=time_ago(hours=1, minutes=15)
61
    )
62
    coop = Coop()
63
    coop.enabled = True
64
    coop.partner = partner.user.full_name
65
    coop.opponent1 = opponent1.user.full_name
66
    coop.opponent2 = opponent2.user.full_name
67
    coop.update_coop_text(race, entrant.user.full_name)
68
    assert coop.opponent_time_text == " "
69
    assert coop.our_time_text == " "
70
    assert coop.our_time_color == coop.still_racing_color
71
    assert coop.opponent_time_color == coop.still_racing_color
72
73
74
def test_only_partner_finished(random_users):