from django.contrib.auth import get_user_model from django.test import TestCase from misago.notifications import api class NotificationsAPITests(TestCase): def setUp(self): User = get_user_model() self.test_user = User.objects.create_user('Bob', 'bob@bob.com', 'Pass.123') def reload_test_user(self): self.test_user = get_user_model().objects.get(id=self.test_user.id) def test_notify_user(self): """notify_user sets new notification on user""" notification = api.notify_user(self.test_user, "Test notify %(token)s", "/users/", "test", {'token': 'Bob'}, self.test_user) self.assertTrue(notification.is_valid) self.reload_test_user() self.assertEqual(self.test_user.new_notifications, 1) def test_read_user_notifications(self): """read_user_notifications reads user notification""" api.notify_user(self.test_user, "Test notify %(token)s", "/users/", "test", {'token': 'Bob'}, self.test_user) self.reload_test_user() api.read_user_notifications(self.test_user, "test") self.assertEqual(self.test_user.new_notifications, 0) queryset = self.test_user.misago_notifications.filter(is_new=True) self.assertEqual(queryset.count(), 0) def test_read_all_user_alerts(self): """read_all_user_alerts marks user notifications as read""" api.notify_user(self.test_user, "Test notify %(token)s", "/users/", "test", {'token': 'Bob'}, self.test_user) self.reload_test_user() api.read_all_user_alerts(self.test_user) self.assertEqual(self.test_user.new_notifications, 0) queryset = self.test_user.misago_notifications.filter(is_new=True) self.assertEqual(queryset.count(), 0) def test_assert_real_new_notifications_count(self): """assert_real_new_notifications_count syncs user notifications""" api.notify_user(self.test_user, "Test notify %(token)s", "/users/", "test", {'token': 'Bob'}, self.test_user) self.reload_test_user() api.read_all_user_alerts(self.test_user) self.test_user.new_notifications = 42 self.test_user.save() self.reload_test_user() self.assertEqual(self.test_user.new_notifications, 42) queryset = self.test_user.misago_notifications.filter(is_new=True) self.assertEqual(queryset.count(), 0) api.assert_real_new_notifications_count(self.test_user) self.reload_test_user() self.assertEqual(self.test_user.new_notifications, 0)