MDL-64761 assign: Add tests for hidden grader in WS
This commit is contained in:
@@ -2159,6 +2159,64 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test hidden grader for get_submission_status.
|
||||
*/
|
||||
public function test_get_submission_status_hidden_grader() {
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
list($assign, $instance, $student1, $student2, $teacher, $g1, $g2) = $this->create_submission_for_testing_status(true);
|
||||
|
||||
// Grade the assign for the student1.
|
||||
$this->setUser($teacher);
|
||||
|
||||
$data = new stdClass();
|
||||
$data->grade = '50.0';
|
||||
$data->assignfeedbackcomments_editor = ['text' => ''];
|
||||
$assign->testable_apply_grade_to_user($data, $student1->id, 0);
|
||||
|
||||
$this->setUser($student1);
|
||||
|
||||
// Check that the student can see the grader by default.
|
||||
$result = mod_assign_external::get_submission_status($assign->get_instance()->id);
|
||||
// We expect debugging because of the $PAGE object, this won't happen in a normal WS request.
|
||||
$this->assertDebuggingCalled();
|
||||
|
||||
$result = external_api::clean_returnvalue(mod_assign_external::get_submission_status_returns(), $result);
|
||||
|
||||
$this->assertTrue(isset($result['feedback']));
|
||||
$this->assertTrue(isset($result['feedback']['grade']));
|
||||
$this->assertEquals($teacher->id, $result['feedback']['grade']['grader']);
|
||||
|
||||
// Now change the setting so the grader is hidden.
|
||||
$this->setAdminUser();
|
||||
|
||||
$instance = $assign->get_instance();
|
||||
$instance->instance = $instance->id;
|
||||
$instance->hidegrader = true;
|
||||
$assign->update_instance($instance);
|
||||
|
||||
$this->setUser($student1);
|
||||
|
||||
// Check that the student cannot see the grader anymore.
|
||||
$result = mod_assign_external::get_submission_status($assign->get_instance()->id);
|
||||
$result = external_api::clean_returnvalue(mod_assign_external::get_submission_status_returns(), $result);
|
||||
|
||||
$this->assertTrue(isset($result['feedback']));
|
||||
$this->assertTrue(isset($result['feedback']['grade']));
|
||||
$this->assertEquals(-1, $result['feedback']['grade']['grader']);
|
||||
|
||||
// Check that the teacher can see the grader.
|
||||
$this->setUser($teacher);
|
||||
|
||||
$result = mod_assign_external::get_submission_status($assign->get_instance()->id, $student1->id);
|
||||
$result = external_api::clean_returnvalue(mod_assign_external::get_submission_status_returns(), $result);
|
||||
|
||||
$this->assertTrue(isset($result['feedback']));
|
||||
$this->assertTrue(isset($result['feedback']['grade']));
|
||||
$this->assertEquals($teacher->id, $result['feedback']['grade']['grader']);
|
||||
}
|
||||
|
||||
/**
|
||||
* get_participant should throw an excaption if the requested assignment doesn't exist.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user