Skip to content

Commit

Permalink
Merge branch 'MDL-55360-30-workshopgradepass' of git://github.com/mud…
Browse files Browse the repository at this point in the history
…rd8mz/moodle into MOODLE_30_STABLE
  • Loading branch information
danpoltawski committed Aug 1, 2016
2 parents 32949a7 + 4d5707a commit 7959847
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 8 deletions.
8 changes: 4 additions & 4 deletions mod/workshop/lib.php
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions mod/workshop/mod_form.php
Expand Up @@ -371,9 +371,9 @@ public function validation($data, $files) {
}

// 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']) {
Expand All @@ -383,9 +383,9 @@ public function validation($data, $files) {
}

// 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']) {
Expand Down
91 changes: 91 additions & 0 deletions 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"

0 comments on commit 7959847

Please sign in to comment.