diff contests/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 contests/tests/view_tests.py@89b240fe9297
children 5977b43499f7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contests/tests/test_views.py	Sun Dec 29 14:45:26 2013 -0600
@@ -0,0 +1,124 @@
+"""
+View tests for the contests application.
+
+"""
+import datetime
+import json
+
+from django.test import TestCase
+from django.contrib.auth.models import User
+from django.core.urlresolvers import reverse
+
+from contests.models import Contest
+
+
+class NoConstestsTestCase(TestCase):
+
+    def test_no_contests(self):
+        response = self.client.get(reverse('contests-index'))
+        self.assertEqual(response.status_code, 200)
+
+        url = reverse('contests-contest', kwargs={'slug': 'test'})
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 404)
+
+
+class ConstestsTestCase(TestCase):
+
+    def setUp(self):
+        now = datetime.datetime.now()
+        start = now - datetime.timedelta(days=7)
+        end = start - datetime.timedelta(days=3)
+
+        user = User.objects.create_user('test_user', '', 'password')
+        user.save()
+
+        c = Contest(title='test',
+                slug='test',
+                description='test',
+                is_public=True,
+                creation_date=start,
+                end_date=end,
+                winner=user,
+                win_date=end + datetime.timedelta(days=1))
+        c.save()
+        self.contest_id = c.id
+
+    def test_contests(self):
+        response = self.client.get(reverse('contests-index'))
+        self.assertEqual(response.status_code, 200)
+
+        url = reverse('contests-contest', kwargs={'slug': 'test'})
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 200)
+
+
+class ContestEntryTestCase(TestCase):
+
+    def setUp(self):
+        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))
+
+        now = datetime.datetime.now()
+        start = now - datetime.timedelta(days=7)
+        end = now + datetime.timedelta(days=3)
+
+        c = Contest(title='test',
+                slug='test',
+                description='test',
+                is_public=True,
+                creation_date=start,
+                end_date=end)
+        c.save()
+        self.contest_id = c.id
+
+    def test_entry_toggle(self):
+        response = self.client.post(reverse('contests-enter'),
+                {'contest_id': self.contest_id},
+                HTTP_X_REQUESTED_WITH='XMLHttpRequest')
+        self.assertEqual(response.status_code, 200)
+
+        c = json.loads(response.content)
+        self.assertTrue(c['entered'])
+
+        contest = Contest.objects.get(pk=self.contest_id)
+        self.assertTrue(self.user in contest.contestants.all())
+
+        response = self.client.post(reverse('contests-enter'),
+                {'contest_id': self.contest_id},
+                HTTP_X_REQUESTED_WITH='XMLHttpRequest')
+        self.assertEqual(response.status_code, 200)
+
+        c = json.loads(response.content)
+        self.assertFalse(c['entered'])
+
+        contest = Contest.objects.get(pk=self.contest_id)
+        self.assertFalse(self.user in contest.contestants.all())
+
+
+class NoPublicConstestsTestCase(TestCase):
+
+    def setUp(self):
+        now = datetime.datetime.now()
+        start = now - datetime.timedelta(days=7)
+        end = start - datetime.timedelta(days=3)
+
+        c = Contest(title='test',
+                slug='test',
+                description='test',
+                is_public=False,
+                creation_date=start,
+                end_date=end)
+        c.save()
+
+    def test_contests(self):
+        response = self.client.get(reverse('contests-index'))
+        self.assertEqual(response.status_code, 200)
+
+        url = reverse('contests-contest', kwargs={'slug': 'test'})
+        response = self.client.get(url)
+        self.assertEqual(response.status_code, 404)