Merge branch 'mdl55979-master' of https://github.com/tlock/moodle
authorAndrew Nicols <andrew@nicols.co.uk>
Mon, 17 Jul 2017 04:29:00 +0000 (12:29 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Mon, 17 Jul 2017 04:29:00 +0000 (12:29 +0800)
mod/quiz/classes/structure.php
mod/quiz/tests/structure_test.php

index ba7f3a3..aae5c24 100644 (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;
         }
 
index dd13daa..9874635 100644 (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'),