Example #1
0
    def test_prepare_and_send_message_not_draft(self):
        user = self.__make_email_for_user(mommy.make(settings.AUTH_USER_MODEL),
                                          '*****@*****.**').user
        message_preparing = mommy.make(
            'devilry_message.Message',
            virtual_message_receivers={'user_ids': [user.id]},
            message_type=['email'],
            status='preparing')
        message_sending = mommy.make(
            'devilry_message.Message',
            virtual_message_receivers={'user_ids': [user.id]},
            message_type=['email'],
            status='sending')
        message_error = mommy.make(
            'devilry_message.Message',
            virtual_message_receivers={'user_ids': [user.id]},
            message_type=['email'],
            status='error')
        message_sent = mommy.make(
            'devilry_message.Message',
            virtual_message_receivers={'user_ids': [user.id]},
            message_type=['email'],
            status='sent')
        with self.assertRaisesMessage(ValueError,
                                      'Can only send drafted messages.'):
            message_preparing.prepare_and_send(
                subject_generator=test_utils.SubjectTextTestGenerator(),
                template_name='devilry_message/for_test.django.html',
                template_context={})

        with self.assertRaisesMessage(ValueError,
                                      'Can only send drafted messages.'):
            message_sending.prepare_and_send(
                subject_generator=test_utils.SubjectTextTestGenerator(),
                template_name='devilry_message/for_test.django.html',
                template_context={})

        with self.assertRaisesMessage(ValueError,
                                      'Can only send drafted messages.'):
            message_error.prepare_and_send(
                subject_generator=test_utils.SubjectTextTestGenerator(),
                template_name='devilry_message/for_test.django.html',
                template_context={})

        with self.assertRaisesMessage(ValueError,
                                      'Can only send drafted messages.'):
            message_sent.prepare_and_send(
                subject_generator=test_utils.SubjectTextTestGenerator(),
                template_name='devilry_message/for_test.django.html',
                template_context={})
Example #2
0
 def test_prepare_single_message_receiver(self):
     user = self.__make_email_for_user(mommy.make(settings.AUTH_USER_MODEL),
                                       '*****@*****.**').user
     message = mommy.make('devilry_message.Message',
                          virtual_message_receivers={'user_ids': [user.id]},
                          message_type=['email'])
     message_receivers = message.prepare_message_receivers(
         subject_generator=test_utils.SubjectTextTestGenerator(),
         template_name='devilry_message/for_test.django.html',
         template_context={})
     self.assertEqual(len(message_receivers), 1)
     self.assertEqual(message_receivers[0].user, user)
Example #3
0
 def test_prepare_and_send_query_count(self):
     user_ids = []
     for i in range(1, 10):
         user = self.__make_email_for_user(
             mommy.make(settings.AUTH_USER_MODEL),
             'testuser{}@example.com'.format(i)).user
         user_ids.append(user.id)
     message = mommy.make('devilry_message.Message',
                          virtual_message_receivers={'user_ids': user_ids},
                          message_type=['email'])
     with self.assertNumQueries(44):
         message.prepare_and_send(
             subject_generator=test_utils.SubjectTextTestGenerator(),
             template_name='devilry_message/for_test.django.html',
             template_context={})
Example #4
0
    def test_prepare_and_send_ok(self):
        user1 = self.__make_email_for_user(
            mommy.make(settings.AUTH_USER_MODEL), '*****@*****.**').user
        user2 = self.__make_email_for_user(
            mommy.make(settings.AUTH_USER_MODEL), '*****@*****.**').user
        message = mommy.make(
            'devilry_message.Message',
            virtual_message_receivers={'user_ids': [user1.id, user2.id]},
            message_type=['email'])
        message.prepare_and_send(
            subject_generator=test_utils.SubjectTextTestGenerator(),
            template_name='devilry_message/for_test.django.html',
            template_context={})

        self.assertEqual(MessageReceiver.objects.count(), 2)
        self.assertEqual(
            MessageReceiver.objects.filter(status='sent').count(), 2)
        self.assertTrue(MessageReceiver.objects.filter(user=user1).exists())
        self.assertTrue(MessageReceiver.objects.filter(user=user2).exists())
        self.assertEqual(len(mail.outbox), 2)
Example #5
0
    def test_prepare_and_send_create_message_receivers_raises_error(self):
        user = self.__make_email_for_user(mommy.make(settings.AUTH_USER_MODEL),
                                          '*****@*****.**').user
        message = mommy.make('devilry_message.Message',
                             virtual_message_receivers={'user_ids': [user.id]},
                             message_type=['email'])

        def mock_create_message_receivers(instance, subject_generator,
                                          template_name, template_context):
            raise ValueError('Test error')

        with mock.patch(
                'devilry.devilry_message.models.Message.create_message_receivers',
                mock_create_message_receivers):
            message.prepare_and_send(
                subject_generator=test_utils.SubjectTextTestGenerator(),
                template_name='devilry_message/for_test.django.html',
                template_context={})
            message.refresh_from_db()

            self.assertEqual(message.status, 'error')
Example #6
0
 def test_prepare_multiple_message_receivers(self):
     user1 = self.__make_email_for_user(
         mommy.make(settings.AUTH_USER_MODEL), '*****@*****.**').user
     user2 = self.__make_email_for_user(
         mommy.make(settings.AUTH_USER_MODEL), '*****@*****.**').user
     user3 = self.__make_email_for_user(
         mommy.make(settings.AUTH_USER_MODEL), '*****@*****.**').user
     message = mommy.make('devilry_message.Message',
                          virtual_message_receivers={
                              'user_ids': [user1.id, user2.id, user3.id]
                          },
                          message_type=['email'])
     message_receivers = message.prepare_message_receivers(
         subject_generator=test_utils.SubjectTextTestGenerator(),
         template_name='devilry_message/for_test.django.html',
         template_context={})
     self.assertEqual(len(message_receivers), 3)
     receiver_user_list = [
         message_receiver.user for message_receiver in message_receivers
     ]
     self.assertIn(user1, receiver_user_list)
     self.assertIn(user2, receiver_user_list)
     self.assertIn(user3, receiver_user_list)