diff --git a/mod/assign/gradeform.php b/mod/assign/gradeform.php index 2aab572bab6..598a1b51f85 100644 --- a/mod/assign/gradeform.php +++ b/mod/assign/gradeform.php @@ -89,7 +89,7 @@ class mod_assign_grade_form extends moodleform { } if ($instance->grade > 0) { - if (unformat_float($data['grade']) === null && (!empty($data['grade']))) { + if (!unformat_float($data['grade'], true) && (!empty($data['grade']))) { $errors['grade'] = get_string('invalidfloatforgrade', 'assign', $data['grade']); } else if (unformat_float($data['grade']) > $instance->grade) { $errors['grade'] = get_string('gradeabovemaximum', 'assign', $instance->grade); diff --git a/mod/assign/tests/behat/display_error_message_onbadformat.feature b/mod/assign/tests/behat/display_error_message_onbadformat.feature new file mode 100644 index 00000000000..d6db5ab2c8e --- /dev/null +++ b/mod/assign/tests/behat/display_error_message_onbadformat.feature @@ -0,0 +1,66 @@ +@mod @mod_assign +Feature: Check that the assignment grade can not be input in a wrong format. + In order to ensure that the grade is entered in the right format + As a teacher + I need to grade a student and ensure that the grade should be correctly entered + + @javascript + Scenario: Error in the decimal separator , + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@example.com | + | student1 | Student | 1 | student10@example.com | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + And the following "groups" exist: + | name | course | idnumber | + | Group 1 | C1 | G1 | + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + And I add a "Assignment" to section "1" and I fill the form with: + | Assignment name | Test assignment name | + | Description | Test assignment description | + | Use marking workflow | Yes | + When I follow "Test assignment name" + Then I follow "View/grade all submissions" + And I click on "Grade Student 1" "link" in the "Student 1" "table_row" + And I set the field "Grade out of 100" to "50,,6" + And I press "Save changes" + And I should see "The grade provided could not be understood: 50,,6" + + @javascript + Scenario: Error in the decimal separator . + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@example.com | + | student1 | Student | 1 | student10@example.com | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + And the following "groups" exist: + | name | course | idnumber | + | Group 1 | C1 | G1 | + And I log in as "teacher1" + And I follow "Course 1" + And I turn editing mode on + And I add a "Assignment" to section "1" and I fill the form with: + | Assignment name | Test assignment name | + | Description | Test assignment description | + | Use marking workflow | Yes | + When I follow "Test assignment name" + Then I follow "View/grade all submissions" + And I click on "Grade Student 1" "link" in the "Student 1" "table_row" + And I set the field "Grade out of 100" to "50..6" + And I press "Save changes" + And I should see "The grade provided could not be understood: 50..6" +