1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
from django.conf import settings
from django.core import mail
from django.test import RequestFactory
from django.test import TestCase
from django.contrib.sites.models import Site
from contact_form.forms import ContactForm
class ContactFormTests(TestCase):
def test_request_required(self):
"""
Can't instantiate without an HttpRequest.
"""
self.assertRaises(TypeError, ContactForm)
def test_valid_data_required(self):
"""
Can't try to build the message dict unless data is valid.
"""
request = RequestFactory().request()
data = {'name': 'Test',
'body': 'Test message'}
form = ContactForm(request=request, data=data)
self.assertRaises(ValueError, form.get_message_dict)
def test_send(self):
"""
Valid form can and does in fact send email.
"""
request = RequestFactory().request()
data = {'name': 'Test',
'email': 'test@example.com',
'body': 'Test message'}
form = ContactForm(request=request, data=data)
self.assertTrue(form.is_valid())
form.save()
self.assertEqual(1, len(mail.outbox))
message = mail.outbox[0]
self.assertEqual([data['email']],
message.recipients())
self.assertTrue(data['body'] in message.body)
self.assertEqual(settings.DEFAULT_FROM_EMAIL,
message.from_email)
def test_no_sites(self):
"""
Sites integration works with or without installed
contrib.sites.
"""
old_installed = Site._meta.installed
Site._meta.installed = False
request = RequestFactory().request()
data = {'name': 'Test',
'email': 'test@example.com',
'body': 'Test message'}
form = ContactForm(request=request, data=data)
self.assertTrue(form.is_valid())
form.save()
self.assertEqual(1, len(mail.outbox))
Site._meta.installed = old_installed
|