* @since Moodle 3.8
*/
public static function execute(string $component, int $contextid, string $itemname, int $gradeduserid): array {
- global $USER;
-
+ global $USER, $CFG;
+ require_once("{$CFG->libdir}/gradelib.php");
[
'component' => $component,
'contextid' => $contextid,
$gradeduser = \core_user::get_user($gradeduserid);
$hasgrade = $gradeitem->user_has_grade($gradeduser);
$grade = $gradeitem->get_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);
+ return self::get_fetch_data($grade, $hasgrade, $maxgrade, $gradername);
}
/**
* @param stdClass $grade
* @param bool $hasgrade
* @param int $maxgrade
+ * @param string|null $gradername
* @return array
*/
- public static function get_fetch_data(stdClass $grade, bool $hasgrade, int $maxgrade): array {
+ public static function get_fetch_data(stdClass $grade, bool $hasgrade, int $maxgrade, ?string $gradername): array {
return [
'templatename' => 'core_grades/grades/grader/gradingpanel/point',
'hasgrade' => $hasgrade,
'grade' => $grade->grade,
'usergrade' => $grade->grade,
'maxgrade' => $maxgrade,
+ 'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
'timemodified' => $grade->timemodified,
],
'grade' => new external_value(PARAM_FLOAT, 'The numeric grade'),
'usergrade' => new external_value(PARAM_RAW, 'Current user grade'),
'maxgrade' => new external_value(PARAM_RAW, 'Max possible grade'),
+ 'gradedby' => new external_value(PARAM_RAW, 'The assumed grader of this grading instance'),
'timecreated' => new external_value(PARAM_INT, 'The time that the grade was created'),
'timemodified' => new external_value(PARAM_INT, 'The time that the grade was last updated'),
]),
*/
public static function execute(string $component, int $contextid, string $itemname, int $gradeduserid,
bool $notifyuser, string $formdata): array {
- global $USER;
-
+ global $USER, $CFG;
+ require_once("{$CFG->libdir}/gradelib.php");
[
'component' => $component,
'contextid' => $contextid,
// Fetch the updated grade back out.
$grade = $gradeitem->get_grade_for_user($gradeduser, $USER);
- return fetch::get_fetch_data($grade, $hasgrade, 0);
+ $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);
}
/**
* @since Moodle 3.8
*/
public static function execute(string $component, int $contextid, string $itemname, int $gradeduserid): array {
- global $USER;
-
+ global $USER, $CFG;
+ require_once("{$CFG->libdir}/gradelib.php");
[
'component' => $component,
'contextid' => $contextid,
$gradeduser = \core_user::get_user($gradeduserid);
+ // 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($gradeitem, $gradeduser, $maxgrade);
+ return self::get_fetch_data($gradeitem, $gradeduser, $maxgrade, $gradername);
}
/**
* @param gradeitem $gradeitem
* @param stdClass $gradeduser
* @param int $maxgrade
+ * @param string|null $gradername
* @return array
*/
- public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser, int $maxgrade): array {
+ public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser, int $maxgrade, ?string $gradername): array {
global $USER;
$hasgrade = $gradeitem->user_has_grade($gradeduser);
'options' => $values,
'usergrade' => $grade->grade,
'maxgrade' => $maxgrade,
+ 'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
'timemodified' => $grade->timemodified,
],
),
'usergrade' => new external_value(PARAM_RAW, 'Current user grade'),
'maxgrade' => new external_value(PARAM_RAW, 'Max possible grade'),
+ 'gradedby' => new external_value(PARAM_RAW, 'The assumed grader of this grading instance'),
'timecreated' => new external_value(PARAM_INT, 'The time that the grade was created'),
'timemodified' => new external_value(PARAM_INT, 'The time that the grade was last updated'),
]),
*/
public static function execute(string $component, int $contextid, string $itemname, int $gradeduserid,
bool $notifyuser, string $formdata): array {
- global $USER;
-
+ global $USER, $CFG;
+ require_once("{$CFG->libdir}/gradelib.php");
[
'component' => $component,
'contextid' => $contextid,
$gradeitem->send_student_notification($gradeduser, $USER);
}
- return fetch::get_fetch_data($gradeitem, $gradeduser, 0);
+ $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($gradeitem, $gradeduser, $maxgrade, $gradername);
}
/**
* @since Moodle 3.8
*/
public static function execute(string $component, int $contextid, string $itemname, int $gradeduserid): array {
- global $USER;
-
+ global $CFG;
+ require_once("{$CFG->libdir}/gradelib.php");
[
'component' => $component,
'contextid' => $contextid,
$fillings = $instance->get_guide_filling();
$context = $controller->get_context();
$definitionid = (int) $definition->id;
+
+ // 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 = max(array_keys($controller->get_grade_range()));
$criterion = [];
'comments' => $comments,
'usergrade' => $grade->grade,
'maxgrade' => $maxgrade,
+ 'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
'timemodified' => $grade->timemodified,
],
),
'usergrade' => new external_value(PARAM_RAW, 'Current user grade'),
'maxgrade' => new external_value(PARAM_RAW, 'Max possible grade'),
+ 'gradedby' => new external_value(PARAM_RAW, 'The assumed grader of this grading instance'),
'timecreated' => new external_value(PARAM_INT, 'The time that the grade was created'),
'timemodified' => new external_value(PARAM_INT, 'The time that the grade was last updated'),
]),
$this->assertEquals('gradingform_guide/grades/grader/gradingpanel', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
-
$this->assertIsInt($result['grade']['timecreated']);
+
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(0, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(100, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(null, $result['grade']['gradedby']);
$this->assertArrayHasKey('criterion', $result['grade']);
$criteria = $result['grade']['criterion'];
'instanceid' => $instance->get_id(),
'advancedgrading' => $submissiondata,
]);
-
+ // Set up some items we need to return on other interfaces.
$result = fetch::execute('mod_forum', (int) $forum->get_context()->id, 'forum', (int) $student->id);
$result = external_api::clean_returnvalue(fetch::execute_returns(), $result);
$this->assertEquals('gradingform_guide/grades/grader/gradingpanel', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
-
$this->assertIsInt($result['grade']['timecreated']);
+
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(25, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(100, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
$this->assertArrayHasKey('criterion', $result['grade']);
$criteria = $result['grade']['criterion'];
$datagenerator = $this->getDataGenerator();
$course = $datagenerator->create_course();
- $forum = $datagenerator->create_module('forum', array_merge($config, ['course' => $course->id]));
+ $forum = $datagenerator->create_module('forum', array_merge($config, ['course' => $course->id, 'grade_forum' => 100]));
$vaultfactory = \mod_forum\local\container::get_vault_factory();
$vault = $vaultfactory->get_forum_vault();
$controller = $guidegenerator->get_test_guide($forum->get_context(), 'forum', 'forum');
$definition = $controller->get_definition();
- $DB->set_field('forum', 'grade_forum', count($definition->guide_criteria), ['id' => $forum->get_id()]);
+ // In the situation of mod_forum this would be the id from forum_grades.
+ $itemid = 1;
+ $instance = $controller->create_instance($student->id, $itemid);
+
+ $data = $this->get_test_form_data(
+ $controller,
+ $itemid,
+ 5, 'This user made several mistakes.',
+ 10, 'This user has two pictures.'
+ );
+
+ // Update this instance with data.
+ $instance->update($data);
+
return [
'forum' => $forum,
'controller' => $controller,
'teacher' => $teacher,
];
}
+
+ /**
+ * Fetch a set of sample data.
+ *
+ * @param \gradingform_guide_controller $controller
+ * @param int $itemid
+ * @param float $spellingscore
+ * @param string $spellingremark
+ * @param float $picturescore
+ * @param string $pictureremark
+ * @return array
+ */
+ protected function get_test_form_data(
+ \gradingform_guide_controller $controller,
+ int $itemid,
+ float $spellingscore,
+ string $spellingremark,
+ float $picturescore,
+ string $pictureremark
+ ): array {
+ $generator = \testing_util::get_data_generator();
+ $guidegenerator = $generator->get_plugin_generator('gradingform_guide');
+
+ return $guidegenerator->get_test_form_data(
+ $controller,
+ $itemid,
+ $spellingscore,
+ $spellingremark,
+ $picturescore,
+ $pictureremark
+ );
+ }
}
$this->assertEquals('gradingform_guide/grades/grader/gradingpanel', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
-
$this->assertIsInt($result['grade']['timecreated']);
+
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(0.5, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(2, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
$this->assertArrayHasKey('criterion', $result['grade']);
$criteria = $result['grade']['criterion'];
* @since Moodle 3.8
*/
public static function execute(string $component, int $contextid, string $itemname, int $gradeduserid): array {
+ global $CFG;
+ require_once("{$CFG->libdir}/gradelib.php");
[
'component' => $component,
'contextid' => $contextid,
*/
public static function get_fetch_data(gradeitem $gradeitem, stdClass $gradeduser): array {
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);
$fillings = $instance->get_rubric_filling();
$context = $controller->get_context();
$definitionid = (int) $definition->id;
+
+ // 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 = max(array_keys($controller->get_grade_range()));
+
$teacherdescription = self::get_formatted_text(
$context,
$definitionid,
'canedit' => false,
'usergrade' => $grade->grade,
'maxgrade' => $maxgrade,
+ 'gradedby' => $gradername,
'timecreated' => $grade->timecreated,
'timemodified' => $grade->timemodified,
],
'timecreated' => new external_value(PARAM_INT, 'The time that the grade was created'),
'usergrade' => new external_value(PARAM_RAW, 'Current user grade'),
'maxgrade' => new external_value(PARAM_RAW, 'Max possible grade'),
+ 'gradedby' => new external_value(PARAM_RAW, 'The assumed grader of this grading instance'),
'timemodified' => new external_value(PARAM_INT, 'The time that the grade was last updated'),
]),
'warnings' => new external_warnings(),
use advanced_testcase;
use coding_exception;
use core_grades\component_gradeitem;
+use core_grades\component_gradeitems;
use external_api;
use mod_forum\local\entities\forum as forum_entity;
use moodle_exception;
$this->assertEquals('gradingform_rubric/grades/grader/gradingpanel', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
-
$this->assertIsInt($result['grade']['timecreated']);
+
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(0, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(100, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(null, $result['grade']['gradedby']);
$this->assertArrayHasKey('criteria', $result['grade']);
$criteria = $result['grade']['criteria'];
$this->assertEquals('gradingform_rubric/grades/grader/gradingpanel', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
-
$this->assertIsInt($result['grade']['timecreated']);
+
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(50, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(100, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
$this->assertArrayHasKey('criteria', $result['grade']);
$criteria = $result['grade']['criteria'];
$datagenerator = $this->getDataGenerator();
$course = $datagenerator->create_course();
- $forum = $datagenerator->create_module('forum', array_merge($config, ['course' => $course->id]));
+ $forum = $datagenerator->create_module('forum', array_merge($config, ['course' => $course->id, 'grade_forum' => 100]));
$vaultfactory = \mod_forum\local\container::get_vault_factory();
$vault = $vaultfactory->get_forum_vault();
$student = $this->getDataGenerator()->create_and_enrol($course, 'student');
$this->setUser($teacher);
+
$controller = $rubricgenerator->get_test_rubric($forum->get_context(), 'forum', 'forum');
$definition = $controller->get_definition();
- $DB->set_field('forum', 'grade_forum', count($definition->rubric_criteria), ['id' => $forum->get_id()]);
+ // In the situation of mod_forum this would be the id from forum_grades.
+ $itemid = 1;
+ $instance = $controller->create_instance($student->id, $itemid);
+
+ $data = $this->get_test_form_data(
+ $controller,
+ $itemid,
+ 1, 'This user made several mistakes.',
+ 0, 'Please add more pictures.'
+ );
+
+ // Update this instance with data.
+ $instance->update($data);
+
return [
'forum' => $forum,
'controller' => $controller,
'teacher' => $teacher,
];
}
+ /**
+ * Fetch a set of sample data.
+ *
+ * @param \gradingform_rubric_controller $controller
+ * @param int $itemid
+ * @param float $spellingscore
+ * @param string $spellingremark
+ * @param float $picturescore
+ * @param string $pictureremark
+ * @return array
+ */
+ protected function get_test_form_data(
+ \gradingform_rubric_controller $controller,
+ int $itemid,
+ float $spellingscore,
+ string $spellingremark,
+ float $picturescore,
+ string $pictureremark
+ ): array {
+ $generator = \testing_util::get_data_generator();
+ $rubricgenerator = $generator->get_plugin_generator('gradingform_rubric');
+
+ return $rubricgenerator->get_test_form_data(
+ $controller,
+ $itemid,
+ $spellingscore,
+ $spellingremark,
+ $picturescore,
+ $pictureremark
+ );
+ }
}
$this->assertEquals('gradingform_rubric/grades/grader/gradingpanel', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
-
$this->assertIsInt($result['grade']['timecreated']);
+
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(1, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(2, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
$this->assertArrayHasKey('criteria', $result['grade']);
$criteria = $result['grade']['criteria'];
$this->assertEquals('core_grades/grades/grader/gradingpanel/point', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+
$this->assertArrayHasKey('grade', $result['grade']);
$this->assertEmpty($result['grade']['grade']);
- $this->assertArrayHasKey('timecreated', $result['grade']);
+
$this->assertIsInt($result['grade']['timecreated']);
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(0, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(5, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(null, $result['grade']['gradedby']);
}
/**
$this->assertEquals('core_grades/grades/grader/gradingpanel/point', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+
$this->assertArrayHasKey('grade', $result['grade']);
$this->assertIsFloat($result['grade']['grade']);
$this->assertEquals(grade_floatval(unformat_float(4)), $result['grade']['grade']);
- $this->assertArrayHasKey('timecreated', $result['grade']);
+
$this->assertIsInt($result['grade']['timecreated']);
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(4, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(5, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
}
/**
$this->assertIsArray($result['warnings']);
$this->assertEmpty($result['warnings']);
+ // Test the grade array items.
+ $this->assertArrayHasKey('grade', $result);
+ $this->assertIsArray($result['grade']);
+
+ $this->assertArrayHasKey('grade', $result['grade']);
+ $this->assertEquals(null, $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(null, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(5, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
+
// Compare against the grade stored in the database.
$storedgradeitem = grade_item::fetch([
'courseid' => $forum->get_course_id(),
$this->assertEquals('core_grades/grades/grader/gradingpanel/point', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+
$this->assertArrayHasKey('grade', $result['grade']);
$this->assertEquals($formattedvalue, $result['grade']['grade']);
- $this->assertArrayHasKey('timecreated', $result['grade']);
+
$this->assertIsInt($result['grade']['timecreated']);
$this->assertArrayHasKey('timemodified', $result['grade']);
$this->assertIsInt($result['grade']['timemodified']);
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals($formattedvalue, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(5, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
// Compare against the grade stored in the database.
$storedgradeitem = grade_item::fetch([
$this->assertEquals('core_grades/grades/grader/gradingpanel/scale', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+ $this->assertIsInt($result['grade']['timecreated']);
+ $this->assertArrayHasKey('timemodified', $result['grade']);
+ $this->assertIsInt($result['grade']['timemodified']);
+
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(0, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(3, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(null, $result['grade']['gradedby']);
+
$this->assertArrayHasKey('options', $result['grade']);
$this->assertCount(count($options), $result['grade']['options']);
rsort($options);
$this->assertArrayHasKey('selected', $returnedoption);
$this->assertFalse($returnedoption['selected']);
}
-
- $this->assertIsInt($result['grade']['timecreated']);
- $this->assertArrayHasKey('timemodified', $result['grade']);
- $this->assertIsInt($result['grade']['timemodified']);
-
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
}
/**
$this->assertEquals('core_grades/grades/grader/gradingpanel/scale', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+ $this->assertIsInt($result['grade']['timecreated']);
+ $this->assertArrayHasKey('timemodified', $result['grade']);
+ $this->assertIsInt($result['grade']['timemodified']);
+
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(2, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(3, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
+
$this->assertArrayHasKey('options', $result['grade']);
$this->assertCount(count($options), $result['grade']['options']);
rsort($options);
$this->assertFalse($result['grade']['options'][0]['selected']);
$this->assertTrue($result['grade']['options'][1]['selected']);
$this->assertFalse($result['grade']['options'][2]['selected']);
-
- $this->assertIsInt($result['grade']['timecreated']);
- $this->assertArrayHasKey('timemodified', $result['grade']);
- $this->assertIsInt($result['grade']['timemodified']);
-
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
}
/**
$this->assertEquals('core_grades/grades/grader/gradingpanel/scale', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+
+ $this->assertIsInt($result['grade']['timecreated']);
+ $this->assertArrayHasKey('timemodified', $result['grade']);
+ $this->assertIsInt($result['grade']['timemodified']);
+
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(0, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(3, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
+
$this->assertArrayHasKey('options', $result['grade']);
$this->assertCount(count($options), $result['grade']['options']);
rsort($options);
$this->assertFalse($returnedoption['selected']);
}
- $this->assertIsInt($result['grade']['timecreated']);
- $this->assertArrayHasKey('timemodified', $result['grade']);
- $this->assertIsInt($result['grade']['timemodified']);
-
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
-
// Compare against the grade stored in the database.
$storedgradeitem = grade_item::fetch([
'courseid' => $forum->get_course_id(),
$this->assertEquals('core_grades/grades/grader/gradingpanel/scale', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+
+ $this->assertIsInt($result['grade']['timecreated']);
+ $this->assertArrayHasKey('timemodified', $result['grade']);
+ $this->assertIsInt($result['grade']['timemodified']);
+
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(-1, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(3, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(null, $result['grade']['gradedby']);
+
$this->assertArrayHasKey('options', $result['grade']);
$this->assertCount(count($options), $result['grade']['options']);
rsort($options);
$this->assertFalse($returnedoption['selected']);
}
- $this->assertIsInt($result['grade']['timecreated']);
- $this->assertArrayHasKey('timemodified', $result['grade']);
- $this->assertIsInt($result['grade']['timemodified']);
-
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
-
// Compare against the grade stored in the database.
$storedgradeitem = grade_item::fetch([
'courseid' => $forum->get_course_id(),
$this->assertEquals('core_grades/grades/grader/gradingpanel/scale', $result['templatename']);
+ $this->assertArrayHasKey('warnings', $result);
+ $this->assertIsArray($result['warnings']);
+ $this->assertEmpty($result['warnings']);
+
+ // Test the grade array items.
$this->assertArrayHasKey('grade', $result);
$this->assertIsArray($result['grade']);
+
+ $this->assertIsInt($result['grade']['timecreated']);
+ $this->assertArrayHasKey('timemodified', $result['grade']);
+ $this->assertIsInt($result['grade']['timemodified']);
+
+ $this->assertArrayHasKey('usergrade', $result['grade']);
+ $this->assertEquals(2, $result['grade']['usergrade']);
+
+ $this->assertArrayHasKey('maxgrade', $result['grade']);
+ $this->assertIsInt($result['grade']['maxgrade']);
+ $this->assertEquals(3, $result['grade']['maxgrade']);
+
+ $this->assertArrayHasKey('gradedby', $result['grade']);
+ $this->assertEquals(fullname($teacher), $result['grade']['gradedby']);
+
$this->assertArrayHasKey('options', $result['grade']);
$this->assertCount(count($options), $result['grade']['options']);
rsort($options);
$this->assertArrayHasKey('selected', $returnedoption);
}
- // The grade was 2, which relates to the middle option.
- $this->assertFalse($result['grade']['options'][0]['selected']);
- $this->assertTrue($result['grade']['options'][1]['selected']);
- $this->assertFalse($result['grade']['options'][2]['selected']);
-
- $this->assertIsInt($result['grade']['timecreated']);
- $this->assertArrayHasKey('timemodified', $result['grade']);
- $this->assertIsInt($result['grade']['timemodified']);
-
- $this->assertArrayHasKey('warnings', $result);
- $this->assertIsArray($result['warnings']);
- $this->assertEmpty($result['warnings']);
-
// Compare against the grade stored in the database.
$storedgradeitem = grade_item::fetch([
'courseid' => $forum->get_course_id(),
$this->assertEquals($formattedvalue, $storedgrade->rawgrade);
$this->assertEquals($scale->id, $storedgrade->rawscaleid);
+
+ // The grade was 2, which relates to the middle option.
+ $this->assertFalse($result['grade']['options'][0]['selected']);
+ $this->assertTrue($result['grade']['options'][1]['selected']);
+ $this->assertFalse($result['grade']['options'][2]['selected']);
}
/**
$string['grade_rating_name'] = 'Rating';
$string['gradeusers'] = 'Grade users';
$string['graded'] = 'Graded';
+$string['gradedby'] = 'Graded by';
+$string['notgraded'] = 'Not graded';
$string['gradeforrating'] = 'Grade for rating: {$a->str_long_grade}';
$string['gradeforratinghidden'] = 'Grade for rating hidden';
$string['gradeforwholeforum'] = 'Grade for forum: {$a->str_long_grade}';
<h5 class="font-weight-bold description">{{#str}}grade{{/str}}:</h5>
<p class="ml-auto">{{usergrade}} / {{maxgrade}}</p>
</div>
+ <div class="row-fluid px-3">
+ <h5 class="font-weight-bold description">{{#str}}gradedby, forum{{/str}}:</h5>
+ <p class="ml-auto">
+ {{#gradedby}}
+ {{gradedby}}
+ {{/gradedby}}
+ {{^gradedby}}
+ -
+ {{/gradedby}}
+ </p>
+ </div>
<div class="row-fluid px-3">
<h5 class="font-weight-bold description">{{#str}}date{{/str}}:</h5>
<p class="ml-auto">{{#userdate}}{{timemodified}}, {{#str}} strftimedate, langconfig {{/str}}{{/userdate}}</p>