MDL-64761 assign: Add tests for hidden grader in WS

This commit is contained in:
Dani Palou
2019-02-04 15:29:47 +01:00
parent 208e1376be
commit 468ee73bba
+58
View File
@@ -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.
*