示例#1
0
 /**
  * Validating that enrolling a user in a class instance with a passed status triggers the class
  * completed notification
  *
  * @param int $completestatus The completion status to enrol the user with
  * @param boolean $expectmessage Whether we expect the notification message to be sent
  * @dataProvider enrolment_completion_on_create_provider
  */
 public function test_class_completion_sends_class_completed_notification_on_enrolment_create($completestatus, $expectmessage)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/course.class.php');
     require_once elispm::lib('data/pmclass.class.php');
     require_once elispm::lib('data/user.class.php');
     // Configuration.
     set_config('popup_provider_elis_program_notify_pm_permitted', 1, 'message');
     set_config('email_provider_elis_program_notify_pm_permitted', 1, 'message');
     set_config('notify_classcompleted_user', 1, 'local_elisprogram');
     $message = '%%userenrolname%% has completed the class instance %%classname%%.';
     set_config('notify_classcompleted_message', $message, 'local_elisprogram');
     // Force refreshing of configuration.
     elis::$config = new elis_config();
     $this->setAdminUser();
     unset_config('noemailever');
     // Setup.
     $user = new user(array('idnumber' => 'testuseridnumber', 'username' => 'testuserusername', 'firstname' => 'testuserfirstname', 'lastname' => 'testuserlastname', 'email' => '*****@*****.**', 'country' => 'CA'));
     $user->reset_custom_field_list();
     $user->save();
     $course = new course(array('name' => 'testcoursename', 'idnumber' => 'testcourseidnumber', 'syllabus' => ''));
     $course->reset_custom_field_list();
     $course->save();
     $class = new pmclass(array('courseid' => $course->id, 'idnumber' => 'testclassidnumber'));
     $class->reset_custom_field_list();
     $class->save();
     // Run the enrolment create action.
     $record = new stdClass();
     $record->context = 'class_testclassidnumber';
     $record->user_username = '******';
     $record->completestatusid = $completestatus;
     $importplugin = rlip_dataplugin_factory::factory('dhimport_version1elis');
     $importplugin->fslogger = new silent_fslogger(null);
     $sink = $this->redirectEmails();
     $importplugin->class_enrolment_create($record, 'bogus', 'testclassidnumber');
     if ($completestatus !== student::STUSTATUS_NOTCOMPLETE) {
         $this->assertEquals(1, count($sink->get_messages()));
     } else {
         $this->assertEquals(0, count($sink->get_messages()));
     }
     $sink->close();
     // Validation.
     $mdluserid = $DB->get_field('user', 'id', array('username' => 'testuserusername'));
     $expectedmessage = "{$user->firstname} {$user->lastname} has completed the class instance {$course->name}.";
     $like = $DB->sql_like('fullmessagehtml', ':message');
     $select = "useridto = :userid\n                   AND {$like}";
     if ($expectmessage) {
         $this->assertTrue($DB->record_exists_select('message', $select, array('userid' => $mdluserid, 'message' => "{$expectedmessage}%")));
     } else {
         $this->assertFalse($DB->record_exists_select('message', $select, array('userid' => $mdluserid, 'message' => "{$expectedmessage}%")));
     }
 }
 /**
  * Validate that mappings are applied during the class instance create action
  */
 public function test_mapping_applied_during_class_create()
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/course/lib.php';
     require_once $CFG->dirroot . '/local/eliscore/lib/data/customfield.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/accesslib.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/classmoodlecourse.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/course.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/curriculum.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/pmclass.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/track.class.php';
     $this->init_mapping();
     $customfieldid = $this->create_custom_field(CONTEXT_ELIS_CLASS);
     $pmcourse = new course(array('name' => 'testcoursename', 'idnumber' => 'testcourseidnumber', 'syllabus' => ''));
     $pmcourse->save();
     $program = new curriculum(array('idnumber' => 'testprogramidnumber'));
     $program->save();
     $track = new track(array('curid' => $program->id, 'idnumber' => 'testtrackidnumber'));
     $track->save();
     $category = new stdClass();
     $category->name = 'testcategoryname';
     $category->id = $DB->insert_record('course_categories', $category);
     $course = new stdClass();
     $course->category = $category->id;
     $course->shortname = 'testcourseshortname';
     $course->fullname = 'testcoursefullname';
     $course = create_course($course);
     // Run the class create action.
     $record = new stdClass();
     $record->customaction = 'create';
     $record->customcontext = 'class';
     $record->customidnumber = 'testclassidnumber';
     $record->customstartdate = 'Jan/01/2012';
     $record->customenddate = 'Jan/01/2012';
     $record->customstarttimehour = '1';
     $record->customstarttimeminute = '5';
     $record->customendtimehour = '1';
     $record->customendtimeminute = '5';
     $record->custommaxstudents = '1';
     $record->customenrol_from_waitlist = '1';
     $record->customassignment = 'testcourseidnumber';
     $record->customtrack = 'testtrackidnumber';
     $record->customautoenrol = '1';
     $record->customlink = 'testcourseshortname';
     $record->customtestfieldshortname = '1';
     $class = new pmclass();
     $class->reset_custom_field_list();
     $this->run_pmentity_import((array) $record);
     // Validation.
     $data = array('courseid' => $pmcourse->id, 'idnumber' => 'testclassidnumber', 'startdate' => rlip_timestamp(0, 0, 0, 1, 1, 2012), 'enddate' => rlip_timestamp(0, 0, 0, 1, 1, 2012), 'starttimehour' => 1, 'starttimeminute' => 5, 'endtimehour' => 1, 'endtimeminute' => 5, 'maxstudents' => 1, 'enrol_from_waitlist' => 1);
     $this->assertTrue($DB->record_exists(pmclass::TABLE, $data));
     $record = $DB->get_record(pmclass::TABLE, array('idnumber' => 'testclassidnumber'));
     $this->assertTrue($DB->record_exists(trackassignment::TABLE, array('classid' => $record->id, 'trackid' => $track->id, 'autoenrol' => 1)));
     $this->assertTrue($DB->record_exists(classmoodlecourse::TABLE, array('classid' => $record->id, 'moodlecourseid' => $course->id)));
     $instance = \local_elisprogram\context\pmclass::instance(1);
     $this->assertTrue($DB->record_exists(field_data_int::TABLE, array('fieldid' => $customfieldid, 'contextid' => $instance->id, 'data' => 1)));
 }