Exemplo n.º 1
0
 /**
  * Test get_gradingform_instances
  */
 public function test_get_gradingform_instances()
 {
     global $DB, $USER;
     $this->resetAfterTest(true);
     // Create a course and assignment.
     $coursedata['idnumber'] = 'idnumbercourse';
     $coursedata['fullname'] = 'Lightwork Course';
     $coursedata['summary'] = 'Lightwork Course description';
     $coursedata['summaryformat'] = FORMAT_MOODLE;
     $course = self::getDataGenerator()->create_course($coursedata);
     $assigndata['course'] = $course->id;
     $assigndata['name'] = 'lightwork assignment';
     $assign = self::getDataGenerator()->create_module('assign', $assigndata);
     // Create manual enrolment record.
     $manualenroldata['enrol'] = 'manual';
     $manualenroldata['status'] = 0;
     $manualenroldata['courseid'] = $course->id;
     $enrolid = $DB->insert_record('enrol', $manualenroldata);
     // Create a teacher and give them capabilities.
     $coursecontext = context_course::instance($course->id);
     $roleid = $this->assignUserCapability('moodle/course:viewparticipants', $coursecontext->id, 3);
     $modulecontext = context_module::instance($assign->id);
     $this->assignUserCapability('mod/assign:grade', $modulecontext->id, $roleid);
     // Create the teacher's enrolment record.
     $userenrolmentdata['status'] = 0;
     $userenrolmentdata['enrolid'] = $enrolid;
     $userenrolmentdata['userid'] = $USER->id;
     $DB->insert_record('user_enrolments', $userenrolmentdata);
     // Create a student with an assignment grade.
     $student = self::getDataGenerator()->create_user();
     $assigngrade = new stdClass();
     $assigngrade->assignment = $assign->id;
     $assigngrade->userid = $student->id;
     $assigngrade->timecreated = time();
     $assigngrade->timemodified = $assigngrade->timecreated;
     $assigngrade->grader = $USER->id;
     $assigngrade->grade = 50;
     $assigngrade->attemptnumber = 0;
     $gid = $DB->insert_record('assign_grades', $assigngrade);
     // Create a grading area.
     $gradingarea = array('contextid' => $modulecontext->id, 'component' => 'mod_assign', 'areaname' => 'submissions', 'activemethod' => 'rubric');
     $areaid = $DB->insert_record('grading_areas', $gradingarea);
     // Create a rubric grading definition.
     $rubricdefinition = array('areaid' => $areaid, 'method' => 'rubric', 'name' => 'test', 'status' => 20, 'copiedfromid' => 1, 'timecreated' => 1, 'usercreated' => $USER->id, 'timemodified' => 1, 'usermodified' => $USER->id, 'timecopied' => 0);
     $definitionid = $DB->insert_record('grading_definitions', $rubricdefinition);
     // Create a criterion with a level.
     $rubriccriteria = array('definitionid' => $definitionid, 'sortorder' => 1, 'description' => 'Demonstrate an understanding of disease control', 'descriptionformat' => 0);
     $criterionid = $DB->insert_record('gradingform_rubric_criteria', $rubriccriteria);
     $rubriclevel = array('criterionid' => $criterionid, 'score' => 50, 'definition' => 'pass', 'definitionformat' => 0);
     $levelid = $DB->insert_record('gradingform_rubric_levels', $rubriclevel);
     // Create a grading instance.
     $instance = array('definitionid' => $definitionid, 'raterid' => $USER->id, 'itemid' => $gid, 'status' => 1, 'feedbackformat' => 0, 'timemodified' => 1);
     $instanceid = $DB->insert_record('grading_instances', $instance);
     // Create a filling.
     $filling = array('instanceid' => $instanceid, 'criterionid' => $criterionid, 'levelid' => $levelid, 'remark' => 'excellent work', 'remarkformat' => 0);
     $DB->insert_record('gradingform_rubric_fillings', $filling);
     // Call the external function.
     $result = core_grading_external::get_gradingform_instances($definitionid, 0);
     $this->assertEquals(1, count($result['instances']));
     $this->assertEquals($USER->id, $result['instances'][0]['raterid']);
     $this->assertEquals($gid, $result['instances'][0]['itemid']);
     $this->assertEquals(1, $result['instances'][0]['status']);
     $this->assertEquals(1, $result['instances'][0]['timemodified']);
     $this->assertEquals(1, count($result['instances'][0]['rubric']));
     $this->assertEquals(1, count($result['instances'][0]['rubric']['criteria']));
     $criteria = $result['instances'][0]['rubric']['criteria'];
     $this->assertEquals($criterionid, $criteria[$criterionid]['criterionid']);
     $this->assertEquals($levelid, $criteria[$criterionid]['levelid']);
     $this->assertEquals('excellent work', $criteria[$criterionid]['remark']);
 }
