UPD: improved email tests.
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core import mail as django_mail
|
||||
from django.test import TestCase
|
||||
|
||||
from dav_base.tests.generic import EmailTestCase
|
||||
from dav_base.tests.generic import EmailTestMixin
|
||||
|
||||
from ..emails import PasswordSetEmail
|
||||
|
||||
@@ -20,9 +21,9 @@ URL: {base_url}/
|
||||
"""
|
||||
|
||||
|
||||
class TestCase(EmailTestCase):
|
||||
class EmailTestCase(EmailTestMixin, TestCase):
|
||||
def setUp(self):
|
||||
super(TestCase, self).setUp()
|
||||
super(EmailTestCase, self).setUp()
|
||||
model = get_user_model()
|
||||
self.user = model.objects.create_user(username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL)
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import datetime
|
||||
import os
|
||||
import sys
|
||||
import urllib
|
||||
from unittest import skip, SkipTest
|
||||
from django.apps import apps
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
|
||||
from django.test import SimpleTestCase, TestCase, tag
|
||||
from django.urls import reverse
|
||||
@@ -12,13 +11,6 @@ from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
|
||||
def skip_unless_tag_option():
|
||||
if '--tag' in sys.argv:
|
||||
return lambda func: func
|
||||
else:
|
||||
return skip('Skipped unless --tag option is used')
|
||||
|
||||
|
||||
class AppSetting(object):
|
||||
def __init__(self, name, of=None):
|
||||
self.name = name
|
||||
@@ -47,7 +39,7 @@ class AppsTestCase(SimpleTestCase):
|
||||
self.assertIsInstance(value, of)
|
||||
|
||||
|
||||
class EmailTestCase(TestCase):
|
||||
class EmailTestMixin(object):
|
||||
email_sender = 'Automatic Software Test <root@localhost>'
|
||||
email_base_url = 'http://localhost'
|
||||
email_subject_prefix = '[Test]'
|
||||
@@ -57,8 +49,9 @@ class EmailTestCase(TestCase):
|
||||
|
||||
def assertRecipients(self, mail, recipients):
|
||||
self.assertEqual(len(mail.recipients()), len(recipients))
|
||||
for recipient in recipients:
|
||||
expected_recipient = u'"%s" <%s>' % (recipient.get_full_name(), recipient.email)
|
||||
for expected_recipient in recipients:
|
||||
if isinstance(expected_recipient, AbstractUser):
|
||||
expected_recipient = u'"%s" <%s>' % (expected_recipient.get_full_name(), expected_recipient.email)
|
||||
recipients = mail.recipients()
|
||||
self.assertIn(expected_recipient, recipients)
|
||||
|
||||
@@ -83,7 +76,6 @@ class EmailTestCase(TestCase):
|
||||
self.assertEqual(mail.body, body)
|
||||
|
||||
def setUp(self):
|
||||
super(EmailTestCase, self).setUp()
|
||||
app_config = apps.get_app_config('dav_base')
|
||||
app_config.settings.email_sender = self.email_sender
|
||||
app_config.settings.email_base_url = self.email_base_url
|
||||
|
||||
@@ -1,20 +1,30 @@
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core import mail as django_mail
|
||||
from django.test import SimpleTestCase
|
||||
|
||||
from ..emails import AbstractMail
|
||||
from .generic import EmailTestMixin
|
||||
|
||||
|
||||
class EmailsTestCase(SimpleTestCase):
|
||||
def setUp(self):
|
||||
self.email = AbstractMail()
|
||||
class ConcreteMail(AbstractMail):
|
||||
_subject = u'No subject'
|
||||
_template_name = 'dav_base/base.html'
|
||||
|
||||
def __init__(self, recipient, *args, **kwargs):
|
||||
self._recipient = recipient
|
||||
|
||||
def _get_recipients(self):
|
||||
return [self._recipient]
|
||||
|
||||
|
||||
class TestCase(EmailTestMixin, SimpleTestCase):
|
||||
def test_send(self):
|
||||
try:
|
||||
self.email.send()
|
||||
self.fail('AbstractEmail.send() does not raise an Exception')
|
||||
except NotImplementedError:
|
||||
pass
|
||||
except ImproperlyConfigured:
|
||||
pass
|
||||
except Exception:
|
||||
self.fail('AbstractEmail.send() raised unexpected Exception')
|
||||
recipient = 'root@localhost'
|
||||
email = ConcreteMail(recipient)
|
||||
email.send()
|
||||
|
||||
self.assertEqual(len(django_mail.outbox), 1)
|
||||
mail = django_mail.outbox[0]
|
||||
|
||||
self.assertSender(mail)
|
||||
self.assertRecipients(mail, [recipient])
|
||||
self.assertSubject(mail, u'No subject')
|
||||
|
||||
@@ -3,13 +3,12 @@ import datetime
|
||||
from django.apps import apps
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core import mail as django_mail
|
||||
from django.utils import timezone
|
||||
from django.test import TestCase
|
||||
|
||||
from dav_base.tests.generic import EmailTestCase
|
||||
from dav_base.tests.generic import EmailTestMixin
|
||||
|
||||
from ..models.event import Event
|
||||
from ..models.oneclickaction import OneClickAction
|
||||
from .. import emails
|
||||
|
||||
from .generic import RoleMixin
|
||||
|
||||
@@ -155,9 +154,9 @@ Ausschreibung:
|
||||
{event_text}"""
|
||||
|
||||
|
||||
class TestCase(RoleMixin, EmailTestCase):
|
||||
class EmailTestCase(EmailTestMixin, RoleMixin, TestCase):
|
||||
def setUp(self):
|
||||
super(TestCase, self).setUp()
|
||||
super(EmailTestCase, self).setUp()
|
||||
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
app_config.settings.enable_email_on_update = False
|
||||
|
||||
Reference in New Issue
Block a user