test_dates.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from datetime import timedelta
  2. from django.test import TestCase
  3. from django.utils import timezone
  4. from ...conf import settings
  5. from ..dates import get_cutoff_date, is_date_tracked
  6. class MockUser:
  7. is_authenticated = True
  8. def __init__(self):
  9. self.joined_on = timezone.now()
  10. class MockAnonymousUser:
  11. is_authenticated = False
  12. class ReadTrackerDatesTests(TestCase):
  13. def test_get_cutoff_date_no_user(self):
  14. """get_cutoff_date utility works without user argument"""
  15. valid_cutoff_date = timezone.now() - timedelta(
  16. days=settings.MISAGO_READTRACKER_CUTOFF
  17. )
  18. returned_cutoff_date = get_cutoff_date()
  19. self.assertTrue(returned_cutoff_date > valid_cutoff_date)
  20. def test_get_cutoff_date_user(self):
  21. """get_cutoff_date utility works with user argument"""
  22. user = MockUser()
  23. valid_cutoff_date = timezone.now() - timedelta(
  24. days=settings.MISAGO_READTRACKER_CUTOFF
  25. )
  26. returned_cutoff_date = get_cutoff_date(user)
  27. self.assertTrue(returned_cutoff_date > valid_cutoff_date)
  28. self.assertEqual(returned_cutoff_date, user.joined_on)
  29. def test_get_cutoff_date_anonymous_user(self):
  30. """passing anonymous user to get_cutoff_date has no effect"""
  31. user = MockAnonymousUser()
  32. valid_cutoff_date = timezone.now() - timedelta(
  33. days=settings.MISAGO_READTRACKER_CUTOFF
  34. )
  35. returned_cutoff_date = get_cutoff_date(user)
  36. self.assertTrue(returned_cutoff_date > valid_cutoff_date)
  37. def test_is_date_tracked(self):
  38. """is_date_tracked validates dates"""
  39. self.assertFalse(is_date_tracked(None, MockUser()))
  40. past_date = timezone.now() - timedelta(minutes=10)
  41. self.assertFalse(is_date_tracked(past_date, MockUser()))
  42. future_date = timezone.now() + timedelta(minutes=10)
  43. self.assertTrue(is_date_tracked(future_date, MockUser()))