diff --git a/mod/quiz/classes/quiz_attempt.php b/mod/quiz/classes/quiz_attempt.php index aacf15a5256..d70ca51543d 100644 --- a/mod/quiz/classes/quiz_attempt.php +++ b/mod/quiz/classes/quiz_attempt.php @@ -2323,6 +2323,9 @@ class quiz_attempt { public function get_number_of_unanswered_questions(): int { $totalunanswered = 0; foreach ($this->get_slots() as $slot) { + if (!$this->is_real_question($slot)) { + continue; + } $questionstate = $this->get_question_state($slot); if ($questionstate == question_state::$todo || $questionstate == question_state::$invalid) { $totalunanswered++; diff --git a/mod/quiz/tests/attempt_walkthrough_test.php b/mod/quiz/tests/attempt_walkthrough_test.php index c2a294f33ff..6fec8add16a 100644 --- a/mod/quiz/tests/attempt_walkthrough_test.php +++ b/mod/quiz/tests/attempt_walkthrough_test.php @@ -58,11 +58,13 @@ class attempt_walkthrough_test extends \advanced_testcase { $saq = $questiongenerator->create_question('shortanswer', null, ['category' => $cat->id]); $numq = $questiongenerator->create_question('numerical', null, ['category' => $cat->id]); $matchq = $questiongenerator->create_question('match', null, ['category' => $cat->id]); + $description = $questiongenerator->create_question('description', null, ['category' => $cat->id]); // Add them to the quiz. quiz_add_quiz_question($saq->id, $quiz); quiz_add_quiz_question($numq->id, $quiz); quiz_add_quiz_question($matchq->id, $quiz); + quiz_add_quiz_question($description->id, $quiz); // Make a user to do the quiz. $user1 = $this->getDataGenerator()->create_user(); @@ -77,7 +79,7 @@ class attempt_walkthrough_test extends \advanced_testcase { $attempt = quiz_create_attempt($quizobj, 1, false, $timenow, false, $user1->id); quiz_start_new_attempt($quizobj, $quba, $attempt, 1, $timenow); - $this->assertEquals('1,2,3,0', $attempt->layout); + $this->assertEquals('1,2,3,4,0', $attempt->layout); quiz_attempt_save_started($quizobj, $quba, $attempt);