test_api.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from misago.notifications import api
  4. class NotificationsAPITests(TestCase):
  5. def setUp(self):
  6. User = get_user_model()
  7. self.test_user = User.objects.create_user('Bob', 'bob@bob.com',
  8. 'Pass.123')
  9. def reload_test_user(self):
  10. self.test_user = get_user_model().objects.get(id=self.test_user.id)
  11. def test_notify_user(self):
  12. """notify_user sets new notification on user"""
  13. notification = api.notify_user(self.test_user,
  14. "Test notify %(token)s",
  15. "/users/",
  16. "test",
  17. {'token': 'Bob'},
  18. self.test_user)
  19. self.assertTrue(notification.is_valid)
  20. self.reload_test_user()
  21. self.assertEqual(self.test_user.new_notifications, 1)
  22. def test_read_user_notifications(self):
  23. """read_user_notifications reads user notification"""
  24. api.notify_user(self.test_user,
  25. "Test notify %(token)s",
  26. "/users/",
  27. "test",
  28. {'token': 'Bob'},
  29. self.test_user)
  30. self.reload_test_user()
  31. api.read_user_notifications(self.test_user, "test")
  32. self.assertEqual(self.test_user.new_notifications, 0)
  33. queryset = self.test_user.misago_notifications.filter(is_new=True)
  34. self.assertEqual(queryset.count(), 0)
  35. def test_read_all_user_alerts(self):
  36. """read_all_user_alerts marks user notifications as read"""
  37. api.notify_user(self.test_user,
  38. "Test notify %(token)s",
  39. "/users/",
  40. "test",
  41. {'token': 'Bob'},
  42. self.test_user)
  43. self.reload_test_user()
  44. api.read_all_user_alerts(self.test_user)
  45. self.assertEqual(self.test_user.new_notifications, 0)
  46. queryset = self.test_user.misago_notifications.filter(is_new=True)
  47. self.assertEqual(queryset.count(), 0)
  48. def test_assert_real_new_notifications_count(self):
  49. """assert_real_new_notifications_count syncs user notifications"""
  50. api.notify_user(self.test_user,
  51. "Test notify %(token)s",
  52. "/users/",
  53. "test",
  54. {'token': 'Bob'},
  55. self.test_user)
  56. self.reload_test_user()
  57. api.read_all_user_alerts(self.test_user)
  58. self.test_user.new_notifications = 42
  59. self.test_user.save()
  60. self.reload_test_user()
  61. self.assertEqual(self.test_user.new_notifications, 42)
  62. queryset = self.test_user.misago_notifications.filter(is_new=True)
  63. self.assertEqual(queryset.count(), 0)
  64. api.assert_real_new_notifications_count(self.test_user)
  65. self.reload_test_user()
  66. self.assertEqual(self.test_user.new_notifications, 0)