Skip to content

Commit

Permalink
MDL-71439 core_grades: return result of new method in web services
Browse files Browse the repository at this point in the history
  • Loading branch information
mdjnelson committed Oct 27, 2021
1 parent 85eda54 commit 4eecb89
Show file tree
Hide file tree
Showing 13 changed files with 28 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,13 @@ public static function execute(string $component, int $contextid, string $itemna
}

$hasgrade = $gradeitem->user_has_grade($gradeduser);
$grade = $gradeitem->get_grade_for_user($gradeduser, $USER);
$grade = $gradeitem->get_formatted_grade_for_user($gradeduser, $USER);

// Set up some items we need to return on other interfaces.
$gradegrade = \grade_grade::fetch(['itemid' => $gradeitem->get_grade_item()->id, 'userid' => $gradeduser->id]);
$gradername = $gradegrade ? fullname(\core_user::get_user($gradegrade->usermodified)) : null;
$maxgrade = (int) $gradeitem->get_grade_item()->grademax;

return self::get_fetch_data($grade, $hasgrade, $maxgrade, $gradername);
return self::get_fetch_data($grade, $hasgrade, (int) $grade->maxgrade, $gradername);
}

/**
Expand All @@ -161,7 +160,7 @@ public static function get_fetch_data(stdClass $grade, bool $hasgrade, int $maxg
'hasgrade' => $hasgrade,
'grade' => [
'grade' => $grade->grade,
'usergrade' => $grade->grade,
'usergrade' => $grade->usergrade,
'maxgrade' => $maxgrade,
'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,13 +170,12 @@ public static function execute(string $component, int $contextid, string $itemna
}

// Fetch the updated grade back out.
$grade = $gradeitem->get_grade_for_user($gradeduser, $USER);
$grade = $gradeitem->get_formatted_grade_for_user($gradeduser, $USER);

$gradegrade = \grade_grade::fetch(['itemid' => $gradeitem->get_grade_item()->id, 'userid' => $gradeduser->id]);
$gradername = $gradegrade ? fullname(\core_user::get_user($gradegrade->usermodified)) : null;
$maxgrade = (int) $gradeitem->get_grade_item()->grademax;

return fetch::get_fetch_data($grade, $hasgrade, $maxgrade, $gradername);
return fetch::get_fetch_data($grade, $hasgrade, (int) $grade->maxgrade, $gradername);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser
global $USER;

$hasgrade = $gradeitem->user_has_grade($gradeduser);
$grade = $gradeitem->get_grade_for_user($gradeduser, $USER);
$grade = $gradeitem->get_formatted_grade_for_user($gradeduser, $USER);
$currentgrade = (int) unformat_float($grade->grade);

$menu = $gradeitem->get_grade_menu();
Expand All @@ -172,7 +172,7 @@ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser
'hasgrade' => $hasgrade,
'grade' => [
'options' => $values,
'usergrade' => $grade->grade,
'usergrade' => $grade->usergrade,
'maxgrade' => $maxgrade,
'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser
global $USER;

$hasgrade = $gradeitem->user_has_grade($gradeduser);
$grade = $gradeitem->get_grade_for_user($gradeduser, $USER);
$grade = $gradeitem->get_formatted_grade_for_user($gradeduser, $USER);
$instance = $gradeitem->get_advanced_grading_instance($USER, $grade);
if (!$instance) {
throw new moodle_exception('error:gradingunavailable', 'grading');
Expand Down Expand Up @@ -237,7 +237,7 @@ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser
'criterion' => $criterion,
'hascomments' => !empty($comments),
'comments' => $comments,
'usergrade' => $grade->grade,
'usergrade' => $grade->usergrade,
'maxgrade' => $maxgrade,
'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ public function test_execute_fetch_empty(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(0, $result['grade']['usergrade']);
$this->assertEquals('- / 100.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -275,7 +275,7 @@ private function execute_and_assert_fetch ($forum, $controller, $definition, $fe
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(25, $result['grade']['usergrade']);
$this->assertEquals('25.00 / 100.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public function test_execute_store_graded(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(0.5, $result['grade']['usergrade']);
$this->assertEquals('0.50 / 2.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser
global $USER;
// Set up all the controllers etc that we'll be needing.
$hasgrade = $gradeitem->user_has_grade($gradeduser);
$grade = $gradeitem->get_grade_for_user($gradeduser, $USER);
$grade = $gradeitem->get_formatted_grade_for_user($gradeduser, $USER);
$instance = $gradeitem->get_advanced_grading_instance($USER, $grade);
if (!$instance) {
throw new moodle_exception('error:gradingunavailable', 'grading');
Expand Down Expand Up @@ -252,7 +252,7 @@ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser
'rubricmode' => 'evaluate editable',
'teacherdescription' => $teacherdescription,
'canedit' => false,
'usergrade' => $grade->grade,
'usergrade' => $grade->usergrade,
'maxgrade' => $maxgrade,
'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public function test_execute_fetch_empty(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(0, $result['grade']['usergrade']);
$this->assertEquals('- / 100.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -282,7 +282,7 @@ private function execute_and_assert_fetch ($forum, $controller, $definition, $fe
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(50, $result['grade']['usergrade']);
$this->assertEquals('50.00 / 100.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ public function test_execute_store_graded(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(1, $result['grade']['usergrade']);
$this->assertEquals('1.00 / 2.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public function test_execute_fetch_empty(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(0, $result['grade']['usergrade']);
$this->assertEquals('- / 5.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -239,7 +239,7 @@ private function execute_and_assert_fetch ($forum, $fetcheruser, $grader, $grade
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(4, $result['grade']['usergrade']);
$this->assertEquals('4.00 / 5.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public function test_execute_store_empty(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(null, $result['grade']['usergrade']);
$this->assertEquals('- / 5.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -217,7 +217,6 @@ public function test_execute_store_graded(): void {
$formdata = [
'grade' => 4,
];
$formattedvalue = grade_floatval(unformat_float(4));

$gradeitem = component_gradeitem::instance('mod_forum', $forum->get_context(), 'forum');

Expand All @@ -240,14 +239,14 @@ public function test_execute_store_graded(): void {
$this->assertIsArray($result['grade']);

$this->assertArrayHasKey('grade', $result['grade']);
$this->assertEquals($formattedvalue, $result['grade']['grade']);
$this->assertEquals(grade_floatval(unformat_float(4)), $result['grade']['grade']);

$this->assertIsInt($result['grade']['timecreated']);
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals($formattedvalue, $result['grade']['usergrade']);
$this->assertEquals('4.00 / 5.00', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand All @@ -269,7 +268,7 @@ public function test_execute_store_graded(): void {
'itemid' => $storedgradeitem->id,
]);

$this->assertEquals($formattedvalue, $storedgrade->rawgrade);
$this->assertEquals(grade_floatval(unformat_float(4)), $storedgrade->rawgrade);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public function test_execute_fetch_empty(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(0, $result['grade']['usergrade']);
$this->assertEquals('-', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -286,7 +286,7 @@ private function execute_and_assert_fetch ($forum, $options, $scale, $fetcheruse
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(2, $result['grade']['usergrade']);
$this->assertEquals('B', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ public function test_execute_store_empty(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(0, $result['grade']['usergrade']);
$this->assertEquals('-', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -244,7 +244,7 @@ public function test_execute_store_not_selected(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(-1, $result['grade']['usergrade']);
$this->assertEquals('-', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down Expand Up @@ -331,7 +331,7 @@ public function test_execute_store_graded(): void {
$this->assertIsInt($result['grade']['timemodified']);

$this->assertArrayHasKey('usergrade', $result['grade']);
$this->assertEquals(2, $result['grade']['usergrade']);
$this->assertEquals('B', $result['grade']['usergrade']);

$this->assertArrayHasKey('maxgrade', $result['grade']);
$this->assertIsInt($result['grade']['maxgrade']);
Expand Down

0 comments on commit 4eecb89

Please sign in to comment.