예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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')
예제 #7
0
    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)
예제 #8
0
    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')
예제 #9
0
    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')
예제 #10
0
    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')
예제 #11
0
    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)
예제 #12
0
    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)
예제 #13
0
    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')
예제 #14
0
    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')