You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
10 KiB

@mod @mod_attendance @javascript
Feature: Test the various new features in the attendance module
Background:
Given the following "courses" exist:
| fullname | shortname | summary | category | timecreated | timemodified |
| Course 1 | C1 | Prove the attendance activity works | 0 | ##yesterday## | ##yesterday## |
And 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 |
| student3 | Student | 3 | student3@example.com |
| student4 | Student | 4 | student4@example.com |
| student5 | Student | 5 | student5@example.com |
And the following "course enrolments" exist:
| course | user | role | timestart |
| C1 | teacher1 | editingteacher | ##yesterday## |
| C1 | student1 | student | ##yesterday## |
| C1 | student2 | student | ##yesterday## |
| C1 | student3 | student | ##yesterday## |
And I log in as "teacher1"
And I am on "Course 1" course homepage with editing mode on
And I add a "Attendance" to section "1" and I fill the form with:
| Name | Test attendance |
And I log out
Scenario: A teacher can create and update temporary users
Given I log in as "teacher1"
And I am on "Course 1" course homepage
And I follow "Test attendance"
And I follow "Temporary users"
When I set the following fields to these values:
| Full name | Temporary user 1 |
| Email | |
And I press "Add user"
And I set the following fields to these values:
| Full name | Temporary user test 2 |
| Email | tempuser2test@example.com |
And I press "Add user"
Then I should see "Temporary user 1"
And "tempuser2test@example.com" "text" should exist in the "Temporary user test 2" "table_row"
When I click on "Edit user" "link" in the "Temporary user test 2" "table_row"
And the following fields match these values:
| Full name | Temporary user test 2 |
| Email | tempuser2test@example.com |
And I set the following fields to these values:
| Full name | Temporary user 2 |
| Email | tempuser2@example.com |
And I press "Edit user"
Then "tempuser2@example.com" "text" should exist in the "Temporary user 2" "table_row"
When I click on "Delete user" "link" in the "Temporary user 1" "table_row"
And I press "Continue"
Then I should not see "Temporary user 1"
And I should see "Temporary user 2"
Scenario: A teacher can take attendance for temporary users
Given I log in as "teacher1"
And I am on "Course 1" course homepage
And I follow "Test attendance"
And I follow "Temporary users"
And I set the following fields to these values:
| Full name | Temporary user 1 |
| Email | |
And I press "Add user"
And I set the following fields to these values:
| Full name | Temporary user 2 |
| Email | tempuser2@example.com |
And I press "Add user"
And I follow "Add"
And I set the following fields to these values:
| id_addmultiply | 0 |
And I click on "submitbutton" "button"
And I follow "Take attendance"
# Present
And I click on "td.cell.c3 input" "css_element" in the "Student 1" "table_row"
# Late
And I click on "td.cell.c4 input" "css_element" in the "Student 2" "table_row"
# Excused
And I click on "td.cell.c5 input" "css_element" in the "Temporary user 1" "table_row"
# Absent
And I click on "td.cell.c6 input" "css_element" in the "Temporary user 2" "table_row"
And I press "Save attendance"
And I follow "Report"
And "P" "text" should exist in the "Student 1" "table_row"
And "L" "text" should exist in the "Student 2" "table_row"
And "E" "text" should exist in the "Temporary user 1" "table_row"
And "A" "text" should exist in the "Temporary user 2" "table_row"
And I follow "Temporary user 2"
And I should see "Absent"
# Merge user.
When I follow "Test attendance"
And I follow "Temporary users"
And I click on "Merge user" "link" in the "Temporary user 2" "table_row"
And I set the field "Participant" to "Student 3"
And I press "Merge user"
And I follow "Report"
And "P" "text" should exist in the "Student 1" "table_row"
And "L" "text" should exist in the "Student 2" "table_row"
And "E" "text" should exist in the "Temporary user 1" "table_row"
And "A" "text" should exist in the "Student 3" "table_row"
Then I should not see "Temporary user 2"
Scenario: A teacher can select a subset of users for export
Given the following "groups" exist:
| course | name | idnumber |
| C1 | Group1 | Group1 |
| C1 | Group2 | Group2 |
And the following "group members" exist:
| group | user |
| Group1 | student1 |
| Group1 | student2 |
| Group2 | student2 |
| Group2 | student3 |
And I log in as "teacher1"
And I am on "Course 1" course homepage
And I follow "Test attendance"
And I follow "Add"
And I set the following fields to these values:
| id_addmultiply | 0 |
And I click on "submitbutton" "button"
And I follow "Export"
When I set the field "Export specific users" to "Yes"
And I set the field "Group" to "Group1"
Then the "Users to export" select box should contain "Student 1"
And the "Users to export" select box should contain "Student 2"
And the "Users to export" select box should not contain "Student 3"
When I set the field "Group" to "Group2"
Then the "Users to export" select box should contain "Student 2"
And the "Users to export" select box should contain "Student 3"
And the "Users to export" select box should not contain "Student 1"
# Ideally the download would be tested here, but that is difficult to configure.
Scenario: A teacher can create and use multiple status lists
Given I log in as "teacher1"
And I am on "Course 1" course homepage
And I follow "Test attendance"
And I follow "Status set"
And I set the field "jump" to "New set of statuses"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[1]/td[2]/input" to "G"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[1]/td[3]/input" to "Great"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[1]/td[4]/input" to "3"
And I click on "Add" "button" in the ".lastrow" "css_element"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[2]/td[2]/input" to "O"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[2]/td[3]/input" to "OK"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[2]/td[4]/input" to "2"
And I click on "Add" "button" in the ".lastrow" "css_element"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[3]/td[2]/input" to "B"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[3]/td[3]/input" to "Bad"
And I set the field with xpath "//*[@id='preferencesform']/table/tbody/tr[3]/td[4]/input" to "0"
And I click on "Add" "button" in the ".lastrow" "css_element"
And I click on "Update" "button" in the "#preferencesform" "css_element"
And I follow "Add"
And I set the following fields to these values:
9 years ago
| id_addmultiply | 0 |
| Status set | Status set 1 (P L E A) |
| id_sestime_starthour | 10 |
| id_sestime_startminute | 0 |
9 years ago
| id_sestime_endhour | 11 |
And I click on "submitbutton" "button"
And I follow "Add"
And I set the following fields to these values:
9 years ago
| id_addmultiply | 0 |
| Status set | Status set 2 (G O B) |
9 years ago
| id_sestime_starthour | 12 |
| id_sestime_startminute | 0 |
9 years ago
| id_sestime_endhour | 13 |
And I click on "submitbutton" "button"
When I click on "Take attendance" "link" in the "10AM" "table_row"
Then "Set status to «Present»" "link" should exist
And "Set status to «Late»" "link" should exist
And "Set status to «Excused»" "link" should exist
And "Set status to «Absent»" "link" should exist
When I follow "Sessions"
And I click on "Take attendance" "link" in the "12PM" "table_row"
Then "Set status to «Great»" "link" should exist
And "Set status to «OK»" "link" should exist
And "Set status to «Bad»" "link" should exist
Scenario: A teacher can use the radio buttons to set attendance values for all users
Given I log in as "teacher1"
And I am on "Course 1" course homepage
And I follow "Test attendance"
And I follow "Add"
And I set the following fields to these values:
| id_addmultiply | 0 |
And I click on "submitbutton" "button"
And I click on "Take attendance" "link"
And I set the field "Set status for" to "all"
When I click on "setallstatuses" "field" in the ".takelist tbody td.c3" "css_element"
And I press "Save attendance"
And I follow "Report"
Then "L" "text" should exist in the "Student 1" "table_row"
And "L" "text" should exist in the "Student 2" "table_row"
And "L" "text" should exist in the "Student 3" "table_row"
Scenario: A teacher can use the radio buttons to set attendance values for unselected users
Given I log in as "teacher1"
And I am on "Course 1" course homepage
And I follow "Test attendance"
And I follow "Add"
And I set the following fields to these values:
| id_addmultiply | 0 |
And I click on "submitbutton" "button"
And I click on "Take attendance" "link"
And I set the field "Set status for" to "not set"
# Set student 1 as present.
And I click on "td.cell.c3 input" "css_element" in the "Student 1" "table_row"
And I click on "setallstatuses" "field" in the ".takelist tbody td.c3" "css_element"
And I wait until the page is ready
And I press "Save attendance"
When I follow "Report"
Then "P" "text" should exist in the "Student 1" "table_row"
And "L" "text" should exist in the "Student 2" "table_row"
And "L" "text" should exist in the "Student 3" "table_row"