/**
  * Validate that mappings are applied during the course description create action
  */
 public function test_mapping_applied_during_course_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/curriculum.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/curriculumcourse.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/course.class.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/data/coursetemplate.class.php';
     $this->init_mapping();
     $customfieldid = $this->create_custom_field(CONTEXT_ELIS_COURSE);
     set_config('defaultblocks_override', ' ');
     $program = new curriculum(array('idnumber' => 'testprogramidnumber'));
     $program->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 course create action.
     $record = new stdClass();
     $record->customaction = 'create';
     $record->customcontext = 'course';
     $record->customname = 'testcoursename';
     $record->customcode = 'testcoursecode';
     $record->customidnumber = 'testcourseidnumber';
     $record->customsyllabus = 'testcoursesyllabus';
     $record->customlengthdescription = 'testcourselengthdescription';
     $record->customlength = '1';
     $record->customcredits = '1';
     $record->customcompletion_grade = '50';
     $record->customcost = '5';
     $record->customversion = '1';
     $record->customassignment = 'testprogramidnumber';
     $record->customlink = 'testcourseshortname';
     $record->customtestfieldshortname = '1';
     $pmcourse = new course();
     $pmcourse->reset_custom_field_list();
     $this->run_pmentity_import((array) $record);
     // Validation.
     $data = array('name' => 'testcoursename', 'code' => 'testcoursecode', 'idnumber' => 'testcourseidnumber', 'lengthdescription' => 'testcourselengthdescription', 'length' => 1, 'credits' => 1, 'completion_grade' => 50, 'cost' => '5', 'version' => '1');
     $this->assertTrue($DB->record_exists(course::TABLE, $data));
     $record = $DB->get_record(course::TABLE, array('idnumber' => 'testcourseidnumber'));
     $this->assertEquals('testcoursesyllabus', $record->syllabus);
     $this->assertTrue($DB->record_exists(curriculumcourse::TABLE, array('curriculumid' => $program->id, 'courseid' => $record->id)));
     $this->assertTrue($DB->record_exists(coursetemplate::TABLE, array('courseid' => $record->id, 'location' => $course->id)));
     $instance = \local_elisprogram\context\course::instance(1);
     $this->assertTrue($DB->record_exists(field_data_int::TABLE, array('fieldid' => $customfieldid, 'contextid' => $instance->id, 'data' => 1)));
 }
Exemplo n.º 2
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}%")));
     }
 }
Exemplo n.º 3
0
 /**
  * Test that the pm_migrate_environments() function works correctly
  */
 public function test_pmmigrateenvironments()
 {
     global $DB;
     $this->load_csv_data();
     // Migrate the legacy environment data to new ELIS filelds.
     pm_migrate_environments();
     // Initialize the course object.
     $course = new course(100);
     $course->reset_custom_field_list();
     $course->load();
     $course = $course->to_object();
     // Get the field data from the object.
     $this->assertObjectHasAttribute('field__19upgrade_course_environment', $course);
     $this->assertEquals('Testing', $course->field__19upgrade_course_environment);
     // Let's do some extra DB-level validation (though it's probably not necessary).
     $field = $DB->get_record(field::TABLE, array('shortname' => '_19upgrade_course_environment'));
     $this->assertGreaterThan(0, $field->id);
     $context = \local_elisprogram\context\course::instance($course->id);
     $this->assertTrue($DB->record_exists(field_data_char::TABLE, array('contextid' => $context->id, 'fieldid' => $field->id)));
 }