Example #1
0
class ContactFormTest(TestCase):
    def setUp(self):
        self.form = ContactForm({'name': 'John Doe',
                                 'email': '*****@*****.**',
                                 'message': 'Long enough' * 10,
                                 'subject': 'Error test',
                                 'author': ''})

    def test_custom_error_messages(self):
        form = ContactForm({'name': '', 'email': '', 'message': '',
                            'subject': '', 'author': ''})
        self.assertFalse(form.is_valid())

        name = form.errors.get('name', None)
        email = form.errors.get('email', None)
        message = form.errors.get('message', None)
        subject = form.errors.get('subject', None)
        author = form.errors.get('author', 'no error')

        self.assertEqual(len(name), 1)
        self.assertEqual(len(email), 1)
        self.assertEqual(len(message), 1)
        self.assertEqual(len(subject), 1)

        self.assertIn('Please provide your name.', name)
        self.assertIn('Please provide your email address.', email)
        self.assertIn('Please provide a message.', message)
        self.assertIn('Please provide a subject.', subject)

        self.assertEqual(author, 'no error')

    def test_message_too_short(self):
        form = ContactForm({'name': 'John Doe',
                            'email': '*****@*****.**',
                            'message': 'Too short',
                            'subject': 'Error test',
                            'author': ''})
        self.assertFalse(form.is_valid())
        message = form.errors.get('message', None)
        self.assertEqual(len(message), 1)
        self.assertIn('Please enter a longer message.', message)

    def test_invalid_name(self):
        form = ContactForm({'name': u'\u201CJohn,\u201D @"<.Doe>"',
                            'email': '*****@*****.**',
                            'message': 'Long enough' * 10,
                            'subject': 'Error test',
                            'author': ''})
        self.assertFalse(form.is_valid())
        name = form.errors.get('name', None)
        self.assertIn(
            'Your name can\'t contain the characters <, >, @, comma, ., or ".',
            name)

    def test_message_valid(self):
        self.assertTrue(self.form.is_valid())
        message = self.form.errors.get('message', 'no error')
        self.assertEqual(message, 'no error')

    def test_email_no_recipient(self):
        self.assertRaises(BadHeaderError, self.form.send_email)
        self.assertEqual(len(mail.outbox), 0)  # Check that an email isn't sent

    def test_email_success(self):
        self.assertTrue(self.form.is_valid())
        result = self.form.send_email(to_email=['*****@*****.**'])

        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, ['*****@*****.**'])
        self.assertEqual(mail.outbox[0].from_email, '"John Doe" '
                                                    '<*****@*****.**>')
        self.assertEqual(mail.outbox[0].body, 'Long enough' * 10)
        self.assertEqual(mail.outbox[0].subject, 'Error test')
        self.assertTrue(result)
Example #2
0
class ContactFormTest(TestCase):
    def setUp(self):
        self.form = ContactForm({'name': 'John Doe',
                                 'email': '*****@*****.**',
                                 'message': 'Long enough' * 10,
                                 'subject': 'Error test',
                                 'author': ''})

    def test_custom_error_messages(self):
        form = ContactForm({'name': '', 'email': '', 'message': '',
                            'subject': '', 'author': ''})
        self.assertFalse(form.is_valid())

        name = form.errors.get('name', None)
        email = form.errors.get('email', None)
        message = form.errors.get('message', None)
        subject = form.errors.get('subject', None)
        author = form.errors.get('author', 'no error')

        self.assertEqual(len(name), 1)
        self.assertEqual(len(email), 1)
        self.assertEqual(len(message), 1)
        self.assertEqual(len(subject), 1)

        self.assertIn('Please provide your name.', name)
        self.assertIn('Please provide your email address.', email)
        self.assertIn('Please provide a message.', message)
        self.assertIn('Please provide a subject.', subject)

        self.assertEqual(author, 'no error')

    def test_message_too_short(self):
        form = ContactForm({'name': 'John Doe',
                            'email': '*****@*****.**',
                            'message': 'Too short',
                            'subject': 'Error test',
                            'author': ''})
        self.assertFalse(form.is_valid())
        message = form.errors.get('message', None)
        self.assertEqual(len(message), 1)
        self.assertIn('Please enter a longer message.', message)

    def test_invalid_name(self):
        form = ContactForm({'name': u'\u201CJohn,\u201D @"<.Doe>"',
                            'email': '*****@*****.**',
                            'message': 'Long enough' * 10,
                            'subject': 'Error test',
                            'author': ''})
        self.assertFalse(form.is_valid())
        name = form.errors.get('name', None)
        self.assertIn(
            'Your name can\'t contain the characters <, >, @, comma, ., or ".',
            name)

    def test_message_valid(self):
        self.assertTrue(self.form.is_valid())
        message = self.form.errors.get('message', 'no error')
        self.assertEqual(message, 'no error')

    def test_email_no_recipient(self):
        self.assertRaises(BadHeaderError, self.form.send_email)
        self.assertEqual(len(mail.outbox), 0)  # Check that an email isn't sent

    def test_email_success(self):
        self.assertTrue(self.form.is_valid())
        result = self.form.send_email(to_email=['*****@*****.**'])

        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].to, ['*****@*****.**'])
        self.assertEqual(mail.outbox[0].from_email, '"John Doe" '
                                                    '<*****@*****.**>')
        self.assertEqual(mail.outbox[0].body, 'Long enough' * 10)
        self.assertEqual(mail.outbox[0].subject, 'Error test')
        self.assertTrue(result)