diff bio/tests/test_views.py @ 744:8789299c75b1

Django 1.6: test discovery as per unittest.
author Brian Neal <bgneal@gmail.com>
date Sun, 29 Dec 2013 14:45:26 -0600
parents bio/tests/view_tests.py@ee87ea74d46b
children f01bc9500aef
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bio/tests/test_views.py	Sun Dec 29 14:45:26 2013 -0600
@@ -0,0 +1,76 @@
+"""
+View tests for the bio application.
+
+"""
+from django.contrib.auth.models import User
+from django.test import TestCase
+from django.core.urlresolvers import reverse, NoReverseMatch
+
+
+class MemberSearchTest(TestCase):
+
+    USERNAME = u'John'
+
+    def setUp(self):
+        user = User.objects.create_user(self.USERNAME, '', 'password')
+        user.save()
+
+        self.username = 'test_user'
+        self.pw = 'password'
+        self.user = User.objects.create_user(self.username, '', self.pw)
+        self.user.save()
+        self.assertTrue(self.client.login(username=self.username,
+            password=self.pw))
+
+    def tearDown(self):
+        self.client.logout()
+
+    def testValidName(self):
+        """
+        Test a valid username.
+        """
+
+        response = self.client.post(reverse('bio-member_search'),
+                            {'username': self.USERNAME},
+                            follow=True)
+
+        self.assertEqual(len(response.redirect_chain), 1)
+        if response.redirect_chain:
+            self.assertEqual(response.redirect_chain[0][0],
+                    'http://testserver' + reverse('bio-view_profile',
+                        kwargs={'username': self.USERNAME}))
+            self.assertEqual(response.redirect_chain[0][1], 302)
+
+        self.assertEqual(response.status_code, 200)
+
+    def testInvalidName(self):
+        """
+        Test a invalid username.
+        """
+
+        response = self.client.post(reverse('bio-member_search'),
+                            {'username': self.USERNAME + '!'})
+
+        self.assertEqual(response.status_code, 200)
+        self.assertContains(response, "That username does not exist.")
+
+    def testTrailingSpace(self):
+        """
+        Test a username with a trailing space.
+        """
+
+        try:
+            response = self.client.post(reverse('bio-member_search'),
+                                {'username': self.USERNAME + ' '},
+                                follow=True)
+        except NoReverseMatch:
+            self.fail('bit by a MySQL bug?')
+
+        self.assertEqual(len(response.redirect_chain), 1)
+        if response.redirect_chain:
+            self.assertEqual(response.redirect_chain[0][0],
+                    'http://testserver' + reverse('bio-view_profile',
+                        kwargs={'username': self.USERNAME}))
+            self.assertEqual(response.redirect_chain[0][1], 302)
+
+        self.assertEqual(response.status_code, 200)