MDL-76733 mod_assign: Tidy up availability behat tests

This feature had lots of small issues and it made sense to fix it whilst
investigating a query:

* most of the steps do not require JavaScript
* it uses the UI to set an admin setting, for every scenario:
** only 3-4 of the scenarios actually test that setting
** it is very slow to do it his way when we have a generator step we can use
* we create two assignments in the Background, but each test only uses one of them
* we create the assignments in the Background with a generator, but
  update them to modify various settings in each Scenario using the UI
  when we should just create one assignment for each test and set it up
  correctly for that Scenario
This commit is contained in:
Andrew Nicols 2022-12-21 09:41:48 +08:00
parent 6ca70dd59f
commit 1450dade43
No known key found for this signature in database
GPG Key ID: 6D1E3157C8CFBF14

View File

@ -1,14 +1,11 @@
@mod @mod_assign @javascript
@mod @mod_assign
Feature: Set availability dates for an assignment
In order to control when a student can upload an assignment
As a teacher
I need be able to set availability dates for an assignment
In order to control when a student can upload an assignment
As a teacher
I need be able to set availability dates for an assignment
Background:
Given I log in as "admin"
And I set the following administration settings values:
| Enable timed assignments | 1 |
And the following "courses" exist:
Given the following "courses" exist:
| fullname | shortname |
| Course 1 | C1 |
And the following "users" exist:
@ -21,72 +18,53 @@ Feature: Set availability dates for an assignment
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
| student2 | C1 | student |
And the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| description | Assignment description |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
Given the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Test late assignment with time limit |
| assignsubmission_onlinetext_enabled | 1 |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 1000000 |
| submissiondrafts | 0 |
| allowsubmissionsfromdate_enabled | 0 |
| duedate_enabled | 0 |
| cutoffdate_enabled | 0 |
| gradingduedate_enabled | 0 |
Scenario: Student cannot submit an assignment prior to the 'allow submissions from' date
Given I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Allow submissions from' to tomorrow at noon.
And I set the field "Allow submissions from" to "##tomorrow noon##"
And I press "Save and return to course"
And I log out
Given the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| allowsubmissionsfromdate | ##tomorrow noon## |
When I am on the "Assignment name" Activity page logged in as student1
Then "Add submission" "button" should not exist
And the activity date in "Assignment name" should contain "Opens:"
And the activity date in "Assignment name" should contain "##tomorrow noon##%A, %d %B %Y, %I:%M##"
@javascript
Scenario: Student can see the assignment's due date in the course calendar
Given I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Allow submissions from' to the first day of this month at noon.
And I set the field "Allow submissions from" to "##first day of this month noon##"
# Set 'Due date' to the second day of this month at noon.
And I set the field "Due date" to "##first day of this month noon +24 hours##"
And I press "Save and return to course"
And I turn editing mode on
And I add the "Calendar" block
And I log out
And I am on the "C1" Course page logged in as student1
When I hover over day "2" of this month in the mini-calendar block
Given the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| allowsubmissionsfromdate | ##first day of this month noon## |
| duedate | ##first day of this month noon +24 hours## |
And the following "blocks" exist:
| blockname | contextlevel | reference | pagetypepattern | defaultregion |
| calendar_month | Course | C1 | course-view-* | site-post |
When I am on the "C1" Course page logged in as student1
And I hover over day "2" of this month in the mini-calendar block
Then I should see "Assignment name is due"
@_file_upload
@javascript @_file_upload
Scenario: Student can submit an assignment before the due date
Given I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Allow submissions from' to now.
And I set the field "Allow submissions from" to "##now##"
# Set 'Due date' to 2 days 5 hours 30 minutes in the future.
And I set the field "Due date" to "##+2 days 5 hours 30 minutes##"
And I press "Save and return to course"
And I log out
Given the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| allowsubmissionsfromdate | ##now## |
| duedate | ##+2 days 5 hours 30 minutes## |
When I am on the "Assignment name" Activity page logged in as student1
And the activity date in "Assignment name" should contain "Due:"
And the activity date in "Assignment name" should contain "##+2 days 5 hours 30 minutes##%A, %d %B %Y##"
@ -94,40 +72,37 @@ Feature: Set availability dates for an assignment
And "Add submission" "button" should exist
And I press "Add submission"
And I upload "lib/tests/fixtures/empty.txt" file to "File submissions" filemanager
When I press "Save changes"
Then I should see "Submitted for grading" in the "Submission status" "table_row"
And I log out
And I press "Save changes"
And I should see "Submitted for grading" in the "Submission status" "table_row"
And I am on the "Assignment name" Activity page logged in as teacher1
And I should see "1" in the "Submitted" "table_row"
And I follow "View all submissions"
And I should see "Submitted for grading" in the "Student 1" "table_row"
@_file_upload
@javascript @_file_upload
Scenario: Student can submit an assignment after the due date and the submission is marked as late
Given I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Allow submissions from' to 3 days ago.
And I set the field "Allow submissions from" to "##3 days ago##"
# Set 'Due date' to 2 days 5 hours 30 minutes ago.
And I set the field "Due date" to "##2 days 5 hours 30 minutes ago##"
# Set 'Cut-off date' to tomorrow at noon.
And I set the field "Cut-off date" to "##tomorrow noon##"
And I press "Save and return to course"
And I log out
And I am on the "Assignment name" Activity page logged in as student1
Given the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| allowsubmissionsfromdate | ##3 days ago## |
| duedate | ##2 days 5 hours 30 minutes ago## |
| cutoffdate | ##tomorrow noon## |
When I am on the "Assignment name" Activity page logged in as student1
And the activity date in "Assignment name" should contain "Due:"
And the activity date in "Assignment name" should contain "##2 days 5 hours 30 minutes ago##%A, %d %B %Y##"
And I should see "Assignment is overdue by: 2 days 5 hours" in the "Time remaining" "table_row"
And "Add submission" "button" should exist
And I press "Add submission"
And I upload "lib/tests/fixtures/empty.txt" file to "File submissions" filemanager
When I press "Save changes"
Then I should see "Submitted for grading" in the "Submission status" "table_row"
And I press "Save changes"
And I should see "Submitted for grading" in the "Submission status" "table_row"
And I should see "Assignment was submitted 2 days 5 hours late" in the "Time remaining" "table_row"
And I log out
And I am on the "Assignment name" Activity page logged in as teacher1
And I should see "1" in the "Submitted" "table_row"
@ -135,23 +110,20 @@ Feature: Set availability dates for an assignment
And I should see "Submitted for grading" in the "Student 1" "table_row"
And I should see "2 days 5 hours late" in the "Student 1" "table_row"
@_file_upload
@javascript @_file_upload
Scenario: Student can submit an assignment before the time limit runs out
Given I log in as "admin"
And I change the window size to "large"
And I set the following administration settings values:
| Enable timed assignments | 1 |
And I log out
And I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Time limit' to 20 seconds.
And I set the field "timelimit[enabled]" to "1"
And I set the field "timelimit[number]" to "20"
And I set the field "timelimit[timeunit]" to "seconds"
And I press "Save and return to course"
And I log out
Given the following config values are set as admin:
| config | value | plugin |
| enabletimelimit | 1 | assign |
And the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| timelimit | 20 |
When I am on the "Assignment name" Activity page logged in as student1
And I should see "20 secs" in the "Time limit" "table_row"
And "Begin assignment" "link" should exist
@ -160,57 +132,51 @@ Feature: Set availability dates for an assignment
And "Begin assignment" "button" should exist
And I press "Begin assignment"
And I upload "lib/tests/fixtures/empty.txt" file to "File submissions" filemanager
When I press "Save changes"
And I press "Save changes"
Then I should see "Submitted for grading" in the "Submission status" "table_row"
And I should see "secs under the time limit" in the "Time remaining" "table_row"
@_file_upload
@javascript @_file_upload
Scenario: Assignment with time limit and due date shows how late assignment is submitted relative to due date
Given I log in as "admin"
And I change the window size to "large"
And I set the following administration settings values:
| Enable timed assignments | 1 |
And I log out
And I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Time limit' to 5 seconds.
And I set the field "timelimit[enabled]" to "1"
And I set the field "timelimit[number]" to "5"
And I set the field "timelimit[timeunit]" to "seconds"
# Set 'Due date' to 2 days 5 hours 30 minutes ago.
And I set the field "Due date" to "##2 days 5 hours 30 minutes ago##"
And I press "Save and display"
And I should see "5 secs" in the "Time limit" "table_row"
And I log out
Given the following config values are set as admin:
| config | value | plugin |
| enabletimelimit | 1 | assign |
And the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| timelimit | 2 |
| duedate | ##2 days 5 hours 30 minutes ago## |
When I am on the "Assignment name" Activity page logged in as student1
And I should see "2 secs" in the "Time limit" "table_row"
And "Begin assignment" "link" should exist
And I follow "Begin assignment"
And I wait "1" seconds
And "Begin assignment" "button" should exist
And I press "Begin assignment"
And I wait "5" seconds
And I wait "2" seconds
And I upload "lib/tests/fixtures/empty.txt" file to "File submissions" filemanager
When I press "Save changes"
And I press "Save changes"
Then I should see "Assignment was submitted 2 days 5 hours late" in the "Time remaining" "table_row"
Scenario: Student cannot submit an assignment after the cut-off date
Given I am on the "Assignment name" Activity page logged in as teacher1
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Allow submissions from' to 3 days ago.
And I set the field "Allow submissions from" to "##3 days ago##"
# Set 'Due date' to 2 days 5 hours 30 minutes ago.
And I set the field "Due date" to "##2 days 5 hours 30 minutes ago##"
# Set 'Cut-off date' to yesterday at noon.
And I set the field "Cut-off date" to "##yesterday noon##"
And I press "Save and return to course"
And I log out
Given the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| allowsubmissionsfromdate | ##3 days ago## |
| duedate | ##2 days 5 hours 30 minutes ago## |
| cutoffdate | ##yesterday noon## |
When I am on the "Assignment name" Activity page logged in as student1
Then "Add submission" "button" should not exist
And I log out
And I am on the "Assignment name" Activity page logged in as teacher1
And I should see "0" in the "Submitted" "table_row"
@ -218,18 +184,27 @@ Feature: Set availability dates for an assignment
And I should see "No submission" in the "Student 1" "table_row"
And I should see "Assignment is overdue by: 2 days 5 hours" in the "Student 1" "table_row"
@_file_upload
Scenario: Late submission will be calculated only when the student starts the assignment
Given I am on the "Test late assignment with time limit" Activity page logged in as admin
And I navigate to "Settings" in current page administration
And I follow "Expand all"
# Set 'Time limit' to 5 seconds.
And I set the field "timelimit[enabled]" to "1"
And I set the field "timelimit[number]" to "5"
And I set the field "timelimit[timeunit]" to "seconds"
And I press "Save and return to course"
When I am on the "Test late assignment with time limit" Activity page logged in as student1
And I wait "6" seconds
@javascript @_file_upload
Scenario: Late submission will be calculated only when the student starts the assignm
Given the following config values are set as admin:
| config | value | plugin |
| enabletimelimit | 1 | assign |
And the following "activity" exists:
| activity | assign |
| course | C1 |
| name | Assignment name |
| assignsubmission_file_enabled | 1 |
| assignsubmission_file_maxfiles | 1 |
| assignsubmission_file_maxsizebytes | 0 |
| submissiondrafts | 0 |
| timelimit | 2 |
| allowsubmissionsfromdate_enabled | 0 |
| duedate_enabled | 0 |
| cutoffdate_enabled | 0 |
| gradingduedate_enabled | 0 |
When I am on the "Assignment name" Activity page logged in as student1
And I wait "3" seconds
And I click on "Begin assignment" "link"
And I click on "Begin assignment" "button"
And I upload "lib/tests/fixtures/empty.txt" file to "File submissions" filemanager