Skip to content

Commit 59c288d

Browse files
committed
Update tests
1 parent f59fa4a commit 59c288d

File tree

3 files changed

+90
-40
lines changed

3 files changed

+90
-40
lines changed

lego/apps/users/managers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,9 @@ class UserPenaltyManager(PersistentModelManager):
5050
def valid(self):
5151
from lego.apps.users.models import Penalty
5252

53-
offset = Penalty.penalty_offset(timezone.now(), False)
54-
return super().filter(created_at__gt=timezone.now() - offset)
53+
valid_penalties = [
54+
penalty.pk
55+
for penalty in Penalty.objects.all()
56+
if penalty.exact_expiration > timezone.now()
57+
]
58+
return super().filter(pk__in=valid_penalties)

lego/apps/users/tests/test_models.py

Lines changed: 75 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -241,71 +241,96 @@ class PenaltyTestCase(BaseTestCase):
241241

242242
def setUp(self):
243243
self.test_user = User.objects.get(pk=1)
244-
self.source = Event.objects.all().first()
245244

246245
def test_create_penalty(self):
246+
source = Event.objects.all().first()
247247
penalty = Penalty.objects.create(
248-
user=self.test_user, reason="test", weight=1, source_event=self.source
248+
user=self.test_user, reason="test", weight=1, source_event=source
249249
)
250250

251251
self.assertEqual(self.test_user.number_of_penalties(), 1)
252252
self.assertEqual(self.test_user, penalty.user)
253253
self.assertEqual("test", penalty.reason)
254254
self.assertEqual(1, penalty.weight)
255-
self.assertEqual(self.source, penalty.source_event)
256-
self.assertEqual(self.source.id, penalty.source_event.id)
255+
self.assertEqual(source, penalty.source_event)
256+
self.assertEqual(source.id, penalty.source_event.id)
257257

258258
def test_count_weights(self):
259+
source = Event.objects.all().first()
259260
weights = [1, 2]
260261
for weight in weights:
261262
Penalty.objects.create(
262263
user=self.test_user,
263264
reason="test",
264265
weight=weight,
265-
source_event=self.source,
266+
source_event=source,
266267
)
267268

268269
self.assertEqual(self.test_user.number_of_penalties(), sum(weights))
269270

270271
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 10, 1))
271272
def test_only_count_active_penalties(self, mock_now):
273+
event1 = Event.objects.create(
274+
title="A simple event",
275+
event_type=0,
276+
start_time=mock_now() - timedelta(days=20),
277+
end_time=mock_now() - timedelta(days=20),
278+
)
279+
280+
event2 = Event.objects.create(
281+
title="A simple event",
282+
event_type=0,
283+
start_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
284+
end_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
285+
)
286+
272287
Penalty.objects.create(
273-
created_at=mock_now() - timedelta(days=20),
274288
user=self.test_user,
275289
reason="test",
276290
weight=1,
277-
source_event=self.source,
291+
source_event=event1,
278292
)
279293
Penalty.objects.create(
280-
created_at=mock_now() - timedelta(days=19, hours=23, minutes=59),
281294
user=self.test_user,
282295
reason="test",
283296
weight=1,
284-
source_event=self.source,
297+
source_event=event2,
285298
)
286299
self.assertEqual(self.test_user.number_of_penalties(), 1)
287300

288301
@override_settings(PENALTY_IGNORE_WINTER=((12, 10), (1, 10)))
289302
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 12, 10))
290303
def test_frozen_penalties_count_as_active_winter(self, mock_now):
291-
# This penalty is created slightly less than 20 days from the freeze-point.
292-
# It should be counted as active.
304+
# This event is created slightly less than 20 days from the freeze-point.
305+
# The penalty should be counted as active.
306+
event1 = Event.objects.create(
307+
title="A simple event",
308+
event_type=0,
309+
start_time=mock_now().replace(day=1),
310+
end_time=mock_now().replace(day=1),
311+
)
312+
293313
Penalty.objects.create(
294314
created_at=mock_now() - timedelta(days=20, hours=23, minutes=59),
295315
user=self.test_user,
296316
reason="active",
297317
weight=1,
298-
source_event=self.source,
318+
source_event=event1,
299319
)
300320

301-
# This penalty is created exactly 20 days from the freeze-point.
302-
# It should be counted as inactive.
321+
# This event is created exactly 20 days from the freeze-point.
322+
# The penalty should be counted as inactive.
323+
event2 = Event.objects.create(
324+
title="A simple event",
325+
event_type=0,
326+
start_time=mock_now() - timedelta(days=21),
327+
end_time=mock_now() - timedelta(days=21),
328+
)
303329
Penalty.objects.create(
304-
created_at=mock_now() - timedelta(days=21),
305330
user=self.test_user,
306331
reason="inactive",
307332
weight=1,
308-
source_event=self.source,
333+
source_event=event2,
309334
)
310335

