/** * Test set_user_flags */ public function test_set_user_flags() { 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. $manualenroldata['enrol'] = 'manual'; $manualenroldata['status'] = 0; $manualenroldata['courseid'] = $course->id; $enrolid = $DB->insert_record('enrol', $manualenroldata); // 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->cmid); $this->assignUserCapability('mod/assign:grade', $context->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. $student = self::getDataGenerator()->create_user(); // Create test user flags record. $userflags = array(); $userflag['userid'] = $student->id; $userflag['workflowstate'] = 'inmarking'; $userflag['allocatedmarker'] = $USER->id; $userflags = array($userflag); $createduserflags = mod_assign_external::set_user_flags($assign->id, $userflags); // We need to execute the return values cleaning process to simulate the web service server. $createduserflags = external_api::clean_returnvalue(mod_assign_external::set_user_flags_returns(), $createduserflags); $this->assertEquals($student->id, $createduserflags[0]['userid']); $createduserflag = $DB->get_record('assign_user_flags', array('id' => $createduserflags[0]['id'])); // Confirm that all data was inserted correctly. $this->assertEquals($student->id, $createduserflag->userid); $this->assertEquals($assign->id, $createduserflag->assignment); $this->assertEquals(0, $createduserflag->locked); $this->assertEquals(2, $createduserflag->mailed); $this->assertEquals(0, $createduserflag->extensionduedate); $this->assertEquals('inmarking', $createduserflag->workflowstate); $this->assertEquals($USER->id, $createduserflag->allocatedmarker); // Create update data. $userflags = array(); $userflag['userid'] = $createduserflag->userid; $userflag['workflowstate'] = 'readyforreview'; $userflags = array($userflag); $updateduserflags = mod_assign_external::set_user_flags($assign->id, $userflags); // We need to execute the return values cleaning process to simulate the web service server. $updateduserflags = external_api::clean_returnvalue(mod_assign_external::set_user_flags_returns(), $updateduserflags); $this->assertEquals($student->id, $updateduserflags[0]['userid']); $updateduserflag = $DB->get_record('assign_user_flags', array('id' => $updateduserflags[0]['id'])); // Confirm that all data was updated correctly. $this->assertEquals($student->id, $updateduserflag->userid); $this->assertEquals($assign->id, $updateduserflag->assignment); $this->assertEquals(0, $updateduserflag->locked); $this->assertEquals(2, $updateduserflag->mailed); $this->assertEquals(0, $updateduserflag->extensionduedate); $this->assertEquals('readyforreview', $updateduserflag->workflowstate); $this->assertEquals($USER->id, $updateduserflag->allocatedmarker); }