MDL-55371 mod_assign: Do not return empty users in get_participant WS

The WS was returning null users making the WS to fail.
This commit is contained in:
Juan Leyva 2017-05-04 10:09:35 +02:00
parent 06e3b6d8ba
commit 396395b8d3
2 changed files with 12 additions and 3 deletions

View file

@ -2775,7 +2775,9 @@ class mod_assign_external extends external_api {
// Skip the expensive lookup of user detail if we're blind marking or the caller // Skip the expensive lookup of user detail if we're blind marking or the caller
// hasn't asked for user details to be embedded. // hasn't asked for user details to be embedded.
if (!$assign->is_blind_marking() && $embeduser) { if (!$assign->is_blind_marking() && $embeduser) {
$return['user'] = user_get_user_details($participant, $course); if ($userdetails = user_get_user_details($participant, $course)) {
$return['user'] = $userdetails;
}
} }
return $return; return $return;

View file

@ -2203,6 +2203,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->setUser($teacher); $this->setUser($teacher);
$result = mod_assign_external::get_participant($assign->id, $student->id, false); $result = mod_assign_external::get_participant($assign->id, $student->id, false);
$result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result);
} }
/** /**
@ -2224,6 +2225,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->setUser($teacher); $this->setUser($teacher);
$result = mod_assign_external::get_participant($assign->id, $student->id, true); $result = mod_assign_external::get_participant($assign->id, $student->id, true);
$result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result);
$this->assertEquals($student->id, $result['id']); $this->assertEquals($student->id, $result['id']);
$this->assertFalse(fullname($student) == $result['fullname']); $this->assertFalse(fullname($student) == $result['fullname']);
$this->assertFalse($result['submitted']); $this->assertFalse($result['submitted']);
@ -2231,7 +2233,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->assertFalse($result['grantedextension']); $this->assertFalse($result['grantedextension']);
$this->assertTrue($result['blindmarking']); $this->assertTrue($result['blindmarking']);
// Make sure we don't get any additional info. // Make sure we don't get any additional info.
$this->assertTrue(empty($result['user'])); $this->assertArrayNotHasKey('user', $result);
} }
/** /**
@ -2277,6 +2279,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->setUser($teacher); $this->setUser($teacher);
$result = mod_assign_external::get_participant($assignmodule->id, $student->id, false); $result = mod_assign_external::get_participant($assignmodule->id, $student->id, false);
$result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result);
$this->assertEquals($student->id, $result['id']); $this->assertEquals($student->id, $result['id']);
$this->assertEquals(fullname($student), $result['fullname']); $this->assertEquals(fullname($student), $result['fullname']);
$this->assertTrue($result['submitted']); $this->assertTrue($result['submitted']);
@ -2284,7 +2287,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->assertFalse($result['grantedextension']); $this->assertFalse($result['grantedextension']);
$this->assertFalse($result['blindmarking']); $this->assertFalse($result['blindmarking']);
// Make sure we don't get any additional info. // Make sure we don't get any additional info.
$this->assertTrue(empty($result['user'])); $this->assertArrayNotHasKey('user', $result);
} }
/** /**
@ -2305,6 +2308,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->setUser($teacher); $this->setUser($teacher);
$result = mod_assign_external::get_participant($assign->id, $student->id, true); $result = mod_assign_external::get_participant($assign->id, $student->id, true);
$result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result);
// Check some of the extended properties we get when requesting the user. // Check some of the extended properties we get when requesting the user.
$this->assertEquals($student->id, $result['id']); $this->assertEquals($student->id, $result['id']);
// We should get user infomation back. // We should get user infomation back.
@ -2356,6 +2360,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->setUser($teacher); $this->setUser($teacher);
$result = mod_assign_external::get_participant($assignmodule->id, $student->id, false); $result = mod_assign_external::get_participant($assignmodule->id, $student->id, false);
$result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result);
// Check some of the extended properties we get when not requesting a summary. // Check some of the extended properties we get when not requesting a summary.
$this->assertEquals($student->id, $result['id']); $this->assertEquals($student->id, $result['id']);
$this->assertEquals($group->id, $result['groupid']); $this->assertEquals($group->id, $result['groupid']);
@ -2390,6 +2395,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->setUser($teacher); $this->setUser($teacher);
$participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, true); $participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, true);
$participants = external_api::clean_returnvalue(mod_assign_external::list_participants_returns(), $participants);
$this->assertCount(1, $participants); $this->assertCount(1, $participants);
// Asser that we have a valid response data. // Asser that we have a valid response data.
@ -2407,6 +2413,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->assertArrayHasKey('enrolledcourses', $participant); $this->assertArrayHasKey('enrolledcourses', $participant);
$participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, false); $participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, false);
$participants = external_api::clean_returnvalue(mod_assign_external::list_participants_returns(), $participants);
// Check that the list of courses the participant is enrolled is not returned. // Check that the list of courses the participant is enrolled is not returned.
$participant = $participants[0]; $participant = $participants[0];
$this->assertArrayNotHasKey('enrolledcourses', $participant); $this->assertArrayNotHasKey('enrolledcourses', $participant);