def test_moderator_disables_notifications(self): """Test where the moderator doesn't want notifications""" group = mommy.make('groups.Group') moderator = self.create_user(moderator_notification_period=0) group.owners.add(moderator) message = self.generate_pending_message(group, self.two_days_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertFalse(self.mock_modmessage.delay.called)
def test_no_recent_messages(self): """All pending messages were more than 1 day old""" group = mommy.make('groups.Group') moderator = self.create_user(moderator_notification_period=1) group.owners.add(moderator) message = self.generate_pending_message(group, self.two_days_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertFalse(self.mock_modmessage.delay.called)
def test_recent_message_non_notification_period(self): """Ensure a moderator who is not scheduled to get notified doesn't""" group = mommy.make('groups.Group') # 6 is a factor of 24, but not a factor of 22 (the hour we're running # this task) moderator = self.create_user(moderator_notification_period=6) group.owners.add(moderator) message = self.generate_pending_message(group, self.one_day_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertFalse(self.mock_modmessage.delay.called)
def test_one_recent_message(self): """At least one message marked pending in the past 24 hours""" group = mommy.make('groups.Group') moderator = self.create_user(moderator_notification_period=1) group.owners.add(moderator) message = self.generate_pending_message(group, self.one_day_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertTrue(self.mock_modmessage.delay.called) self.mock_modmessage.delay.assert_called_once_with( moderator.pk, '2014-09-22T22:00:00+00:00')
def test_user_has_moderate_all_messages_perm(self): """A user with can_moderate_all_messages should moderate all msgs.""" group = mommy.make('groups.Group') moderator = self.create_user(moderator_notification_period=1) self.add_perm(moderator, 'can_moderate_all_messages', 'accounts', 'user') message = self.generate_pending_message(group, self.one_day_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertTrue(self.mock_modmessage.delay.called) self.mock_modmessage.delay.assert_called_once_with( moderator.pk, '2014-09-22T22:00:00+00:00')
def test_user_has_moderate_all_messages_perm(self): """A user with can_moderate_all_messages should moderate all msgs.""" group = mommy.make('groups.Group') moderator = self.create_user(moderator_notification_period=1) self.add_perm( moderator, 'can_moderate_all_messages', 'accounts', 'user') message = self.generate_pending_message(group, self.one_day_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertTrue(self.mock_modmessage.delay.called) self.mock_modmessage.delay.assert_called_once_with( moderator.pk, '2014-09-22T22:00:00+00:00')
def test_multiple_moderators(self): """Test that multiple modeators get their result at the same time""" group = mommy.make('groups.Group') moderator1 = self.create_user(moderator_notification_period=1) moderator2 = self.create_user(moderator_notification_period=1) group.owners.add(moderator1) group.owners.add(moderator2) message = self.generate_pending_message(group, self.one_day_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator1.messages_to_moderate) self.assertIn(message, moderator2.messages_to_moderate) self.assertTrue(self.mock_modmessage.delay.called) self.assertEqual(self.mock_modmessage.delay.call_count, 2)
def test_user_in_group_with_moderate_all_messages_perm(self): """A user in a group with can_moderate_all_messages should get all.""" group = mommy.make('groups.Group') moderator = self.create_user(moderator_notification_period=1) perm_group = self.create_group() permission = Permission.objects.get_by_natural_key( 'can_moderate_all_messages', 'accounts', 'user') perm_group.group.permissions.add(permission) perm_group.group.user_set.add(moderator) message = self.generate_pending_message(group, self.one_day_ago) tasks.send_moderation_notifications() self.assertIn(message, moderator.messages_to_moderate) self.assertTrue(self.mock_modmessage.delay.called) self.mock_modmessage.delay.assert_called_once_with( moderator.pk, '2014-09-22T22:00:00+00:00')