MDL-55979 quiz: Fix error moving question from last page

When moving the last question from the last page to the last slot of the previous page would show the error in the error
log but move successfully.
This commit is contained in:
Tim Lock 2016-09-19 10:14:07 +09:30
parent 932bc91cb4
commit 72b8806abc
2 changed files with 20 additions and 1 deletions

View file

@ -715,7 +715,8 @@ class structure {
}
$followingslotnumber = $moveafterslotnumber + 1;
if ($followingslotnumber == $movingslotnumber) {
// Prevent checking against non-existance slot when already at the last slot.
if ($followingslotnumber == $movingslotnumber && !$this->is_last_slot_in_quiz($followingslotnumber)) {
$followingslotnumber += 1;
}

View file

@ -315,6 +315,24 @@ class mod_quiz_structure_testcase extends advanced_testcase {
), $structure);
}
public function test_move_last_slot_to_previous_page_emptying_the_last_page() {
$quizobj = $this->create_test_quiz(array(
array('TF1', 1, 'truefalse'),
array('TF2', 2, 'truefalse'),
));
$structure = \mod_quiz\structure::create_for_quiz($quizobj);
$idtomove = $structure->get_question_in_slot(2)->slotid;
$idmoveafter = $structure->get_question_in_slot(1)->slotid;
$structure->move_slot($idtomove, $idmoveafter, '1');
$structure = \mod_quiz\structure::create_for_quiz($quizobj);
$this->assert_quiz_layout(array(
array('TF1', 1, 'truefalse'),
array('TF2', 1, 'truefalse'),
), $structure);
}
public function test_end_of_one_section_to_start_of_next() {
$quizobj = $this->create_test_quiz(array(
array('TF1', 1, 'truefalse'),