test_sync_unread_private_threads.py 2.1 KB

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