diff contact/tests/test_views.py @ 819:38db6ec61af3

Contact form can prepopulate subject field now. Also updated code for PEP-8 and added tests.
author Brian Neal <bgneal@gmail.com>
date Sat, 20 Sep 2014 14:05:52 -0500
parents
children 79a71b9d0a2a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contact/tests/test_views.py	Sat Sep 20 14:05:52 2014 -0500
@@ -0,0 +1,49 @@
+"""
+Unit tests for the contact application views.
+
+"""
+from django.test import TestCase
+from django.core.urlresolvers import reverse
+from django.core import mail
+
+
+class BaseTestCase(TestCase):
+    """Simple tests to ensure basic functionality."""
+
+    def test_usage(self):
+        url = reverse('contact-form')
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 200)
+
+        post_data = {
+            'name': 'John Doe',
+            'email': 'jdoe@example.com',
+            'subject': 'Test message',
+            'message': 'Testing contact form.',
+        }
+        response = self.client.post(url, data=post_data, follow=True)
+        self.assertRedirects(response, reverse('contact-thanks'))
+
+        self.assertEqual(len(mail.outbox), 1)
+        email = mail.outbox[0]
+        self.assertEqual(len(email.recipients()), 1)
+        self.assertEqual(email.from_email, post_data['email'])
+        self.assertEqual(email.recipients()[0], 'admin@surfguitar101.com')
+        self.assertTrue(post_data['subject'] in email.subject)
+        msg = email.message().as_string()
+        self.assertTrue(post_data['name'] in msg)
+        self.assertTrue(post_data['email'] in msg)
+        self.assertTrue(post_data['message'] in msg)
+
+    def test_honeypot(self):
+        url = reverse('contact-form')
+        post_data = {
+            'name': 'John Doe',
+            'email': 'jdoe@example.com',
+            'subject': 'Test message',
+            'message': 'Testing contact form.',
+            'honeypot': 'some spam',
+        }
+        response = self.client.post(url, data=post_data)
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(len(mail.outbox), 0)