311336
self.assertEqual(self.test_user.number_of_penalties(), 1)
@@ -314,24 +339,35 @@ def test_frozen_penalties_count_as_active_winter(self, mock_now):
314339
@override_settings(PENALTY_IGNORE_SUMMER=((6, 12), (8, 15)))
315340
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 6, 12))
316341
def test_frozen_penalties_count_as_active_summer(self, mock_now):
317-
# This penalty is created slightly less than 20 days from the freeze-point.
318-
# It should be counted as active.
342+
# This event is created slightly less than 20 days from the freeze-point.
343+
# The penalty should be counted as active.
344+
event1 = Event.objects.create(
345+
title="A simple event",
346+
event_type=0,
347+
start_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
348+
end_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
349+
)
350+
319351
Penalty.objects.create(
320-
created_at=mock_now() - timedelta(days=20, hours=23, minutes=59),
321352
user=self.test_user,
322353
reason="active",
323354
weight=1,
324-
source_event=self.source,
355+
source_event=event1,
325356
)
326357

327-
# This penalty is created exactly 20 days from the freeze-point.
328-
# It should be counted as inactive.
358+
# This event is created exactly 20 days from the freeze-point.
359+
# The penalty should be counted as inactive.
360+
event2 = Event.objects.create(
361+
title="Another simple event",
362+
event_type=0,
363+
start_time=mock_now() - timedelta(days=21),
364+
end_time=mock_now() - timedelta(days=21),
365+
)
329366
Penalty.objects.create(
330-
created_at=mock_now() - timedelta(days=21),
331367
user=self.test_user,
332368
reason="inactive",
333369
weight=1,
334-
source_event=self.source,
370+
source_event=event2,
335371
)
336372

337373
self.assertEqual(self.test_user.number_of_penalties(), 1)
@@ -342,25 +378,36 @@ def test_frozen_penalties_count_as_active_summer(self, mock_now):
342378
def test_penalty_offset_is_calculated_correctly(self, mock_now):
343379
# This penalty is set to expire the day before the penalty freeze
344380
# It should not be active
381+
event1 = Event.objects.create(
382+
title="A simple event",
383+
event_type=0,
384+
start_time=mock_now().replace(day=1),
385+
end_time=mock_now().replace(day=1),
386+
)
387+
345388
inactive = Penalty.objects.create(
346-
created_at=mock_now().replace(day=1),
347389
user=self.test_user,
348390
reason="inactive",
349391
weight=1,
350-
source_event=self.source,
392+
source_event=event1,
351393
)
352394
self.assertEqual(self.test_user.number_of_penalties(), 0)
353395
self.assertEqual(
354396
(inactive.exact_expiration.month, inactive.exact_expiration.day), (12, 21)
355397
)
356398

357399
# This penalty is set to expire the same day as the freeze
400+
event2 = Event.objects.create(
401+
title="A simple event",
402+
event_type=0,
403+
start_time=mock_now().replace(day=2),
404+
end_time=mock_now().replace(day=2),
405+
)
358406
active = Penalty.objects.create(
359-
created_at=mock_now().replace(day=2),
360407
user=self.test_user,
361408
reason="active",
362409
weight=1,
363-
source_event=self.source,
410+
source_event=event2,
364411
)
365412
self.assertEqual(self.test_user.number_of_penalties(), 1)
366413
self.assertEqual(

lego/apps/users/tests/test_users_api.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import date, timedelta
1+
from datetime import date
22
from unittest import mock
33

44
from django.contrib.auth import authenticate
@@ -453,21 +453,20 @@ def test_self_unauthed(self):
453453

454454
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 10, 1))
455455
def test_own_penalties_serializer(self, mock_now):
456-
source = Event.objects.all().first()
457-
Penalty.objects.create(
458-
created_at=mock_now() - timedelta(days=20),
459-
user=self.user,
460-
reason="test",
461-
weight=1,
462-
source_event=source,
456+
event1 = Event.objects.create(
457+
title="A simple event",
458+
event_type=0,
459+
start_time=mock_now(),
460+
end_time=mock_now(),
463461
)
462+
464463
Penalty.objects.create(
465-
created_at=mock_now() - timedelta(days=19, hours=23, minutes=59),
466464
user=self.user,
467465
reason="test",
468466
weight=1,
469-
source_event=source,
467+
source_event=event1,
470468
)
469+
471470
self.client.force_authenticate(user=self.user)
472471
response = self.client.get(reverse("api:v1:user-me"))
473472

0 commit comments

Comments
 (0)