def test_contains_question_with_two_choices(self): question_list = mixer.blend('questions.QuestionList') question = mixer.blend('questions.Question', question_list=question_list) mixer.cycle(2).blend('questions.QuestionChoice', question=question) assert question_list in QuestionList.objects.not_contains_only_questions_with_no_choices( )
def test_question_with_not_selected_single_choice(self): question = mixer.blend('questions.Question') choice = mixer.blend('questions.QuestionChoice', question=question) assert list(question.get_choices_percentage()) == [{ 'choice': choice.id, 'percent': 0 }]
def answered_question_list(cls, question_list, user): for question in question_list.questions.iterator(): random_choice = question.choices.order_by('?').first() mixer.blend('answers.Answer', question=question, choice=random_choice, user=user) question_list.refresh_from_db() return question_list
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_not_selected_by_any_user_question_choices(self): question = mixer.blend('questions.Question') choice1 = mixer.blend('questions.QuestionChoice', question=question) choice2 = mixer.blend('questions.QuestionChoice', question=question) assert list(question.get_choices_percentage()) == [ { 'choice': choice1.id, 'percent': 0 }, { 'choice': choice2.id, 'percent': 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 }, ]
def question_list(cls, num_questions, num_choices): quest_list = mixer.blend('questions.QuestionList', has_published=True) [ cls.question(num_choices, question_list=quest_list) for _ in range(num_questions) ] quest_list.refresh_from_db() return quest_list
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]
def _create_user(self, god_mode=True): user_opts = dict() if god_mode: user_opts = { 'is_staff': True, 'is_superuser': True, } user = mixer.blend('a12n.User', **user_opts) self.password = ''.join([random.choice(string.hexdigits) for _ in range(0, 6)]) user.set_password(self.password) user.save() return user
def test_question_without_choices(self): question = mixer.blend('questions.Question') assert list(question.get_choices_percentage()) == []
def test_not_contains_empty_list(self): empty_list = mixer.blend('questions.QuestionList') assert empty_list not in QuestionList.objects.has_at_least_one_question( )
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 setUpTestData(cls): cls.user = mixer.blend('auth.User')
def test_list_not_contains_questions(self): question_list = mixer.blend('questions.QuestionList') assert question_list.has_passed_by(self.user) is False
def test_question_without_choices(self): question = mixer.blend('questions.Question') assert question not in Question.objects.has_choices()
def test_not_contains_question_with_zero_choices(self): question_list = mixer.blend('questions.QuestionList') mixer.blend('questions.Question', question_list=question_list) assert question_list not in QuestionList.objects.not_contains_only_questions_with_no_choices( )
def test_contains_list_with_more_than_one_question(self): list_with_two_questions = mixer.blend('questions.QuestionList') mixer.cycle(2).blend('questions.Question', question_list=list_with_two_questions) assert list_with_two_questions in QuestionList.objects.has_at_least_one_question( )
def test_contains_list_with_single_question(self): list_with_one_question = mixer.blend('questions.QuestionList') mixer.blend('questions.Question', question_list=list_with_one_question) assert list_with_one_question in QuestionList.objects.has_at_least_one_question( )
def question(cls, num_choices, **kwargs): quest = mixer.blend('questions.Question', **kwargs) mixer.cycle(num_choices).blend('questions.QuestionChoice', question=quest) quest.refresh_from_db() return quest