From 63d3298c0b23bd639cc69b7976aa22861b472bd4 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 df9d54b86d9..50ed6787b16 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3638,7 +3638,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; @@ -3655,7 +3655,7 @@ class assign { $submissiongroup, $notsubmitted, $this->is_any_submission_plugin_enabled(), - $gradelocked, + $submissionlocked, $this->is_graded($userid), $instance->duedate, $instance->cutoffdate, @@ -3836,7 +3836,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; @@ -3853,7 +3853,7 @@ class assign { $submissiongroup, $notsubmitted, $this->is_any_submission_plugin_enabled(), - $gradelocked, + $submissionlocked, $this->is_graded($userid), $instance->duedate, $instance->cutoffdate, @@ -4810,7 +4810,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'); @@ -4841,7 +4841,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 884a68b4638..42adf4887d4 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); + } }