Mercurial > public > sg101
diff gpp/contests/tests/view_tests.py @ 540:51fa1e0ca218
For #243, create a contests application.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 09 Jan 2012 01:13:08 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpp/contests/tests/view_tests.py Mon Jan 09 01:13:08 2012 +0000 @@ -0,0 +1,123 @@ +""" +View tests for the contests application. + +""" +import datetime +from django.test import TestCase +from django.contrib.auth.models import User +from django.core.urlresolvers import reverse +from django.utils import simplejson + +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) + + json = simplejson.loads(response.content) + self.assertTrue(json['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) + + json = simplejson.loads(response.content) + self.failIf(json['entered']) + + contest = Contest.objects.get(pk=self.contest_id) + self.failIf(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)