示例#1
0
 def test_index_view_with_no_questions(self):
     """
     If no questions exist, an appropriate message should be displayed.
     """
     response = self.client.get(reverse('polls:index'))
     self.assertEqual(response.status_code, 200)
     self.assertContains(response, "No polls are available.")
     self.assertQuerysetEqual(response.context['latest_question_list'], [])
示例#2
0
 def test_index_view_with_a_future_question(self):
     """
     Questions with a pub_date in the future should not be displayed on
     the index page.
     """
     create_question(question_text="Future question.", days=30)
     response = self.client.get(reverse('polls:index'))
     self.assertContains(response, "No polls are available.")
     self.assertQuerysetEqual(response.context['latest_question_list'], [])
示例#3
0
 def test_index_view_with_a_past_question(self):
     """
     Questions with a pub_date in the past should be displayed on the
     index page.
     """
     create_question(question_text="Past question.", days=-30)
     response = self.client.get(reverse('polls:index'))
     self.assertQuerysetEqual(response.context['latest_question_list'],
                              ['<Question: Past question.>'])
示例#4
0
 def test_index_view_with_two_past_questions(self):
     """
     The questions index page may display multiple questions.
     """
     create_question(question_text="Past question 1.", days=-30)
     create_question(question_text="Past question 2.", days=-5)
     response = self.client.get(reverse('polls:index'))
     self.assertQuerysetEqual(
         response.context['latest_question_list'],
         ['<Question: Past question 2.>', '<Question: Past question 1.>'])
示例#5
0
 def test_index_view_with_future_question_and_past_question(self):
     """
     Even if both past and future questions exist, only past questions
     should be displayed.
     """
     create_question(question_text="Past question.", days=-30)
     create_question(question_text="Future question.", days=30)
     response = self.client.get(reverse('polls:index'))
     self.assertQuerysetEqual(response.context['latest_question_list'],
                              ['<Question: Past question.>'])
示例#6
0
 def test_detail_view_with_a_past_question(self):
     """
     The detail view of a question with a pub_date in the past should
     display the question's text.
     """
     past_question = create_question(question_text='Past Question.',
                                     days=-5)
     url = reverse('polls:detail', args=(past_question.id, ))
     response = self.client.get(url)
     self.assertContains(response, past_question.question_text)
示例#7
0
 def test_detail_view_with_a_future_question(self):
     """
     The detail view of a question with a pub_date in the future should
     return a 404 not found.
     """
     future_question = create_question(question_text='Future question.',
                                       days=5)
     url = reverse('polls:detail', args=(future_question.id, ))
     response = self.client.get(url)
     self.assertEqual(response.status_code, 404)
示例#8
0
def vote(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = question.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        # Redisplay the question voting form.
        return render(request, 'polls/detail.html', {
            'question': question,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        # Always return an HttpResponseRedirect after successfully dealing
        # with POST data. This prevents data from being posted twice if a
        # user hits the Back button.
        return HttpResponseRedirect(
            reverse('polls:results', args=(question.id, )))