diff --git a/mod/scorm/mod_form.php b/mod/scorm/mod_form.php index 1861198568d..758ef900fdf 100644 --- a/mod/scorm/mod_form.php +++ b/mod/scorm/mod_form.php @@ -345,7 +345,7 @@ class mod_scorm_mod_form extends moodleform_mod { $cvalues[$key] = 1; } } - } else if (empty($this->_instance)) { + } else if (empty($this->_instance) && !array_key_exists($completionstatusrequiredel, $defaultvalues)) { // When in add mode, set a default completion rule that requires the SCORM's status be set to "Completed". $cvalues[4] = 1; } diff --git a/mod/scorm/tests/behat/default_completion.feature b/mod/scorm/tests/behat/default_completion.feature new file mode 100644 index 00000000000..d9f400b9dd6 --- /dev/null +++ b/mod/scorm/tests/behat/default_completion.feature @@ -0,0 +1,115 @@ +@mod @mod_scorm @core_completion +Feature: Scorm activity default completion + In order to make easier for teachers to set completion conditions + As a teacher or admin + I need to be able to set default condition completion + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@example.com | + And the following "course" exists: + | fullname | Course 1 | + | shortname | C1 | + | enablecompletion | 1 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + + @javascript + Scenario: Completion conditions when there is no default set at site or course level. + Given I log in as "teacher1" + And I am on "Course 1" course homepage with editing mode on + And I press "Add an activity or resource" + When I click on "Add a new SCORM" "link" in the "Add an activity or resource" "dialogue" + And I expand all fieldsets + Then the field "None" matches value "1" + And the field "Add requirements" matches value "0" + And I set the field "Add requirements" to "1" + And the field "completionstatusrequired[4]" matches value "1" + And the field "completionstatusrequired[2]" matches value "0" + + @javascript + Scenario: Completion conditions when default completion is set at site level but not at course level. + Given I log in as "admin" + And I navigate to "Courses > Default settings > Default activity completion" in site administration + And I click on "Expand SCORM" "button" + And I set the following fields to these values: + | id_completion_scorm_2 | 1 | + | completionview_scorm | 1 | + | completionstatusrequired_scorm[4] | 0 | + | completionstatusrequired_scorm[2] | 0 | + And I click on "Save changes" "button" in the "[data-region='activitycompletion-scorm']" "css_element" + And I am on "Course 1" course homepage with editing mode on + And I press "Add an activity or resource" + When I click on "Add a new SCORM" "link" in the "Add an activity or resource" "dialogue" + And I expand all fieldsets + Then the field "None" matches value "0" + And the field "Add requirements" matches value "1" + And the field "completionview" matches value "1" + And the field "completionstatusrequired[4]" matches value "0" + And the field "completionstatusrequired[2]" matches value "0" + + @javascript + Scenario: Completion conditions when default completion is set at course level but not at site level. + Given I am on the "Course 1" course page logged in as teacher1 + And I navigate to "Course completion" in current page administration + And I set the field "Course completion tertiary navigation" to "Default activity completion" + And I click on "Expand SCORM" "button" + And I set the following fields to these values: + | id_completion_scorm_2 | 1 | + | completionview_scorm | 1 | + | completionstatusrequired_scorm[4] | 0 | + | completionstatusrequired_scorm[2] | 0 | + And I click on "Save changes" "button" in the "[data-region='activitycompletion-scorm']" "css_element" + And I am on "Course 1" course homepage with editing mode on + And I press "Add an activity or resource" + When I click on "Add a new SCORM" "link" in the "Add an activity or resource" "dialogue" + And I expand all fieldsets + Then the field "None" matches value "0" + And the field "Add requirements" matches value "1" + And the field "completionview" matches value "1" + And the field "completionstatusrequired[4]" matches value "0" + And the field "completionstatusrequired[2]" matches value "0" + + @javascript + Scenario: Completion conditions when default completion is set at site and course level. + Given I log in as "admin" + And I navigate to "Courses > Default settings > Default activity completion" in site administration + And I click on "Expand SCORM" "button" + And I set the following fields to these values: + | id_completion_scorm_2 | 1 | + | completionview_scorm | 1 | + | completionstatusrequired_scorm[4] | 0 | + | completionstatusrequired_scorm[2] | 0 | + And I click on "Save changes" "button" in the "[data-region='activitycompletion-scorm']" "css_element" + And the following "core_completion > Course defaults" exist: + | course | module | completion | + | C1 | scorm | 1 | + And I am on "Course 1" course homepage with editing mode on + And I press "Add an activity or resource" + When I click on "Add a new SCORM" "link" in the "Add an activity or resource" "dialogue" + And I expand all fieldsets + Then the field "None" matches value "0" + And the field "Students must manually mark the activity as done" matches value "1" + And the field "Add requirements" matches value "0" + + @javascript + Scenario: Completion conditions when 'Passed' is marked as default but 'Completed' is unmarked. + Given I log in as "admin" + And I navigate to "Courses > Default settings > Default activity completion" in site administration + And I click on "Expand SCORM" "button" + And I set the following fields to these values: + | id_completion_scorm_2 | 1 | + | completionview_scorm | 1 | + | completionstatusrequired_scorm[4] | 0 | + | completionstatusrequired_scorm[2] | 1 | + And I click on "Save changes" "button" in the "[data-region='activitycompletion-scorm']" "css_element" + And I am on "Course 1" course homepage with editing mode on + And I press "Add an activity or resource" + When I click on "Add a new SCORM" "link" in the "Add an activity or resource" "dialogue" + And I expand all fieldsets + Then the field "None" matches value "0" + And the field "Add requirements" matches value "1" + And the field "completionview" matches value "1" + And the field "completionstatusrequired[4]" matches value "0" + And the field "completionstatusrequired[2]" matches value "1"