class TestNotificationHandling(ActivityTestCase): def setUp(self): super(TestNotificationHandling, self).setUp() self.center = NotificationCenter() self.peter = create(Builder('ogds_user').id('peter')) self.peter = create(Builder('watcher').having(actorid='peter')) self.hugo = create(Builder('ogds_user').id('hugo')) self.hugo = create(Builder('watcher').having(actorid='hugo')) self.resource_a = create(Builder('resource') .oguid('fd:123') .watchers([self.hugo, self.peter])) self.resource_b = create(Builder('resource') .oguid('fd:456') .watchers([self.hugo])) self.resource_c = create(Builder('resource') .oguid('fd:789') .watchers([self.peter])) self.activity_1 = self.center.add_activity( Oguid('fd', '123'), 'task-added', {'en': 'Kennzahlen 2014 erfassen'}, {'en': 'Task added'}, {'en': 'Task bla added by Peter'}, 'hugo.boss', {'en': None}).get('activity') self.activity_2 = self.center.add_activity( Oguid('fd', '123'), 'task-transition-open-in-progress', {'en': 'Kennzahlen 2015 erfassen'}, {'en': 'Task accepted'}, {'en': 'Task bla accepted by Peter'}, 'peter.mueller', {'en': None}).get('activity') self.activity_3 = self.center.add_activity( Oguid('fd', '456'), 'task-added', {'en': 'Besprechung Gesuch'}, {'en': 'Task added'}, {'en': 'Task for added by Peter'}, 'peter.mueller', {'en': None}).get('activity') self.activity_4 = self.center.add_activity( Oguid('fd', '789'), 'task-added', {'en': 'Vorbereitung Besprechung'}, {'en': 'Task added'}, {'en': 'Task bla accepted by Franz'}, 'franz.meier', {'en': None}).get('activity') def test_get_users_notifications_lists_only_users_notifications(self): peters_notifications = self.center.get_users_notifications('peter') hugos_notifications = self.center.get_users_notifications('hugo') self.assertEquals( [self.activity_4, self.activity_2, self.activity_1], [notification.activity for notification in peters_notifications]) self.assertEquals( [self.activity_3, self.activity_2, self.activity_1], [notification.activity for notification in hugos_notifications]) def test_get_users_notifications_only_unread_parameter(self): notifications = self.center.get_users_notifications('peter') self.center.mark_notification_as_read(notifications[0].notification_id) peters_notifications = self.center.get_users_notifications('peter', only_unread=True) self.assertEquals(2, len(peters_notifications)) def test_get_users_notifications_retuns_empty_list_when_no_notifications_for_this_user_exists(self): create(Builder('watcher').having(actorid='franz')) self.assertEquals([], self.center.get_users_notifications('franz')) def test_mark_notification_as_read(self): notification = Notification.query.by_user('peter').first() self.center.mark_notification_as_read(notification.notification_id) self.assertTrue(Notification.get(notification.notification_id).is_read) def test_mark_notifications_as_read(self): notification_1, notification_2, notification_3 = Notification.query.by_user( 'peter').all() self.center.mark_notifications_as_read( [notification_1.notification_id, notification_3.notification_id]) self.assertTrue(notification_1.is_read) self.assertFalse(notification_2.is_read) self.assertTrue(notification_3.is_read) def test_mark_an_already_read_notification_is_ignored(self): notification = Notification.query.by_user('peter').first() notification_id = notification.notification_id self.center.mark_notification_as_read(notification_id) self.assertTrue(Notification.get(notification_id).is_read) self.center.mark_notification_as_read(notification_id) self.assertTrue(Notification.get(notification_id).is_read) def test_list_notifications_by_userid(self): notifications = self.center.list_notifications(userid='peter') self.assertEquals( [self.activity_1, self.activity_2, self.activity_4], [notification.activity for notification in notifications]) def test_list_notifications_with_sorting(self): notifications = self.center.list_notifications(userid='peter', sort_on='kind') self.assertEquals( ['task-added', 'task-added', 'task-transition-open-in-progress'], [notification.activity.kind for notification in notifications]) def test_list_notifications_with_reverse_sorting(self): notifications = self.center.list_notifications( userid='peter', sort_on='kind', sort_reverse=True) self.assertEquals( ['task-transition-open-in-progress', 'task-added', 'task-added'], [notification.activity.kind for notification in notifications]) @unittest.skip('Textfilter not implemented yet') def test_list_notifications_with_text_filter_on_title(self): notifications = self.center.list_notifications( userid='peter', sort_on='kind', filters=['kennzahlen']) self.assertEquals( [self.activity_1, self.activity_2], [notification.activity for notification in notifications]) @unittest.skip('Textfilter not implemented yet') def test_list_notifications_with_text_filter_on_kind(self): notifications = self.center.list_notifications( userid='peter', sort_on='kind', filters=['Task', 'added']) self.assertEquals( ['task-added', 'task-added'], [notification.activity.kind for notification in notifications])