def test_setting_answer_on_question_by_the_same_user_second_time(self):
        question_list = Factory.question_list(num_questions=3, num_choices=4)
        question_list = Factory.answered_question_list(question_list,
                                                       self.user)
        questions = question_list.questions.all()

        response = self.c.post(
            f'/api/v1/question_list/{question_list.id}/set_answers/', {
                'answers':
                json.dumps([
                    {
                        'question': questions[0].id,
                        'choice': self._get_random_choice_id(questions[0])
                    },
                    {
                        'question': questions[1].id,
                        'choice': self._get_random_choice_id(questions[1])
                    },
                    {
                        'question': questions[2].id,
                        'choice': self._get_random_choice_id(questions[2])
                    },
                ])
            })
        assert response.status_code == status.HTTP_400_BAD_REQUEST
        assert response.data == ['the same user can`t answer on quiz twice']
    def test_keeping_order(self):
        qlist = mixer.blend('questions.QuestionList')
        q1 = Factory.question(num_choices=2, question_list=qlist)
        q2 = Factory.question(num_choices=0, question_list=qlist)
        q3 = Factory.question(num_choices=3, question_list=qlist)
        q4 = Factory.question(num_choices=1, question_list=qlist)
        q5 = Factory.question(num_choices=2, question_list=qlist)
        qlist.set_question_order([q1.id, q5.id, q3.id, q4.id, q2.id])

        assert list(qlist.get_questions()) == [q1, q5, q3]
Example #3
0
 def test_only_one_choice_was_selected(self):
     question = mixer.blend('questions.Question')
     choice1 = mixer.blend('questions.QuestionChoice', question=question)
     choice2 = mixer.blend('questions.QuestionChoice', question=question)
     Factory.answered_question_choice(choice1, num_answers=2)
     assert list(question.get_choices_percentage()) == [
         {
             'choice': choice1.id,
             'percent': 100
         },
         {
             'choice': choice2.id,
             'percent': 0
         },
     ]
Example #4
0
 def _create_question_with_answers(self, answers):
     question = mixer.blend('questions.Question')
     choice1 = mixer.blend('questions.QuestionChoice', question=question)
     choice2 = mixer.blend('questions.QuestionChoice', question=question)
     choice3 = mixer.blend('questions.QuestionChoice', question=question)
     Factory.answered_question_choice(choice1, num_answers=answers[0])
     Factory.answered_question_choice(choice2, num_answers=answers[1])
     Factory.answered_question_choice(choice3, num_answers=answers[2])
     return question, choice1, choice2, choice3
    def test_setting_answers(self):
        question_list = Factory.question_list(num_questions=3, num_choices=4)
        questions = question_list.questions.all()
        choices = [
            self._get_random_choice_id(question) for question in questions
        ]

        response = self.c.post(
            f'/api/v1/question_list/{question_list.id}/set_answers/', {
                'answers':
                json.dumps([
                    {
                        'question': questions[0].id,
                        'choice': choices[0]
                    },
                    {
                        'question': questions[1].id,
                        'choice': choices[1]
                    },
                    {
                        'question': questions[2].id,
                        'choice': choices[2]
                    },
                ])
            })

        assert response.status_code == status.HTTP_200_OK

        assert Answer.objects.filter(user=self.user,
                                     question=questions[0],
                                     choice_id=choices[0]).exists() is True
        assert Answer.objects.filter(user=self.user,
                                     question=questions[1],
                                     choice_id=choices[1]).exists() is True
        assert Answer.objects.filter(user=self.user,
                                     question=questions[2],
                                     choice_id=choices[2]).exists() is True
 def test_not_contains_question_with_single_choice(self):
     qlist = mixer.blend('questions.QuestionList')
     question = Factory.question(num_choices=1, question_list=qlist)
     assert question not in qlist.get_questions()
 def test_given_user_not_answer_on_any_questions_in_list(self):
     question_list = Factory.question_list(num_questions=2, num_choices=2)
     assert question_list.has_passed_by(self.user) is False
 def test_given_user_answered_questions_in_list(self):
     question_list = Factory.question_list(num_questions=2, num_choices=3)
     question_list = Factory.answered_question_list(question_list,
                                                    self.user)
     assert question_list.has_passed_by(self.user) is True
Example #9
0
 def test_question_with_two_choices(self):
     question = Factory.question(num_choices=2)
     assert question in Question.objects.has_choices()
Example #10
0
 def test_question_with_single_choice(self):
     question = Factory.question(num_choices=1)
     assert question not in Question.objects.has_choices()
 def setUpTestData(cls):
     cls.question_list = Factory.question_list(num_questions=3,
                                               num_choices=4)
     cls.questions = cls.question_list.questions.all()