test_sync_unread_private_threads.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from .. import test
  2. from ...users.test import create_test_user
  3. from ..models import ThreadParticipant
  4. from .test_privatethreads import PrivateThreadsTestCase
  5. class SyncUnreadPrivateThreadsTestCase(PrivateThreadsTestCase):
  6. def setUp(self):
  7. super().setUp()
  8. self.other_user = create_test_user("OtherUser", "user@example.com")
  9. self.thread = test.post_thread(self.category, poster=self.user)
  10. ThreadParticipant.objects.set_owner(self.thread, self.other_user)
  11. ThreadParticipant.objects.add_participants(self.thread, [self.user])
  12. def test_middleware_counts_new_thread(self):
  13. """middleware counts new thread"""
  14. self.user.sync_unread_private_threads = True
  15. self.user.save()
  16. response = self.client.get("/")
  17. self.assertEqual(response.status_code, 200)
  18. # user was resynced
  19. self.reload_user()
  20. self.assertFalse(self.user.sync_unread_private_threads)
  21. self.assertEqual(self.user.unread_private_threads, 1)
  22. def test_middleware_counts_unread_thread(self):
  23. """
  24. middleware counts thread with unread reply, post read flags user for recount
  25. """
  26. self.user.sync_unread_private_threads = True
  27. self.user.save()
  28. self.client.post(self.thread.last_post.get_read_api_url())
  29. # post read zeroed list of unread private threads
  30. self.reload_user()
  31. self.assertFalse(self.user.sync_unread_private_threads)
  32. self.assertEqual(self.user.unread_private_threads, 0)
  33. # reply to thread
  34. test.reply_thread(self.thread)
  35. self.user.sync_unread_private_threads = True
  36. self.user.save()
  37. # middleware did recount and accounted for new unread post
  38. response = self.client.get("/")
  39. self.assertEqual(response.status_code, 200)
  40. self.reload_user()
  41. self.assertFalse(self.user.sync_unread_private_threads)
  42. self.assertEqual(self.user.unread_private_threads, 1)