test_warnings.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from datetime import timedelta
  2. from django.contrib.auth import get_user_model
  3. from django.test import TestCase
  4. from django.utils import timezone
  5. from misago.core import threadstore
  6. from misago.core.cache import cache
  7. from misago.users import warnings
  8. from misago.users.models import WarningLevel, UserWarning
  9. class WarningsTests(TestCase):
  10. def setUp(self):
  11. User = get_user_model()
  12. self.test_mod = User.objects.create_user('Modo', 'mod@mod.com',
  13. 'Pass.123')
  14. self.test_user = User.objects.create_user('Bob', 'bob@bob.com',
  15. 'Pass.123')
  16. def test_warnings(self):
  17. """user warning levels is obtained"""
  18. threadstore.clear()
  19. cache.clear()
  20. self.assertTrue(warnings.is_user_warning_level_max(self.test_user))
  21. levels = (
  22. WarningLevel.objects.create(name="Level 1"),
  23. WarningLevel.objects.create(name="Level 2"),
  24. WarningLevel.objects.create(name="Level 3"),
  25. WarningLevel.objects.create(name="Level 4"),
  26. WarningLevel.objects.create(name="Level 5"),
  27. WarningLevel.objects.create(name="Level 6"),
  28. WarningLevel.objects.create(name="Level 7"),
  29. WarningLevel.objects.create(name="Level 8")
  30. )
  31. self.assertEqual(WarningLevel.objects.count(), 8)
  32. threadstore.clear()
  33. cache.clear()
  34. for level, warning in enumerate(levels):
  35. warnings.warn_user(self.test_mod, self.test_user, "bawww")
  36. user_level = warnings.get_user_warning_level(self.test_user)
  37. user_level_obj = warnings.get_user_warning_obj(self.test_user)
  38. self.assertEqual(user_level, level + 1)
  39. self.assertEqual(user_level_obj.name, levels[level].name)
  40. self.assertEqual(self.test_user.warning_level, level + 1)
  41. self.assertTrue(warnings.is_user_warning_level_max(self.test_user))
  42. previous_level = user_level
  43. for warning in self.test_user.warnings.all():
  44. warnings.cancel_warning(self.test_mod, self.test_user, warning)
  45. user_level = warnings.get_user_warning_level(self.test_user)
  46. self.assertEqual(user_level + 1, previous_level)
  47. previous_level = user_level
  48. self.assertEqual(0, warnings.get_user_warning_level(self.test_user))
  49. class WarningModelTests(TestCase):
  50. def test_warning_is_expired(self):
  51. """warning knows wheter or not its expired"""
  52. warning = UserWarning(given_on=timezone.now() - timedelta(days=6))
  53. self.assertTrue(warning.is_expired(60))
  54. self.assertFalse(warning.is_expired(14 * 24 * 3600))