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",
|
||||
"reparateurs",
|
||||
"Reparateurs",
|
||||
"tabindex"
|
||||
"tabindex",
|
||||
"johnpassword"
|
||||
],
|
||||
"ignoreWords": [],
|
||||
"import": []
|
||||
}
|
||||
}
|
||||
|
|
@ -6,12 +6,14 @@ from django.apps import AppConfig
|
|||
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',
|
||||
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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -23,17 +23,23 @@ class MessageForm(forms.ModelForm):
|
|||
fields = ['receiver', 'summary', 'html_content']
|
||||
widgets = {'html_content': CKEditorUploadingWidget()}
|
||||
|
||||
def clean(self):
|
||||
if self.cleaned_data['use_mail_text'] and self.cleaned_data['mail_text'] == '':
|
||||
def clean_mail_text(self):
|
||||
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(
|
||||
_("Mail text cannot be empty if it is used!"))
|
||||
|
||||
return super().clean()
|
||||
return text
|
||||
|
||||
def save(self, commit: bool = True):
|
||||
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']
|
||||
else:
|
||||
# convert HTML content to text content
|
||||
|
|
|
|||
|
|
@ -1,3 +1,91 @@
|
|||
import logging
|
||||
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