Skip to content

Commit f9d3103

Browse files
committed
Update tests
1 parent f59fa4a commit f9d3103

File tree

3 files changed

+83
-34
lines changed

3 files changed

+83
-34
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: 69 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -269,43 +269,67 @@ def test_count_weights(self):
269269

270270
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 10, 1))
271271
def test_only_count_active_penalties(self, mock_now):
272+
event1 = Event.objects.create(
273+
title="A simple event",
274+
event_type=0,
275+
start_time=mock_now() - timedelta(days=20),
276+
end_time=mock_now() - timedelta(days=20),
277+
)
278+
279+
event2 = Event.objects.create(
280+
title="A simple event",
281+
event_type=0,
282+
start_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
283+
end_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
284+
)
285+
272286
Penalty.objects.create(
273-
created_at=mock_now() - timedelta(days=20),
274287
user=self.test_user,
275288
reason="test",
276289
weight=1,
277-
source_event=self.source,
290+
source_event=event1,
278291
)
279292
Penalty.objects.create(
280-
created_at=mock_now() - timedelta(days=19, hours=23, minutes=59),
281293
user=self.test_user,
282294
reason="test",
283295
weight=1,
284-
source_event=self.source,
296+
source_event=event2,
285297
)
286298
self.assertEqual(self.test_user.number_of_penalties(), 1)
287299

288300
@override_settings(PENALTY_IGNORE_WINTER=((12, 10), (1, 10)))
289301
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 12, 10))
290302
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.
303+
# This event is created slightly less than 20 days from the freeze-point.
304+
# The penalty should be counted as active.
305+
event1 = Event.objects.create(
306+
title="A simple event",
307+
event_type=0,
308+
start_time=mock_now().replace(day=1),
309+
end_time=mock_now().replace(day=1),
310+
)
311+
293312
Penalty.objects.create(
294313
created_at=mock_now() - timedelta(days=20, hours=23, minutes=59),
295314
user=self.test_user,
296315
reason="active",
297316
weight=1,
298-
source_event=self.source,
317+
source_event=event1,
299318
)
300319

301-
# This penalty is created exactly 20 days from the freeze-point.
302-
# It should be counted as inactive.
320+
# This event is created exactly 20 days from the freeze-point.
321+
# The penalty should be counted as inactive.
322+
event2 = Event.objects.create(
323+
title="A simple event",
324+
event_type=0,
325+
start_time=mock_now() - timedelta(days=21),
326+
end_time=mock_now() - timedelta(days=21),
327+
)
303328
Penalty.objects.create(
304-
created_at=mock_now() - timedelta(days=21),
305329
user=self.test_user,
306330
reason="inactive",
307331
weight=1,
308-
source_event=self.source,
332+
source_event=event2,
309333
)
310334

311335
self.assertEqual(self.test_user.number_of_penalties(), 1)
@@ -314,24 +338,35 @@ def test_frozen_penalties_count_as_active_winter(self, mock_now):
314338
@override_settings(PENALTY_IGNORE_SUMMER=((6, 12), (8, 15)))
315339
@mock.patch("django.utils.timezone.now", return_value=fake_time(2016, 6, 12))
316340
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.
341+
# This event is created slightly less than 20 days from the freeze-point.
342+
# The penalty should be counted as active.
343+
event1 = Event.objects.create(
344+
title="A simple event",
345+
event_type=0,
346+
start_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
347+
end_time=mock_now() - timedelta(days=19, hours=23, minutes=59),
348+
)
349+
319350
Penalty.objects.create(
320-
created_at=mock_now() - timedelta(days=20, hours=23, minutes=59),
321351
user=self.test_user,
322352
reason="active",
323353
weight=1,
324-
source_event=self.source,
354+
source_event=event1,
325355
)
326356

327-
# This penalty is created exactly 20 days from the freeze-point.
328-
# It should be counted as inactive.
357+
# This event is created exactly 20 days from the freeze-point.
358+
# The penalty should be counted as inactive.
359+
event2 = Event.objects.create(
360+
title="Another simple event",
361+
event_type=0,
362+
start_time=mock_now() - timedelta(days=21),
363+
end_time=mock_now() - timedelta(days=21),
364+
)
329365
Penalty.objects.create(
330-
created_at=mock_now() - timedelta(days=21),
331366
user=self.test_user,
332367
reason="inactive",
333368
weight=1,
334-
source_event=self.source,
369+
source_event=event2,
335370
)
336371

337372
self.assertEqual(self.test_user.number_of_penalties(), 1)
@@ -342,25 +377,36 @@ def test_frozen_penalties_count_as_active_summer(self, mock_now):
342377
def test_penalty_offset_is_calculated_correctly(self, mock_now):
343378
# This penalty is set to expire the day before the penalty freeze
344379
# It should not be active
380+
event1 = Event.objects.create(
381+
title="A simple event",
382+
event_type=0,
383+
start_time=mock_now().replace(day=1),
384+
end_time=mock_now().replace(day=1),
385+
)
386+
345387
inactive = Penalty.objects.create(
346-
created_at=mock_now().replace(day=1),
347388
user=self.test_user,
348389
reason="inactive",
349390
weight=1,
350-
source_event=self.source,
391+
source_event=event1,
351392
)
352393
self.assertEqual(self.test_user.number_of_penalties(), 0)
353394
self.assertEqual(
354395
(inactive.exact_expiration.month, inactive.exact_expiration.day), (12, 21)
355396
)
356397

357398
# This penalty is set to expire the same day as the freeze
399+
event2 = Event.objects.create(
400+
title="A simple event",
401+
event_type=0,
402+
start_time=mock_now().replace(day=2),
403+
end_time=mock_now().replace(day=2),
404+
)
358405
active = Penalty.objects.create(
359-
created_at=mock_now().replace(day=2),
360406
user=self.test_user,
361407
reason="active",
362408
weight=1,
363-
source_event=self.source,
409+
source_event=event2,
364410
)
365411
self.assertEqual(self.test_user.number_of_penalties(), 1)
366412
self.assertEqual(

lego/apps/users/tests/test_users_api.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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)