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