Esempio n. 1
0
 /**
  * Test get_grades
  */
 public function test_get_grades()
 {
     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 a manual enrolment record.
     $manual_enrol_data['enrol'] = 'manual';
     $manual_enrol_data['status'] = 0;
     $manual_enrol_data['courseid'] = $course->id;
     $enrolid = $DB->insert_record('enrol', $manual_enrol_data);
     // Create a teacher and give them capabilities.
     $context = context_course::instance($course->id);
     $roleid = $this->assignUserCapability('moodle/course:viewparticipants', $context->id, 3);
     $context = context_module::instance($assign->id);
     $this->assignUserCapability('mod/assign:grade', $context->id, $roleid);
     // Create the teacher's enrolment record.
     $user_enrolment_data['status'] = 0;
     $user_enrolment_data['enrolid'] = $enrolid;
     $user_enrolment_data['userid'] = $USER->id;
     $DB->insert_record('user_enrolments', $user_enrolment_data);
     // Create a student and give them a grade.
     $student = self::getDataGenerator()->create_user();
     $grade = new stdClass();
     $grade->assignment = $assign->id;
     $grade->userid = $student->id;
     $grade->timecreated = time();
     $grade->timemodified = $grade->timecreated;
     $grade->grader = $USER->id;
     $grade->grade = 75;
     $grade->locked = false;
     $grade->mailed = true;
     $DB->insert_record('assign_grades', $grade);
     $assignmentids[] = $assign->id;
     $result = mod_assign_external::get_grades($assignmentids);
     // Check that the correct grade information for the student is returned.
     $this->assertEquals(1, count($result['assignments']));
     $assignment = $result['assignments'][0];
     $this->assertEquals($assign->id, $assignment['assignmentid']);
     $this->assertEquals(1, count($assignment['grades']));
     $grade = $assignment['grades'][0];
     $this->assertEquals($student->id, $grade['userid']);
     $this->assertEquals(75, $grade['grade']);
 }
Esempio n. 2
0
 /**
  * Test save_grade
  */
 public function test_save_grade()
 {
     global $DB, $USER;
     $this->resetAfterTest(true);
     // Create a course and assignment and users.
     $course = self::getDataGenerator()->create_course();
     $teacher = self::getDataGenerator()->create_user();
     $teacherrole = $DB->get_record('role', array('shortname' => 'teacher'));
     $this->getDataGenerator()->enrol_user($teacher->id, $course->id, $teacherrole->id);
     $this->setUser($teacher);
     $generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
     $params['course'] = $course->id;
     $params['assignfeedback_file_enabled'] = 1;
     $params['assignfeedback_comments_enabled'] = 1;
     $instance = $generator->create_instance($params);
     $cm = get_coursemodule_from_instance('assign', $instance->id);
     $context = context_module::instance($cm->id);
     $assign = new assign($context, $cm, $course);
     $student1 = self::getDataGenerator()->create_user();
     $student2 = self::getDataGenerator()->create_user();
     $studentrole = $DB->get_record('role', array('shortname' => 'student'));
     $this->getDataGenerator()->enrol_user($student1->id, $course->id, $studentrole->id);
     $this->getDataGenerator()->enrol_user($student2->id, $course->id, $studentrole->id);
     // Simulate a grade.
     $this->setUser($teacher);
     // Create a file in a draft area.
     $draftidfile = file_get_unused_draft_itemid();
     $usercontext = context_user::instance($teacher->id);
     $filerecord = array('contextid' => $usercontext->id, 'component' => 'user', 'filearea' => 'draft', 'itemid' => $draftidfile, 'filepath' => '/', 'filename' => 'testtext.txt');
     $fs = get_file_storage();
     $fs->create_file_from_string($filerecord, 'text contents');
     // Now try a grade.
     $feedbackpluginparams = array();
     $feedbackpluginparams['files_filemanager'] = $draftidfile;
     $feedbackeditorparams = array('text' => 'Yeeha!', 'format' => 1);
     $feedbackpluginparams['assignfeedbackcomments_editor'] = $feedbackeditorparams;
     $result = mod_assign_external::save_grade($instance->id, $student1->id, 50.0, -1, true, 'released', false, $feedbackpluginparams);
     // No warnings.
     $this->assertNull($result);
     $result = mod_assign_external::get_grades(array($instance->id));
     $result = external_api::clean_returnvalue(mod_assign_external::get_grades_returns(), $result);
     $this->assertEquals($result['assignments'][0]['grades'][0]['grade'], '50.0');
 }
Esempio n. 3
0
    /**
     * Test get_grades
     */
    public function test_get_grades () {
        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 a manual enrolment record.
        $manual_enrol_data['enrol'] = 'manual';
        $manual_enrol_data['status'] = 0;
        $manual_enrol_data['courseid'] = $course->id;
        $enrolid = $DB->insert_record('enrol', $manual_enrol_data);

        // Create a teacher and give them capabilities.
        $context = context_course::instance($course->id);
        $roleid = $this->assignUserCapability('moodle/course:viewparticipants', $context->id, 3);
        $context = context_module::instance($assign->id);
        $this->assignUserCapability('mod/assign:grade', $context->id, $roleid);

        // Create the teacher's enrolment record.
        $user_enrolment_data['status'] = 0;
        $user_enrolment_data['enrolid'] = $enrolid;
        $user_enrolment_data['userid'] = $USER->id;
        $DB->insert_record('user_enrolments', $user_enrolment_data);

        // Create a student and give them 2 grades (for 2 attempts).
        $student = self::getDataGenerator()->create_user();
        $grade = new stdClass();
        $grade->assignment = $assign->id;
        $grade->userid = $student->id;
        $grade->timecreated = time();
        $grade->timemodified = $grade->timecreated;
        $grade->grader = $USER->id;
        $grade->grade = 50;
        $grade->attemptnumber = 0;
        $DB->insert_record('assign_grades', $grade);

        $grade = new stdClass();
        $grade->assignment = $assign->id;
        $grade->userid = $student->id;
        $grade->timecreated = time();
        $grade->timemodified = $grade->timecreated;
        $grade->grader = $USER->id;
        $grade->grade = 75;
        $grade->attemptnumber = 1;
        $DB->insert_record('assign_grades', $grade);

        $assignmentids[] = $assign->id;
        $result = mod_assign_external::get_grades($assignmentids);

        // We need to execute the return values cleaning process to simulate the web service server.
        $result = external_api::clean_returnvalue(mod_assign_external::get_grades_returns(), $result);

        // Check that the correct grade information for the student is returned.
        $this->assertEquals(1, count($result['assignments']));
        $assignment = $result['assignments'][0];
        $this->assertEquals($assign->id, $assignment['assignmentid']);
        // Should only get the last grade for this student.
        $this->assertEquals(1, count($assignment['grades']));
        $grade = $assignment['grades'][0];
        $this->assertEquals($student->id, $grade['userid']);
        // Should be the last grade (not the first)
        $this->assertEquals(75, $grade['grade']);
    }