diff options
author | Prabhu Ramachandran | 2017-10-25 15:43:24 +0530 |
---|---|---|
committer | GitHub | 2017-10-25 15:43:24 +0530 |
commit | 07e5a3c831ad351d47de54db7179303be3506c10 (patch) | |
tree | 30a65b459b04ba8b5346fa32af601d12645ecf2e /yaksh/test_models.py | |
parent | 4e7d09eae252c6d89d2fecfe18ffce46e4421eb0 (diff) | |
parent | 90402ae9b0f2d4038099e9ea4e39f832063dd0dd (diff) | |
download | online_test-07e5a3c831ad351d47de54db7179303be3506c10.tar.gz online_test-07e5a3c831ad351d47de54db7179303be3506c10.tar.bz2 online_test-07e5a3c831ad351d47de54db7179303be3506c10.zip |
Merge pull request #367 from ankitjavalkar/fix-revisit-with-one-q
Fix revisit with one question
Diffstat (limited to 'yaksh/test_models.py')
-rw-r--r-- | yaksh/test_models.py | 94 |
1 files changed, 86 insertions, 8 deletions
diff --git a/yaksh/test_models.py b/yaksh/test_models.py index ea0cfca..71969fc 100644 --- a/yaksh/test_models.py +++ b/yaksh/test_models.py @@ -549,12 +549,20 @@ class AnswerPaperTestCases(unittest.TestCase): self.quiz = Quiz.objects.get(description='demo quiz 1') self.question_paper = QuestionPaper(quiz=self.quiz, total_marks=3) self.question_paper.save() - self.questions = Question.objects.all()[0:3] + self.quiz2 = Quiz.objects.get(description='demo quiz 2') + self.qtn_paper_with_single_question = QuestionPaper( + quiz=self.quiz2, total_marks=3 + ) + self.qtn_paper_with_single_question.save() + + all_questions = Question.objects.all() + self.questions = all_questions[0:3] self.start_time = timezone.now() self.end_time = self.start_time + timedelta(minutes=20) - self.question1 = self.questions[0] - self.question2 = self.questions[1] - self.question3 = self.questions[2] + self.question1 = all_questions[0] + self.question2 = all_questions[1] + self.question3 = all_questions[2] + self.question4 = all_questions[3] # create answerpaper self.answerpaper = AnswerPaper(user=self.user, @@ -597,6 +605,33 @@ class AnswerPaperTestCases(unittest.TestCase): ) self.answerpaper.answers.add(self.answer1) + # create an answerpaper with only one question + self.answerpaper_single_question = AnswerPaper(user=self.user, + question_paper=self.question_paper, + start_time=self.start_time, + end_time=self.end_time, + user_ip=self.ip + ) + self.attempted_papers = AnswerPaper.objects.filter( + question_paper=self.question_paper, + user=self.user + ) + self.qtn_paper_with_single_question.fixed_questions.add(self.question4) + already_attempted = self.attempted_papers.count() + self.answerpaper_single_question.attempt_number = already_attempted + 1 + self.answerpaper_single_question.save() + self.answerpaper_single_question.questions.add(self.question4) + self.answerpaper_single_question.questions_unanswered.add(self.question4) + self.answerpaper_single_question.save() + # answers for the Answer Paper + self.single_answer = Answer(question=self.question4, + answer="Demo answer", + correct=True, marks=1, + error=json.dumps([]) + ) + self.single_answer.save() + self.answerpaper.answers.add(self.single_answer) + self.question1.language = 'python' self.question1.test_case_type = 'standardtestcase' self.question1.summary = "Question1" @@ -656,6 +691,47 @@ class AnswerPaperTestCases(unittest.TestCase): self.user2, self.ip, 1 ) + def test_returned_question_is_not_none(self): + # Test add_completed_question and next_question + # When all questions are answered + + # Before questions are answered + self.assertEqual(self.answerpaper_single_question.questions_left(), 1) + + current_question = self.answerpaper_single_question.add_completed_question( + self.question4.id + ) + + + # Then + self.assertEqual( + self.answerpaper_single_question.questions_answered.all()[0], + self.question4 + ) + self.assertEqual(self.answerpaper_single_question.questions_left(), 0) + self.assertIsNotNone(current_question) + self.assertEqual(current_question.summary, "Q4") + + # When + next_question = self.answerpaper_single_question.next_question( + self.question4.id + ) + + # Then + self.assertEqual(self.answerpaper_single_question.questions_left(), 0) + self.assertIsNotNone(next_question) + self.assertEqual(next_question.summary, "Q4") + + # When + current_question = self.answerpaper_single_question.get_current_question( + self.answerpaper_single_question.questions.all() + ) + + # Then + self.assertEqual(self.answerpaper_single_question.questions_left(), 0) + self.assertIsNotNone(current_question) + self.assertEqual(current_question.summary, "Q4") + def test_validate_and_regrade_mcc_correct_answer(self): # Given mcc_answer = [str(self.mcc_based_testcase.id)] @@ -786,6 +862,7 @@ class AnswerPaperTestCases(unittest.TestCase): # Test completed_question() method of Answer Paper question = self.answerpaper.add_completed_question(self.question1.id) + self.assertIsNotNone(question) self.assertEqual(self.answerpaper.questions_left(), 2) # Test next_question() method of Answer Paper @@ -817,7 +894,6 @@ class AnswerPaperTestCases(unittest.TestCase): # Then self.assertTrue(next_question_id is not None) - self.assertEqual(next_question_id.summary, "Question1") # Given, last question in the list @@ -851,11 +927,12 @@ class AnswerPaperTestCases(unittest.TestCase): # When all questions are answered current_question = self.answerpaper.add_completed_question( - self.question2.id - ) + self.question2.id + ) # Then self.assertEqual(self.answerpaper.questions_left(), 1) + self.assertIsNotNone(current_question) self.assertEqual(current_question.summary, "Question3") # When @@ -865,6 +942,7 @@ class AnswerPaperTestCases(unittest.TestCase): # Then self.assertEqual(self.answerpaper.questions_left(), 0) + self.assertIsNotNone(current_question) self.assertTrue(current_question == self.answerpaper.questions.all()[0]) # When @@ -898,7 +976,7 @@ class AnswerPaperTestCases(unittest.TestCase): first_answer_obj = first_answer['answer'] self.assertEqual(first_answer_obj.answer, 'Demo answer') self.assertTrue(first_answer_obj.correct) - self.assertEqual(len(answered), 2) + self.assertEqual(len(answered), 3) def test_is_answer_correct(self): self.assertTrue(self.answerpaper.is_answer_correct(self.questions[0])) |