MDL-47065 notes: don't add blank notes
authorDan Poltawski <dan@moodle.com>
Thu, 5 Nov 2015 14:13:47 +0000 (14:13 +0000)
committerDan Poltawski <dan@moodle.com>
Thu, 12 Nov 2015 09:56:14 +0000 (09:56 +0000)
Previously the logic was wrong and was proceeding to add a note
when content was missing.

Also add behat coverage for adding notes to participants (this test is
not perfect, but better than zero coverage we had before).

notes/tests/behat/participants_notes.feature [new file with mode: 0644]
user/addnote.php

diff --git a/notes/tests/behat/participants_notes.feature b/notes/tests/behat/participants_notes.feature
new file mode 100644 (file)
index 0000000..50e35d9
--- /dev/null
@@ -0,0 +1,41 @@
+@core @core_note
+Feature: Add notes to course participants
+  In order to share information with other staff
+  As a teacher
+  I need to add notes from the course particpants list
+
+  Scenario: An teacher can add multiple notes
+    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 | format |
+      | Course 1 | C1 | topics |
+    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 follow "Participants"
+    And I set the field with xpath "//tr[contains(normalize-space(.), 'Student 1')]//input[@type='checkbox']" to "1"
+    And I set the field with xpath "//tr[contains(normalize-space(.), 'Student 2')]//input[@type='checkbox']" to "1"
+    And I set the field "With selected users..." to "Add a new note"
+    And I press "OK"
+    # Add a note to student 1, but leave student 2 empty.
+    When I set the field with xpath "//tr[contains(normalize-space(.), 'Student 1')]//textarea" to "Student 1 needs to pick up his game"
+    And I set the field with xpath "//tr[contains(normalize-space(.), 'Student 2')]//textarea" to ""
+    And I press "Save changes"
+    And I follow "Student 1"
+    And I follow "Notes"
+    # Student 1 has note from Teacher
+    Then I should see "Teacher" in the "region-main" "region"
+    And I should see "Student 1 needs to pick up his game"
+    And I follow "Participants"
+    And I follow "Student 2"
+    And I follow "Notes"
+    # Terrible way to verify the absence of a note..
+    And I should not see "Teacher" in the "region-main" "region"
index 540423a..8155496 100644 (file)
@@ -54,7 +54,8 @@ if (!empty($users) && confirm_sesskey()) {
     $note->courseid = $id;
     $note->format = FORMAT_PLAIN;
     foreach ($users as $k => $v) {
-        if (!$user = $DB->get_record('user', array('id' => $v)) || empty($contents[$k])) {
+        $user = $DB->get_record('user', array('id' => $v));
+        if (!$user || empty($contents[$k])) {
             continue;
         }
         $note->id = 0;