From ece94bb4e2dc8027d2f2b439eb72c6fb941bf1e0 Mon Sep 17 00:00:00 2001 From: Zig Tan Date: Tue, 12 Dec 2017 09:01:23 +0800 Subject: [PATCH] MDL-42676 mod_assign: Display message fix when using grade override Logic fix in mod_assign locallib.php to correctly set the submissionlockedstatus, and added associated unit test in test_grade_submission_override() --- mod/assign/locallib.php | 12 ++++---- mod/assign/tests/locallib_test.php | 47 ++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index ae24d0f7db8..57981d53d42 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3774,7 +3774,7 @@ class assign { $grade = $this->get_user_grade($userid, false, $attemptnumber); $flags = $this->get_user_flags($userid, false); if ($this->can_view_submission($userid)) { - $gradelocked = ($flags && $flags->locked) || $this->grading_disabled($userid); + $submissionlocked = ($flags && $flags->locked); $extensionduedate = null; if ($flags) { $extensionduedate = $flags->extensionduedate; @@ -3791,7 +3791,7 @@ class assign { $submissiongroup, $notsubmitted, $this->is_any_submission_plugin_enabled(), - $gradelocked, + $submissionlocked, $this->is_graded($userid), $instance->duedate, $instance->cutoffdate, @@ -3972,7 +3972,7 @@ class assign { $grade = $this->get_user_grade($userid, false, $attemptnumber); $flags = $this->get_user_flags($userid, false); if ($this->can_view_submission($userid)) { - $gradelocked = ($flags && $flags->locked) || $this->grading_disabled($userid); + $submissionlocked = ($flags && $flags->locked); $extensionduedate = null; if ($flags) { $extensionduedate = $flags->extensionduedate; @@ -3989,7 +3989,7 @@ class assign { $submissiongroup, $notsubmitted, $this->is_any_submission_plugin_enabled(), - $gradelocked, + $submissionlocked, $this->is_graded($userid), $instance->duedate, $instance->cutoffdate, @@ -4946,7 +4946,7 @@ class assign { ($this->is_any_submission_plugin_enabled()) && $this->can_edit_submission($user->id); - $gradelocked = ($flags && $flags->locked) || $this->grading_disabled($user->id, false); + $submissionlocked = ($flags && $flags->locked); // Grading criteria preview. $gradingmanager = get_grading_manager($this->context, 'mod_assign', 'submissions'); @@ -4977,7 +4977,7 @@ class assign { $submissiongroup, $notsubmitted, $this->is_any_submission_plugin_enabled(), - $gradelocked, + $submissionlocked, $this->is_graded($user->id), $instance->duedate, $instance->cutoffdate, diff --git a/mod/assign/tests/locallib_test.php b/mod/assign/tests/locallib_test.php index 43391b640b8..e5adc30158b 100644 --- a/mod/assign/tests/locallib_test.php +++ b/mod/assign/tests/locallib_test.php @@ -3096,4 +3096,51 @@ Anchor link 2:Link text // Check that the grade was updated in the gradebook by fix_null_grades. $this->assertEquals($gradebookvalue, $gradegrade->finalgrade); } + + /** + * Test grade override displays 'Graded' for students + */ + public function test_grade_submission_override() { + global $DB, $PAGE, $OUTPUT; + + $this->setUser($this->editingteachers[0]); + $assign = $this->create_instance(array('assignsubmission_onlinetext_enabled' => 1)); + + $studentid = $this->students[0]->id; + + // Simulate adding a grade. + $this->setUser($this->teachers[0]); + $data = new stdClass(); + $data->grade = '50.0'; + $assign->testable_apply_grade_to_user($data, $studentid, 0); + + // Set grade override. + $gradegrade = grade_grade::fetch(array('userid' => $studentid, 'itemid' => $assign->get_grade_item()->id)); + + // Check that grade submission is not overridden yet. + $this->assertEquals(false, $gradegrade->is_overridden()); + + // Simulate a submission. + $this->setUser($this->students[0]); + $submission = $assign->get_user_submission($studentid, true); + + $PAGE->set_url(new moodle_url('/mod/assign/view.php', array('id' => $assign->get_course_module()->id))); + + // Set override grade grade, and check that grade submission has been overridden. + $gradegrade->set_overridden(true); + $this->assertEquals(true, $gradegrade->is_overridden()); + + // Check that submissionslocked message 'This assignment is not accepting submissions' does not appear for student. + $gradingtable = new assign_grading_table($assign, 1, '', 0, true); + $output = $assign->get_renderer()->render($gradingtable); + $this->assertContains(get_string('submissionstatus_', 'assign'), $output); + + $assignsubmissionstatus = $assign->get_assign_submission_status_renderable($this->students[0], true); + $output2 = $assign->get_renderer()->render($assignsubmissionstatus); + + // Check that submissionslocked 'This assignment is not accepting submissions' message does not appear for student. + $this->assertNotContains(get_string('submissionslocked', 'assign'), $output2); + // Check that submissionstatus_marked 'Graded' message does appear for student. + $this->assertContains(get_string('submissionstatus_marked', 'assign'), $output2); + } }