Exemplo n.º 2
0
    /**
     *
     * Tests save_definitions for the marking guide grading method
     */
    public function test_save_definitions_marking_guide() {
        global $DB, $CFG, $USER;

        $this->resetAfterTest(true);
        // Create a course and assignment.
        $course = self::getDataGenerator()->create_course();
        $generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
        $params['course'] = $course->id;
        $instance = $generator->create_instance($params);
        $cm = get_coursemodule_from_instance('assign', $instance->id);
        $context = context_module::instance($cm->id);
        $coursecontext = context_course::instance($course->id);

        // Create the teacher.
        $teacher = self::getDataGenerator()->create_user();
        $USER->id = $teacher->id;
        $teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher'));
        $this->assignUserCapability('moodle/grade:managegradingforms', $context->id, $teacherrole->id);
        $this->getDataGenerator()->enrol_user($teacher->id,
                                              $course->id,
                                              $teacherrole->id);

        // Test insert a grading area with guide definition, criteria and comments.
        $gradingarea = array(
            'cmid' => $cm->id,
            'contextid' => $context->id,
            'component' => 'mod_assign',
            'areaname'  => 'submissions',
            'activemethod' => 'guide'
        );

        $guidedefinition = array(
            'method' => 'guide',
            'name' => 'test',
            'description' => '',
            'status' => 20,
            'copiedfromid' => 1,
            'timecreated' => 1,
            'usercreated' => $teacher->id,
            'timemodified' => 1,
            'usermodified' => $teacher->id,
            'timecopied' => 0
        );

        $guidecomment = array(
             'sortorder' => 1,
             'description' => 'Students need to show that they understand the control of zoonoses',
             'descriptionformat' => 0
        );
        $guidecriteria1 = array (
             'sortorder' => 1,
             'shortname' => 'Rabies Control',
             'description' => 'Understand rabies control techniques',
             'descriptionformat' => 0,
             'descriptionmarkers' => 'Student must demonstrate that they understand rabies control',
             'descriptionmarkersformat' => 0,
             'maxscore' => 50
        );
        $guidecriteria2 = array (
             'sortorder' => 2,
             'shortname' => 'Anthrax Control',
             'description' => 'Understand anthrax control',
             'descriptionformat' => 0,
             'descriptionmarkers' => 'Student must demonstrate that they understand anthrax control',
             'descriptionmarkersformat' => 0,
             'maxscore' => 50
        );

        $guidedefinition['guide'] = array('guide_criteria' => array($guidecriteria1, $guidecriteria2),
                                          'guide_comments' => array($guidecomment));
        $gradingarea['definitions'] = array($guidedefinition);

        $results = core_grading_external::save_definitions(array($gradingarea));
        $area = $DB->get_record('grading_areas',
                                array('contextid' => $context->id, 'component' => 'mod_assign', 'areaname' => 'submissions'),
                                '*', MUST_EXIST);
        $this->assertEquals($area->activemethod, 'guide');

        $definition = $DB->get_record('grading_definitions', array('areaid' => $area->id, 'method' => 'guide'), '*', MUST_EXIST);
        $this->assertEquals($guidedefinition['name'], $definition->name);
        $this->assertEquals(2, $DB->count_records('gradingform_guide_criteria', array('definitionid' => $definition->id)));
        $this->assertEquals(1, $DB->count_records('gradingform_guide_comments', array('definitionid' => $definition->id)));

        // Test removal of a criteria.
        $guidedefinition['guide'] = array('guide_criteria' => array($guidecriteria1),
                                          'guide_comments' => array($guidecomment));
        $gradingarea['definitions'] = array($guidedefinition);
        $results = core_grading_external::save_definitions(array($gradingarea));
        $this->assertEquals(1, $DB->count_records('gradingform_guide_criteria', array('definitionid' => $definition->id)));

        // Test an invalid method in the definition.
        $guidedefinition['method'] = 'invalid';
        $gradingarea['definitions'] = array($guidedefinition);
        $this->setExpectedException('invalid_parameter_exception');
        $results = core_grading_external::save_definitions(array($gradingarea));
    }
Exemplo n.º 3
0
 public static function get_definitions_returns()
 {
     return core_grading_external::get_definitions_returns();
 }