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 20b3b4c commit f13e323
Show file tree
Hide file tree
Showing 13 changed files with 28 additions and 31 deletions.
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
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
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
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
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
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
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
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
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
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
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
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
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 f13e323

Please sign in to comment.