diff --git a/mod/quiz/classes/quiz_attempt.php b/mod/quiz/classes/quiz_attempt.php index 5a90b9baf23..01496d5db3c 100644 --- a/mod/quiz/classes/quiz_attempt.php +++ b/mod/quiz/classes/quiz_attempt.php @@ -2324,6 +2324,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 21a2c557260..57465bb7734 100644 --- a/mod/quiz/tests/attempt_walkthrough_test.php +++ b/mod/quiz/tests/attempt_walkthrough_test.php @@ -61,11 +61,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(); @@ -80,7 +82,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);