test_counters.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. from time import time
  2. from django.core.urlresolvers import reverse
  3. from django.utils.translation import ugettext as _
  4. from misago.forums.models import Forum
  5. from misago.users.testutils import AuthenticatedUserTestCase
  6. from misago.threads.counts import NewThreadsCount, UnreadThreadsCount
  7. from misago.threads import testutils
  8. class TestNewThreadsCount(AuthenticatedUserTestCase):
  9. def setUp(self):
  10. super(TestNewThreadsCount, self).setUp()
  11. self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  12. def test_cast_to_int(self):
  13. """counter is castable to int"""
  14. counter = NewThreadsCount(self.user, {})
  15. self.assertEqual(int(counter), 0)
  16. threads = [testutils.post_thread(self.forum) for t in xrange(42)]
  17. counter = NewThreadsCount(self.user, {})
  18. self.assertEqual(int(counter), 42)
  19. def test_cast_to_bool(self):
  20. """counter is castable to bool"""
  21. counter = NewThreadsCount(self.user, {})
  22. self.assertFalse(counter)
  23. threads = [testutils.post_thread(self.forum) for t in xrange(42)]
  24. counter = NewThreadsCount(self.user, {})
  25. self.assertTrue(counter)
  26. def test_is_cache_valid(self):
  27. """is_cache_valid returns valid value for different caches"""
  28. counter = NewThreadsCount(self.user, {})
  29. self.assertTrue(counter.is_cache_valid({
  30. 'expires': time() + 15,
  31. 'user': self.user.pk
  32. }))
  33. self.assertFalse(counter.is_cache_valid({
  34. 'expires': time() - 15,
  35. 'user': self.user.pk
  36. }))
  37. self.assertFalse(counter.is_cache_valid({
  38. 'expires': time() + 15,
  39. 'user': self.user.pk + 1
  40. }))
  41. def test_get_expiration_timestamp(self):
  42. """get_expiration_timestamp returns greater time than current one"""
  43. counter = NewThreadsCount(self.user, {})
  44. self.assertTrue(counter.get_expiration_timestamp() > time())
  45. def test_get_real_count(self):
  46. """get_real_count returns valid count of new threads"""
  47. counter = NewThreadsCount(self.user, {})
  48. self.assertEqual(counter.count, 0)
  49. self.assertEqual(counter.get_real_count()['threads'], 0)
  50. # create 10 new threads
  51. threads = [testutils.post_thread(self.forum) for t in xrange(10)]
  52. self.assertEqual(counter.get_real_count()['threads'], 10)
  53. # create new counter
  54. counter = NewThreadsCount(self.user, {})
  55. self.assertEqual(counter.count, 10)
  56. self.assertEqual(counter.get_real_count()['threads'], 10)
  57. def test_set(self):
  58. """set allows for changing count of threads"""
  59. session = {}
  60. counter = NewThreadsCount(self.user, session)
  61. counter.set(128)
  62. self.assertEqual(int(counter), 128)
  63. self.assertEqual(session[counter.name]['threads'], 128)
  64. def test_decrease(self):
  65. """decrease is not allowing for negative threads counts"""
  66. session = {}
  67. counter = NewThreadsCount(self.user, session)
  68. counter.set(128)
  69. counter.decrease()
  70. self.assertEqual(int(counter), 127)
  71. self.assertEqual(session[counter.name]['threads'], 127)
  72. def test_decrease_zero(self):
  73. """decrease is not allowing for negative threads counts"""
  74. session = {}
  75. counter = NewThreadsCount(self.user, session)
  76. counter.decrease()
  77. self.assertEqual(int(counter), 0)
  78. self.assertEqual(session[counter.name]['threads'], 0)