summaryrefslogtreecommitdiff
path: root/yaksh/test_models.py
diff options
context:
space:
mode:
authorPrabhu Ramachandran2017-10-25 15:43:24 +0530
committerGitHub2017-10-25 15:43:24 +0530
commit07e5a3c831ad351d47de54db7179303be3506c10 (patch)
tree30a65b459b04ba8b5346fa32af601d12645ecf2e /yaksh/test_models.py
parent4e7d09eae252c6d89d2fecfe18ffce46e4421eb0 (diff)
parent90402ae9b0f2d4038099e9ea4e39f832063dd0dd (diff)
downloadonline_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.py94
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]))