tests for email_interface forms
This commit is contained in:
parent
8b1e9aa4b2
commit
68a282336f
4 changed files with 106 additions and 9 deletions
|
|
@ -22,8 +22,9 @@
|
||||||
"Reparateure",
|
"Reparateure",
|
||||||
"reparateurs",
|
"reparateurs",
|
||||||
"Reparateurs",
|
"Reparateurs",
|
||||||
"tabindex"
|
"tabindex",
|
||||||
|
"johnpassword"
|
||||||
],
|
],
|
||||||
"ignoreWords": [],
|
"ignoreWords": [],
|
||||||
"import": []
|
"import": []
|
||||||
}
|
}
|
||||||
|
|
@ -6,12 +6,14 @@ from django.apps import AppConfig
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def message_answered_receiver(sender, instance, **kwargs):
|
def message_answered_receiver(sender, instance, **kwargs): # pragma: no cover
|
||||||
|
# used for manual testing only
|
||||||
logger.debug('Message answered signal received: %s %s',
|
logger.debug('Message answered signal received: %s %s',
|
||||||
instance, kwargs['answer'])
|
instance, kwargs['answer'])
|
||||||
|
|
||||||
|
|
||||||
def new_message_receiver(sender, instance, **kwargs):
|
def new_message_receiver(sender, instance, **kwargs): # pragma: no cover
|
||||||
|
# used for manual testing only
|
||||||
logger.debug('New message signal received: %s', instance)
|
logger.debug('New message signal received: %s', instance)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,17 +23,23 @@ class MessageForm(forms.ModelForm):
|
||||||
fields = ['receiver', 'summary', 'html_content']
|
fields = ['receiver', 'summary', 'html_content']
|
||||||
widgets = {'html_content': CKEditorUploadingWidget()}
|
widgets = {'html_content': CKEditorUploadingWidget()}
|
||||||
|
|
||||||
def clean(self):
|
def clean_mail_text(self):
|
||||||
if self.cleaned_data['use_mail_text'] and self.cleaned_data['mail_text'] == '':
|
text = self.cleaned_data["mail_text"]
|
||||||
|
use_text = self.data["use_mail_text"]
|
||||||
|
|
||||||
|
logger.debug(
|
||||||
|
'MessageForm clean_mail_text: use text: %r, text: %s', use_text, text)
|
||||||
|
|
||||||
|
if use_text and not text:
|
||||||
raise forms.ValidationError(
|
raise forms.ValidationError(
|
||||||
_("Mail text cannot be empty if it is used!"))
|
_("Mail text cannot be empty if it is used!"))
|
||||||
|
|
||||||
return super().clean()
|
return text
|
||||||
|
|
||||||
def save(self, commit: bool = True):
|
def save(self, commit: bool = True):
|
||||||
message = super().save(commit=False)
|
message = super().save(commit=False)
|
||||||
|
|
||||||
if not self.cleaned_data['use_mail_text']:
|
if self.cleaned_data['use_mail_text']:
|
||||||
message.text_content = self.cleaned_data['mail_text']
|
message.text_content = self.cleaned_data['mail_text']
|
||||||
else:
|
else:
|
||||||
# convert HTML content to text content
|
# convert HTML content to text content
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,91 @@
|
||||||
|
import logging
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django import forms
|
||||||
|
from .forms import MessageForm
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class MessageFormTestCase(TestCase):
|
||||||
|
"""
|
||||||
|
Tests all logic contained in the OneTimeLogin model.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
user = get_user_model().objects.create_user(
|
||||||
|
"john",
|
||||||
|
"lennon@thebeatles.com",
|
||||||
|
"johnpassword")
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
def test_message_from_ok_no_text(self):
|
||||||
|
user = get_user_model().objects.get(username='john')
|
||||||
|
|
||||||
|
form = MessageForm({
|
||||||
|
'receiver': user.pk,
|
||||||
|
'summary': 'My mail summary',
|
||||||
|
'html_content': '<p>Hallo, Welt!</p>',
|
||||||
|
'mail_text': '',
|
||||||
|
'use_mail_text': False,
|
||||||
|
})
|
||||||
|
|
||||||
|
assert form.is_valid(), 'form is valid'
|
||||||
|
|
||||||
|
message = form.save(commit=False)
|
||||||
|
|
||||||
|
logger.debug('Message: %s', message)
|
||||||
|
logger.debug('Message text: %s', message.text_content)
|
||||||
|
|
||||||
|
assert message.pk is None, 'message was not saved'
|
||||||
|
assert message.receiver == user, 'receiver is set'
|
||||||
|
assert message.sender is None, 'no sender is set'
|
||||||
|
assert message.summary == 'My mail summary', 'summary is set'
|
||||||
|
assert message.html_content == '<p>Hallo, Welt!</p>', 'HTML is set'
|
||||||
|
assert 'Hallo, Welt!' in message.text_content, 'text was generated'
|
||||||
|
|
||||||
|
message = form.save()
|
||||||
|
|
||||||
|
assert message.pk is not None, 'message was saved'
|
||||||
|
|
||||||
|
def test_message_from_ok_text(self):
|
||||||
|
user = get_user_model().objects.get(username='john')
|
||||||
|
|
||||||
|
form = MessageForm({
|
||||||
|
'receiver': user.pk,
|
||||||
|
'summary': 'My mail summary',
|
||||||
|
'html_content': '<p>Hallo, Welt!</p>',
|
||||||
|
'mail_text': 'Hallo!',
|
||||||
|
'use_mail_text': True,
|
||||||
|
})
|
||||||
|
|
||||||
|
assert form.is_valid(), 'form is valid'
|
||||||
|
|
||||||
|
message = form.save(commit=False)
|
||||||
|
|
||||||
|
logger.debug('Message: %s', message)
|
||||||
|
logger.debug('Message text: %s', message.text_content)
|
||||||
|
|
||||||
|
assert message.pk is None, 'message was not saved'
|
||||||
|
assert message.receiver == user, 'receiver is set'
|
||||||
|
assert message.sender is None, 'no sender is set'
|
||||||
|
assert message.summary == 'My mail summary', 'summary is set'
|
||||||
|
assert message.html_content == '<p>Hallo, Welt!</p>', 'HTML is set'
|
||||||
|
assert message.text_content == 'Hallo!', 'text was used'
|
||||||
|
|
||||||
|
def test_message_from_wrong_no_text(self):
|
||||||
|
user = get_user_model().objects.get(username='john')
|
||||||
|
|
||||||
|
form = MessageForm({
|
||||||
|
'receiver': user.pk,
|
||||||
|
'summary': 'My mail summary',
|
||||||
|
'html_content': '<p>Hallo, Welt!</p>',
|
||||||
|
'mail_text': '',
|
||||||
|
'use_mail_text': True,
|
||||||
|
})
|
||||||
|
|
||||||
|
logger.debug('Form data: text: %r', form)
|
||||||
|
|
||||||
|
assert not form.is_valid()
|
||||||
|
assert form.has_error('mail_text')
|
||||||
|
|
|
||||||
Reference in a new issue