/**
  * Test get_user_flags
  */
 public function test_get_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 and give them a user flag record.
     $student = self::getDataGenerator()->create_user();
     $userflag = new stdClass();
     $userflag->assignment = $assign->id;
     $userflag->userid = $student->id;
     $userflag->locked = 0;
     $userflag->mailed = 0;
     $userflag->extensionduedate = 0;
     $userflag->workflowstate = 'inmarking';
     $userflag->allocatedmarker = $USER->id;
     $DB->insert_record('assign_user_flags', $userflag);
     $assignmentids[] = $assign->id;
     $result = mod_assign_external::get_user_flags($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_user_flags_returns(), $result);
     // Check that the correct user flag information for the student is returned.
     $this->assertEquals(1, count($result['assignments']));
     $assignment = $result['assignments'][0];
     $this->assertEquals($assign->id, $assignment['assignmentid']);
     // Should be one user flag record.
     $this->assertEquals(1, count($assignment['userflags']));
     $userflag = $assignment['userflags'][0];
     $this->assertEquals($student->id, $userflag['userid']);
     $this->assertEquals(0, $userflag['locked']);
     $this->assertEquals(0, $userflag['mailed']);
     $this->assertEquals(0, $userflag['extensionduedate']);
     $this->assertEquals('inmarking', $userflag['workflowstate']);
     $this->assertEquals($USER->id, $userflag['allocatedmarker']);
 }