Passed
Push — master ( 8b3758...32ee86 )
by manny
01:31
created

test_coop.test_entrant_and_opponent1_finished()   A

Complexity

Conditions 1

Size

Total Lines 15
Code Lines 14

Duplication

Lines 15
Ratio 100 %

Importance

Changes 0
Metric Value
eloc 14
dl 15
loc 15
rs 9.7
c 0
b 0
f 0
cc 1
nop 0
1
from datetime import datetime, timedelta, timezone
2
from gadgets.coop import Coop
3
from users_for_testing import get_test_entrant
4
from races_for_testing import get_test_race
5
6
def test_coop_no_one_finished():
7
    entrant = get_test_entrant(status_value="in_progress")
8
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
9
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
10
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
11
12
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1))
13
    coop = Coop()
14
    coop.enabled = True
15
    coop.partner = partner.user.full_name
16
    coop.opponent1 = opponent1.user.full_name
17
    coop.opponent2 = opponent2.user.full_name
18
    coop.update_coop_text(race, entrant.user.full_name)
19
    assert coop.label_text == "Race still in progress"
20
    assert coop.text == " "
21
22 View Code Duplication
def test_only_entrant_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
23
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
24
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
25
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
26
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
27
28
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
29
    coop = Coop()
30
    coop.enabled = True
31
    coop.partner = partner.user.full_name
32
    coop.opponent1 = opponent1.user.full_name
33
    coop.opponent2 = opponent2.user.full_name
34
    coop.update_coop_text(race, entrant.user.full_name)
35
    assert coop.label_text == "Race still in progress"
36
    assert coop.text == " "
37
38 View Code Duplication
def test_only_partner_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
39
    entrant = get_test_entrant(status_value="in_progress")
40
    partner = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1), users_used=[entrant.user.id])
41
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
42
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
43
44
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
45
    coop = Coop()
46
    coop.enabled = True
47
    coop.partner = partner.user.full_name
48
    coop.opponent1 = opponent1.user.full_name
49
    coop.opponent2 = opponent2.user.full_name
50
    coop.update_coop_text(race, entrant.user.full_name)
51
    assert coop.label_text == "Race still in progress"
52
    assert coop.text == " "
53
54 View Code Duplication
def test_only_opponent1_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
55
    entrant = get_test_entrant(status_value="in_progress")
56
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
57
    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])
58
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
59
60
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
61
    coop = Coop()
62
    coop.enabled = True
63
    coop.partner = partner.user.full_name
64
    coop.opponent1 = opponent1.user.full_name
65
    coop.opponent2 = opponent2.user.full_name
66
    coop.update_coop_text(race, entrant.user.full_name)
67
    assert coop.label_text == "Race still in progress"
68
    assert coop.text == " "
69
70 View Code Duplication
def test_only_opponent2_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
71
    entrant = get_test_entrant(status_value="in_progress")
72
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
73
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
74
    opponent2 = 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, opponent1.user.id])
75
76
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=1, minutes=15))
77
    coop = Coop()
78
    coop.enabled = True
79
    coop.partner = partner.user.full_name
80
    coop.opponent1 = opponent1.user.full_name
81
    coop.opponent2 = opponent2.user.full_name
82
    coop.update_coop_text(race, entrant.user.full_name)
83
    assert coop.label_text == "Race still in progress"
84
    assert coop.text == " "
85
86 View Code Duplication
def test_entrant_and_partner_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
87
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
88
    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])
89
    opponent1 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id])
90
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
91
92
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
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.label_text == "We won!"
100
    assert coop.text == "1:30:00.0"
101
102 View Code Duplication
def test_opponents_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
103
    entrant = get_test_entrant(status_value="in_progress")
104
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
105
    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])
106
    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])
107
108
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
109
    coop = Coop()
110
    coop.enabled = True
111
    coop.partner = partner.user.full_name
112
    coop.opponent1 = opponent1.user.full_name
113
    coop.opponent2 = opponent2.user.full_name
114
    coop.update_coop_text(race, entrant.user.full_name)
115
    assert coop.label_text == "They won. :("
116
    assert coop.text == "1:30:00.0"
117
118 View Code Duplication
def test_entrant_and_opponent1_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
119
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1))
120
    partner = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id])
121
    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])
122
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
123
124
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
125
    coop = Coop()
126
    coop.enabled = True
127
    coop.partner = partner.user.full_name
128
    coop.opponent1 = opponent1.user.full_name
129
    coop.opponent2 = opponent2.user.full_name
130
    coop.update_coop_text(race, entrant.user.full_name)
131
    assert coop.label_text == "Race still in progress"
132
    assert coop.text == " "
133
134 View Code Duplication
def test_partner_and_opponent1_finished():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
135
    entrant = get_test_entrant(status_value="in_progress")
136
    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])
137
    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])
138
    opponent2 = get_test_entrant(status_value="in_progress", users_used=[entrant.user.id, partner.user.id, opponent1.user.id])
139
140
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=15))
141
    coop = Coop()
142
    coop.enabled = True
143
    coop.partner = partner.user.full_name
144
    coop.opponent1 = opponent1.user.full_name
145
    coop.opponent2 = opponent2.user.full_name
146
    coop.update_coop_text(race, entrant.user.full_name)
147
    assert coop.label_text == "Race still in progress"
148
    assert coop.text == " "
149
150 View Code Duplication
def test_entrant_and_partner_and_opponent1_finished_race_ongoing():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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 View Code Duplication
def test_entrant_and_partner_and_opponent1_finished_race_over():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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)
184
185 View Code Duplication
def test_opponents_and_entrant_finished_race_ongoing():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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 View Code Duplication
def test_opponents_and_partner_finished_race_over():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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 View Code Duplication
def test_everyone_finished_we_won():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
218
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=1, microseconds=1))
219
    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])
220
    opponent1 = 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])
221
    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])
222
223
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=1))
224
    coop = Coop()
225
    coop.enabled = True
226
    coop.partner = partner.user.full_name
227
    coop.opponent1 = opponent1.user.full_name
228
    coop.opponent2 = opponent2.user.full_name
229
    coop.update_coop_text(race, entrant.user.full_name)
230
    assert coop.label_text == f"We won!!! Average time:"
231
    assert coop.text == "1:30:00.0"
232
233 View Code Duplication
def test_everyone_finished_opponents_won():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
234
    entrant = get_test_entrant(status_value="finished", finished_at=datetime.now(timezone.utc), finish_time=timedelta(hours=2, microseconds=1))
235
    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])
236
    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])
237
    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])
238
239
    race = get_test_race(entrants=[entrant, partner, opponent1, opponent2], started_at=time_ago(hours=2, minutes=1))
240
    coop = Coop()
241
    coop.enabled = True
242
    coop.partner = partner.user.full_name
243
    coop.opponent1 = opponent1.user.full_name
244
    coop.opponent2 = opponent2.user.full_name
245
    coop.update_coop_text(race, entrant.user.full_name)
246
    assert coop.label_text == f"Opponents won, average time:"
247
    assert coop.text == "1:30:00.0"