MDL-59369 user: Behat tests involving the Status column
authorJun Pataleta <jun@moodle.com>
Thu, 13 Jul 2017 14:20:10 +0000 (22:20 +0800)
committerJun Pataleta <jun@moodle.com>
Wed, 26 Jul 2017 01:44:33 +0000 (09:44 +0800)
user/tests/behat/edit_user_enrolment.feature [new file with mode: 0644]
user/tests/behat/view_participants.feature

diff --git a/user/tests/behat/edit_user_enrolment.feature b/user/tests/behat/edit_user_enrolment.feature
new file mode 100644 (file)
index 0000000..eaeb4be
--- /dev/null
@@ -0,0 +1,93 @@
+@core @core_user
+Feature: Edit user enrolment
+  In order to manage students' enrolments
+  As a teacher
+  I need to be able to view enrolment details and edit student enrolments in the course participants page
+
+  Background:
+    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           | status |
+      | teacher1  | C1     | editingteacher |    0   |
+      | student1  | C1     | student        |    0   |
+      | student2  | C1     | student        |    1   |
+
+  @javascript
+  Scenario: Edit a user's enrolment
+    Given I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to course participants
+    When I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student1" "table_row"
+    And I should see "Edit Student 1's enrolment"
+    And I set the field "Status" to "Suspended"
+    And I click on "Save changes" "button"
+    And I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student2" "table_row"
+    And I should see "Edit Student 2's enrolment"
+    And I set the field "timeend[enabled]" to "1"
+    And I set the field "timeend[day]" to "1"
+    And I set the field "timeend[month]" to "January"
+    And I set the field "timeend[year]" to "2017"
+    And I set the field "Status" to "Active"
+    And I click on "Save changes" "button"
+    Then I should see "Suspended" in the "student1" "table_row"
+    And I should see "Not current" in the "student2" "table_row"
+
+  @javascript
+  Scenario: Unenrol a student
+    Given I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to course participants
+    When I click on "//a[@data-action='unenrol']" "xpath_element" in the "student1" "table_row"
+    And I click on "Yes" "button"
+    Then I should not see "Student 1" in the "participants" "table"
+
+  @javascript
+  Scenario: View a student's enrolment details
+    Given I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to course participants
+    When I click on "//a[@data-action='showdetails']" "xpath_element" in the "student1" "table_row"
+    Then I should see "Enrolment details"
+    And I should see "Student 1" in the "Full name" "table_row"
+    And I should see "Active" in the "//td[@class='user-enrol-status']" "xpath_element"
+    And I press "Cancel"
+    And I click on "//a[@data-action='showdetails']" "xpath_element" in the "student2" "table_row"
+    And I should see "Enrolment details"
+    And I should see "Student 2" in the "Full name" "table_row"
+    And I should see "Suspended" in the "//td[@class='user-enrol-status']" "xpath_element"
+
+  # Without JS, the user should be redirected to the original edit enrolment form.
+  Scenario: Edit a user's enrolment without JavaScript
+    Given I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to course participants
+    When I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student1" "table_row"
+    And I should see "Student 1"
+    And I set the field "Status" to "Suspended"
+    And I click on "Save changes" "button"
+    And I click on "//a[@data-action='editenrolment']" "xpath_element" in the "student2" "table_row"
+    And I should see "Student 2"
+    And I set the field "timeend[enabled]" to "1"
+    And I set the field "timeend[day]" to "1"
+    And I set the field "timeend[month]" to "January"
+    And I set the field "timeend[year]" to "2017"
+    And I set the field "Status" to "Active"
+    And I click on "Save changes" "button"
+    Then I should see "Suspended" in the "student1" "table_row"
+    And I should see "Not current" in the "student2" "table_row"
+
+  # Without JS, the user should be redirected to the original unenrol confirmation page.
+  Scenario: Unenrol a student
+    Given I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    And I navigate to course participants
+    When I click on "//a[@data-action='unenrol']" "xpath_element" in the "student1" "table_row"
+    And I click on "Continue" "button"
+    Then I should not see "Student 1" in the "participants" "table"
index c972409..532d7c9 100644 (file)
@@ -32,27 +32,27 @@ Feature: View course participants
       | 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        |
