diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index a266e1e7393..6fb41e3e2e7 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -82,11 +82,11 @@ function workshop_add_instance(stdclass $workshop) { $workshop->evaluation = 'best'; if (isset($workshop->gradinggradepass)) { - $workshop->gradinggradepass = unformat_float($workshop->gradinggradepass); + $workshop->gradinggradepass = (float)unformat_float($workshop->gradinggradepass); } if (isset($workshop->submissiongradepass)) { - $workshop->submissiongradepass = unformat_float($workshop->submissiongradepass); + $workshop->submissiongradepass = (float)unformat_float($workshop->submissiongradepass); } // insert the new record so we get the id @@ -150,11 +150,11 @@ function workshop_update_instance(stdclass $workshop) { $workshop->phaseswitchassessment = (int)!empty($workshop->phaseswitchassessment); if (isset($workshop->gradinggradepass)) { - $workshop->gradinggradepass = unformat_float($workshop->gradinggradepass); + $workshop->gradinggradepass = (float)unformat_float($workshop->gradinggradepass); } if (isset($workshop->submissiongradepass)) { - $workshop->submissiongradepass = unformat_float($workshop->submissiongradepass); + $workshop->submissiongradepass = (float)unformat_float($workshop->submissiongradepass); } // todo - if the grading strategy is being changed, we may want to replace all aggregated peer grades with nulls diff --git a/mod/workshop/mod_form.php b/mod/workshop/mod_form.php index 7aee3393ba4..3f93958f534 100644 --- a/mod/workshop/mod_form.php +++ b/mod/workshop/mod_form.php @@ -371,9 +371,9 @@ class mod_workshop_mod_form extends moodleform_mod { } // Check that the submission grade pass is a valid number. - if (isset($data['submissiongradepass'])) { + if (!empty($data['submissiongradepass'])) { $submissiongradefloat = unformat_float($data['submissiongradepass'], true); - if ($submissiongradefloat === false || $submissiongradefloat === null) { + if ($submissiongradefloat === false) { $errors['submissiongradepass'] = get_string('err_numeric', 'form'); } else { if ($submissiongradefloat > $data['grade']) { @@ -383,9 +383,9 @@ class mod_workshop_mod_form extends moodleform_mod { } // Check that the grade pass is a valid number. - if (isset($data['gradinggradepass'])) { + if (!empty($data['gradinggradepass'])) { $gradepassfloat = unformat_float($data['gradinggradepass'], true); - if ($gradepassfloat === false || $gradepassfloat === null) { + if ($gradepassfloat === false) { $errors['gradinggradepass'] = get_string('err_numeric', 'form'); } else { if ($gradepassfloat > $data['gradinggrade']) { diff --git a/mod/workshop/tests/behat/grade_to_pass.feature b/mod/workshop/tests/behat/grade_to_pass.feature new file mode 100644 index 00000000000..da72a7a3ece --- /dev/null +++ b/mod/workshop/tests/behat/grade_to_pass.feature @@ -0,0 +1,91 @@ +@mod @mod_workshop +Feature: Setting grades to pass via workshop editing form + In order to define grades to pass + As a teacher + I can set them in the workshop settings form, without the need to go to the gradebook + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Terry1 | Teacher1 | teacher1@example.com | + And the following "courses" exist: + | fullname | shortname | + | Course1 | c1 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | c1 | editingteacher | + + Scenario: Adding a new workshop with grade to pass field set + Given I log in as "teacher1" + And I follow "Course1" + And I turn editing mode on + When I add a "Workshop" to section "1" and I fill the form with: + | Workshop name | Awesome workshop | + | Description | Grades to pass are set here | + | Submission grade to pass | 45 | + | Assessment grade to pass | 10.5 | + Then I should not see "Adding a new Workshop" + And I follow "Awesome workshop" + And I navigate to "Edit settings" node in "Workshop administration" + And the field "Submission grade to pass" matches value "45.00" + And the field "Assessment grade to pass" matches value "10.50" + + Scenario: Adding a new workshop with grade to pass fields left empty + Given I log in as "teacher1" + And I follow "Course1" + And I turn editing mode on + When I add a "Workshop" to section "1" and I fill the form with: + | Workshop name | Another awesome workshop | + | Description | No grades to pass are set here | + | Submission grade to pass | | + | Assessment grade to pass | | + Then I should not see "Adding a new Workshop" + And I follow "Another awesome workshop" + And I navigate to "Edit settings" node in "Workshop administration" + And the field "Submission grade to pass" matches value "0.00" + And the field "Assessment grade to pass" matches value "0.00" + + Scenario: Adding a new workshop with non-numeric value of a grade to pass + Given I log in as "teacher1" + And I follow "Course1" + And I turn editing mode on + When I add a "Workshop" to section "1" and I fill the form with: + | Workshop name | Almost awesome workshop | + | Description | Invalid grade to pass is set here | + | Assessment grade to pass | You shall not pass! | + Then I should see "Adding a new Workshop" + And I should see "You must enter a number here" + + Scenario: Adding a new workshop with invalid value of a grade to pass + Given I log in as "teacher1" + And I follow "Course1" + And I turn editing mode on + When I add a "Workshop" to section "1" and I fill the form with: + | Workshop name | Almost awesome workshop | + | Description | Invalid grade to pass is set here | + | Assessment grade to pass | 10000000 | + Then I should see "Adding a new Workshop" + And I should see "The grade to pass can not be greater than the maximum possible grade" + + Scenario: Emptying grades to pass fields sets them to zero + Given I log in as "teacher1" + And I follow "Course1" + And I turn editing mode on + And I add a "Workshop" to section "1" and I fill the form with: + | Workshop name | Super awesome workshop | + | Description | Grade to pass are set and then unset here | + | Submission grade to pass | 59.99 | + | Assessment grade to pass | 0.000 | + And I should not see "Adding a new Workshop" + And I follow "Super awesome workshop" + And I navigate to "Edit settings" node in "Workshop administration" + And the field "Submission grade to pass" matches value "59.99" + And the field "Assessment grade to pass" matches value "0.00" + When I set the field "Submission grade to pass" to "" + And I set the field "Assessment grade to pass" to "" + And I press "Save and display" + Then I should not see "Adding a new Workshop" + And I follow "Super awesome workshop" + And I navigate to "Edit settings" node in "Workshop administration" + And the field "Submission grade to pass" matches value "0.00" + And the field "Assessment grade to pass" matches value "0.00"