Merge branch 'MDL-53803_m32v1' of https://github.com/sbourget/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 12 Jul 2016 16:03:08 +0000 (18:03 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 12 Jul 2016 16:03:08 +0000 (18:03 +0200)
mod/choice/lib.php
mod/choice/tests/behat/remove_choice_options.feature [new file with mode: 0644]

index 4e799c8..5d22112 100644 (file)
@@ -180,8 +180,11 @@ function choice_update_instance($choice) {
             $option->id=$choice->optionid[$key];
             if (isset($value) && $value <> '') {
                 $DB->update_record("choice_options", $option);
-            } else { //empty old option - needs to be deleted.
-                $DB->delete_records("choice_options", array("id"=>$option->id));
+            } else {
+                // Remove the empty (unused) option.
+                $DB->delete_records("choice_options", array("id" => $option->id));
+                // Delete any answers associated with this option.
+                $DB->delete_records("choice_answers", array("choiceid" => $choice->id, "optionid" => $option->id));
             }
         } else {
             if (isset($value) && $value <> '') {
diff --git a/mod/choice/tests/behat/remove_choice_options.feature b/mod/choice/tests/behat/remove_choice_options.feature
new file mode 100644 (file)
index 0000000..1563427
--- /dev/null
@@ -0,0 +1,50 @@
+@mod @mod_choice
+Feature: Update a choice activity removing options
+  In order to remove incorrect or unwanted options
+  As a teacher
+  I need to update the choice activity
+
+  Scenario: Update a choice activity that has student responses.
+    Given the following "users" exist:
+      | username | firstname | lastname | email |
+      | teacher1 | Teacher | 1 | teacher1@example.com |
+      | student1 | Student | 1 | student1@example.com |
+      | student2 | Student | 2 | student2@example.com |
+    And the following "courses" exist:
+      | fullname | shortname | category |
+      | Course 1 | C1 | 0 |
+    And the following "course enrolments" exist:
+      | user | course | role |
+      | teacher1 | C1 | editingteacher |
+      | student1 | C1 | student |
+      | student2 | C1 | student |
+    And I log in as "teacher1"
+    And I follow "Course 1"
+    And I turn editing mode on
+    And I add a "Choice" to section "1" and I fill the form with:
+      | Choice name | Choice name |
+      | Description | Choice Description |
+      | option[0] | Option 1 |
+      | option[1] | Option 2 |
+      | option[2] | Option 3 |
+    And I log out
+    And I log in as "student1"
+    And I follow "Course 1"
+    And I choose "Option 3" from "Choice name" choice activity
+    And I should see "Your selection: Option 3"
+    And I should see "Your choice has been saved"
+    And I log out
+    And I log in as "student2"
+    And I follow "Course 1"
+    And I choose "Option 2" from "Choice name" choice activity
+    And I should see "Your selection: Option 2"
+    And I should see "Your choice has been saved"
+    And I log out
+    When I log in as "teacher1"
+    And I follow "Course 1"
+    And I follow "Choice name"
+    And I should see "View 2 responses"
+    And I navigate to "Edit settings" node in "Choice administration"
+    And I set the field "option[2]" to "" 
+    And I press "Save and display"
+    Then I should see "View 1 responses"