-      | student3  | C1     | student        |
-      | student4  | C1     | student        |
-      | student5  | C1     | student        |
-      | student6  | C1     | student        |
-      | student7  | C1     | student        |
-      | student8  | C1     | student        |
-      | student9  | C1     | student        |
-      | student10 | C1     | student        |
-      | student11 | C1     | student        |
-      | student12 | C1     | student        |
-      | student13 | C1     | student        |
-      | student14 | C1     | student        |
-      | student15 | C1     | student        |
-      | student16 | C1     | student        |
-      | student17 | C1     | student        |
-      | student18 | C1     | student        |
-      | student19 | C1     | student        |
+      | user      | course | role           | status | timeend |
+      | teacher1  | C1     | editingteacher |    0   |    0    |
+      | student1  | C1     | student        |    0   |    0    |
+      | student2  | C1     | student        |    0   |    0    |
+      | student3  | C1     | student        |    0   |    0    |
+      | student4  | C1     | student        |    0   |    0    |
+      | student5  | C1     | student        |    0   |    0    |
+      | student6  | C1     | student        |    0   |    0    |
+      | student7  | C1     | student        |    0   |    0    |
+      | student8  | C1     | student        |    0   |    0    |
+      | student9  | C1     | student        |    0   |    0    |
+      | student10 | C1     | student        |    1   |    0    |
+      | student11 | C1     | student        |    0   |  100    |
+      | student12 | C1     | student        |    0   |    0    |
+      | student13 | C1     | student        |    0   |    0    |
+      | student14 | C1     | student        |    0   |    0    |
+      | student15 | C1     | student        |    0   |    0    |
+      | student16 | C1     | student        |    0   |    0    |
+      | student17 | C1     | student        |    0   |    0    |
+      | student18 | C1     | student        |    0   |    0    |
+      | student19 | C1     | student        |    0   |    0    |
 
   @javascript
   Scenario: Use select and deselect all buttons
@@ -222,3 +222,46 @@ Feature: View course participants
     And the field with xpath "//tbody//tr[19]//input[@class='usercheckbox']" matches value "0"
     And the field with xpath "//tbody//tr[20]//input[@class='usercheckbox']" matches value "0"
     And the field with xpath "//tbody//tr[21]//input[@class='usercheckbox']" matches value "0"
+
+  Scenario: View the participants page as a teacher
+    Given I log in as "teacher1"
+    And I am on "Course 1" course homepage
+    When I navigate to course participants
+    Then I should see "Active" in the "student1" "table_row"
+    And I should see "Active" in the "student2" "table_row"
+    And I should see "Active" in the "student3" "table_row"
+    And I should see "Active" in the "student4" "table_row"
+    And I should see "Active" in the "student5" "table_row"
+    And I should see "Active" in the "student6" "table_row"
+    And I should see "Active" in the "student7" "table_row"
+    And I should see "Active" in the "student8" "table_row"
+    And I should see "Active" in the "student9" "table_row"
+    And I should see "Suspended" in the "student10" "table_row"
+    And I should see "Not current" in the "student11" "table_row"
+    And I should see "Active" in the "student12" "table_row"
+    And I should see "Active" in the "student13" "table_row"
+    And I should see "Active" in the "student14" "table_row"
+    And I should see "Active" in the "student15" "table_row"
+    And I should see "Active" in the "student16" "table_row"
+    And I should see "Active" in the "student17" "table_row"
+    And I should see "Active" in the "student18" "table_row"
+    And I should see "Active" in the "student19" "table_row"
+
+  Scenario: View the participants page as a student
+    Given I log in as "student1"
+    And I am on "Course 1" course homepage
+    When I navigate to course participants
+    # Student should not see the status column.
+    Then I should not see "Status" in the "participants" "table"
+    # Student should be able to see the other actively-enrolled students.
+    And I should see "Student 1" in the "participants" "table"
+    And I should see "Student 2" in the "participants" "table"
+    And I should see "Student 3" in the "participants" "table"
+    And I should see "Student 4" in the "participants" "table"
+    And I should see "Student 5" in the "participants" "table"
+    And I should see "Student 6" in the "participants" "table"
+    And I should see "Student 7" in the "participants" "table"
+    And I should see "Student 8" in the "participants" "table"
+    # Suspended and non-current students should not be rendered.
+    And I should not see "Student 10" in the "participants" "table"
+    And I should not see "Student 11" in the "participants" "table"