Mercurial > public > sg101
view polls/tests/test_views.py @ 889:ae146e30d588
Ensure the cache is populated correctly.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 10 Feb 2015 20:36:34 -0600 |
parents | 8789299c75b1 |
children |
line wrap: on
line source
""" Tests for the views in the polls application. """ import datetime from django.contrib.auth.models import User from django.test import TestCase from django.core.urlresolvers import reverse from polls.models import Poll, Choice class PollHomeTest(TestCase): def setUp(self): now = datetime.datetime.now() Poll.objects.all().delete() past = now - datetime.timedelta(7) future = now + datetime.timedelta(7) Poll.objects.create(start_date=past, end_date=past, is_enabled=True, question='Old Poll') active = Poll.objects.create(start_date=past, end_date=future, is_enabled=True, question='Active Poll') Poll.objects.create(start_date=future, end_date=future, is_enabled=True, question='Future Poll') Poll.objects.create(start_date=past, end_date=future, is_enabled=False, question='Disabled Poll') choice1 = Choice.objects.create(poll=active, choice="Yes") choice2 = Choice.objects.create(poll=active, choice="Yes") 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 testHome(self): response = self.client.get(reverse('polls-main')) old = response.context['old_polls'] self.assertEqual(len(old), 1) if old: self.assertEqual(old[0].question, 'Old Poll') current = response.context['current_polls'] self.assertEqual(len(current), 1) if current: self.assertEqual(current[0].question, 'Active Poll') self.assertNotContains(response, 'Future Poll') self.assertNotContains(response, 'Disabled Poll') def testFuture(self): poll = Poll.objects.get(question='Future Poll') response = self.client.get(reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.status_code, 404) def testDisabled(self): poll = Poll.objects.get(question='Disabled Poll') response = self.client.get(reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.status_code, 404) def testOld(self): poll = Poll.objects.get(question='Old Poll') response = self.client.get(reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.status_code, 200) def testActive(self): poll = Poll.objects.get(question='Active Poll') response = self.client.get(reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.status_code, 200) def testVoteOld(self): poll = Poll.objects.get(question='Old Poll') response = self.client.get(reverse('polls-vote', kwargs={'poll_id': poll.id}), follow=True) self.assertEqual(len(response.redirect_chain), 1) if response.redirect_chain: self.assertEqual(response.redirect_chain[0][0], 'http://testserver' + reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.redirect_chain[0][1], 302) self.assertEqual(response.status_code, 200) def testVoteActive(self): poll = Poll.objects.get(question='Active Poll') response = self.client.get(reverse('polls-vote', kwargs={'poll_id': poll.id}), follow=True) self.assertEqual(len(response.redirect_chain), 0) self.assertEqual(response.status_code, 200) def testVoteFuture(self): poll = Poll.objects.get(question='Future Poll') response = self.client.get(reverse('polls-vote', kwargs={'poll_id': poll.id}), follow=True) self.assertEqual(len(response.redirect_chain), 1) if response.redirect_chain: self.assertEqual(response.redirect_chain[0][0], 'http://testserver' + reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.redirect_chain[0][1], 302) self.assertEqual(response.status_code, 404) def testVoteDisabled(self): poll = Poll.objects.get(question='Disabled Poll') response = self.client.get(reverse('polls-vote', kwargs={'poll_id': poll.id}), follow=True) self.assertEqual(response.status_code, 404) def testVoteActivePost(self): self._voteTest() def testDeleteVote(self): poll = self._voteTest() response = self.client.post( reverse('polls-delete_vote'), {'poll_id': poll.id}, follow=True) self.assertEqual(len(response.redirect_chain), 1) if response.redirect_chain: self.assertEqual(response.redirect_chain[0][0], 'http://testserver' + reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.redirect_chain[0][1], 302) self.assertEqual(response.status_code, 200) choice = Choice.objects.get(pk=1) self.assertEqual(choice.votes, 0) self.assertTrue(self.user not in choice.voters.all()) def _voteTest(self): poll = Poll.objects.get(question='Active Poll') response = self.client.post( reverse('polls-vote', kwargs={'poll_id': poll.id}), {'choices': 1}, follow=True) self.assertEqual(len(response.redirect_chain), 1) if response.redirect_chain: self.assertEqual(response.redirect_chain[0][0], 'http://testserver' + reverse('polls-detail', kwargs={'poll_id': poll.id})) self.assertEqual(response.redirect_chain[0][1], 302) self.assertEqual(response.status_code, 200) choice = Choice.objects.get(pk=1) self.assertEqual(choice.votes, 1) self.assertTrue(self.user in choice.voters.all()) return poll