MDL-28420 enrol_database: Allow use of remote hidden field to specify non-enrolled 'Other User' creation
This commit is contained in:
+193
-144
@@ -118,6 +118,7 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$table->add_field('courseid', XMLDB_TYPE_CHAR, '255', null, null, null);
|
||||
$table->add_field('userid', XMLDB_TYPE_CHAR, '255', null, null, null);
|
||||
$table->add_field('roleid', XMLDB_TYPE_CHAR, '255', null, null, null);
|
||||
$table->add_field('otheruser', XMLDB_TYPE_CHAR, '1', null, XMLDB_NOTNULL, null, '0');
|
||||
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
|
||||
if ($dbman->table_exists($table)) {
|
||||
$dbman->drop_table($table);
|
||||
@@ -127,6 +128,7 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
set_config('remotecoursefield', 'courseid', 'enrol_database');
|
||||
set_config('remoteuserfield', 'userid', 'enrol_database');
|
||||
set_config('remoterolefield', 'roleid', 'enrol_database');
|
||||
set_config('remoteotheruserfield', 'otheruser', 'enrol_database');
|
||||
|
||||
$table = new xmldb_table('enrol_database_test_courses');
|
||||
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
|
||||
@@ -146,12 +148,12 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
set_config('newcoursecategory', 'category', 'enrol_database');
|
||||
|
||||
// Create some test users and courses.
|
||||
for($i=1;$i<=3;$i++) {
|
||||
self::$courses[$i] = $this->getDataGenerator()->create_course(array('fullname'=>'Test course '.$i, 'shortname'=>'tc'.$i, 'idnumber'=>'courseid'.$i));
|
||||
for ($i = 1; $i <= 4; $i++) {
|
||||
self::$courses[$i] = $this->getDataGenerator()->create_course(array('fullname' => 'Test course '.$i, 'shortname' => 'tc'.$i, 'idnumber' => 'courseid'.$i));
|
||||
}
|
||||
|
||||
for($i=1;$i<=10;$i++) {
|
||||
self::$users[$i] = $this->getDataGenerator()->create_user(array('username'=>'username'.$i, 'idnumber'=>'userid'.$i, 'email'=>'user'.$i.'@example.com'));
|
||||
for ($i = 1; $i <= 10; $i++) {
|
||||
self::$users[$i] = $this->getDataGenerator()->create_user(array('username' => 'username'.$i, 'idnumber' => 'userid'.$i, 'email' => 'user'.$i.'@example.com'));
|
||||
}
|
||||
|
||||
foreach (get_all_roles() as $role) {
|
||||
@@ -182,36 +184,43 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$DB->delete_records('enrol_database_test_courses', array());
|
||||
|
||||
$plugin = enrol_get_plugin('database');
|
||||
$instances = $DB->get_records('enrol', array('enrol'=>'database'));
|
||||
$instances = $DB->get_records('enrol', array('enrol' => 'database'));
|
||||
foreach($instances as $instance) {
|
||||
$plugin->delete_instance($instance);
|
||||
}
|
||||
}
|
||||
|
||||
public function assertIsEnrolled($userindex, $courseindex, $status=null, $rolename = null) {
|
||||
protected function assertIsEnrolled($userindex, $courseindex, $status=null, $rolename = null) {
|
||||
global $DB;
|
||||
$dbinstance = $DB->get_record('enrol', array('courseid'=>self::$courses[$courseindex]->id, 'enrol'=>'database'), '*', MUST_EXIST);
|
||||
$dbinstance = $DB->get_record('enrol', array('courseid' => self::$courses[$courseindex]->id, 'enrol' => 'database'), '*', MUST_EXIST);
|
||||
|
||||
$conditions = array('enrolid'=>$dbinstance->id, 'userid'=>self::$users[$userindex]->id);
|
||||
$conditions = array('enrolid' => $dbinstance->id, 'userid' => self::$users[$userindex]->id);
|
||||
if ($status !== null) {
|
||||
$conditions['status'] = $status;
|
||||
}
|
||||
$this->assertTrue($DB->record_exists('user_enrolments', $conditions));
|
||||
|
||||
$this->assertHasRoleAssignment($userindex, $courseindex, $rolename);
|
||||
}
|
||||
|
||||
protected function assertHasRoleAssignment($userindex, $courseindex, $rolename = null) {
|
||||
global $DB;
|
||||
$dbinstance = $DB->get_record('enrol', array('courseid' => self::$courses[$courseindex]->id, 'enrol' => 'database'), '*', MUST_EXIST);
|
||||
|
||||
$coursecontext = context_course::instance(self::$courses[$courseindex]->id);
|
||||
if ($rolename === false) {
|
||||
$this->assertFalse($DB->record_exists('role_assignments', array('component'=>'enrol_database', 'itemid'=>$dbinstance->id, 'userid'=>self::$users[$userindex]->id, 'contextid'=>$coursecontext->id)));
|
||||
$this->assertFalse($DB->record_exists('role_assignments', array('component' => 'enrol_database', 'itemid' => $dbinstance->id, 'userid' => self::$users[$userindex]->id, 'contextid' => $coursecontext->id)));
|
||||
} else if ($rolename !== null) {
|
||||
$this->assertTrue($DB->record_exists('role_assignments', array('component'=>'enrol_database', 'itemid'=>$dbinstance->id, 'userid'=>self::$users[$userindex]->id, 'contextid'=>$coursecontext->id, 'roleid'=>self::$roles[$rolename]->id)));
|
||||
$this->assertTrue($DB->record_exists('role_assignments', array('component' => 'enrol_database', 'itemid' => $dbinstance->id, 'userid' => self::$users[$userindex]->id, 'contextid' => $coursecontext->id, 'roleid' => self::$roles[$rolename]->id)));
|
||||
}
|
||||
}
|
||||
|
||||
public function assertIsNotEnrolled($userindex, $courseindex) {
|
||||
protected function assertIsNotEnrolled($userindex, $courseindex) {
|
||||
global $DB;
|
||||
if (!$dbinstance = $DB->get_record('enrol', array('courseid'=>self::$courses[$courseindex]->id, 'enrol'=>'database'))) {
|
||||
if (!$dbinstance = $DB->get_record('enrol', array('courseid' => self::$courses[$courseindex]->id, 'enrol' => 'database'))) {
|
||||
return;
|
||||
}
|
||||
$this->assertFalse($DB->record_exists('user_enrolments', array('enrolid'=>$dbinstance->id, 'userid'=>self::$users[$userindex]->id)));
|
||||
$this->assertFalse($DB->record_exists('user_enrolments', array('enrolid' => $dbinstance->id, 'userid' => self::$users[$userindex]->id)));
|
||||
}
|
||||
|
||||
public function test_sync_user_enrolments() {
|
||||
@@ -233,20 +242,21 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
$plugin->set_config('defaultrole', self::$roles['student']->id);
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid2', 'roleid'=>'teacher'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid2', 'courseid'=>'courseid1', 'roleid'=>null));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'xxxxxxx', 'courseid'=>'courseid1', 'roleid'=>'student')); // Bogus record to be ignored.
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'xxxxxxxxx', 'roleid'=>'student')); // Bogus record to be ignored.
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid2', 'roleid' => 'teacher'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid2', 'courseid' => 'courseid1', 'roleid' => null));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid4', 'courseid' => 'courseid4', 'roleid' => 'editingteacher', 'otheruser' => '1'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'xxxxxxx', 'courseid' => 'courseid1', 'roleid' => 'student')); // Bogus record to be ignored.
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'xxxxxxxxx', 'roleid' => 'student')); // Bogus record to be ignored.
|
||||
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
@@ -254,27 +264,37 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[2]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[4]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
|
||||
// Enrolment removals.
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_KEEP);
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
@@ -282,68 +302,76 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_SUSPEND);
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_SUSPENDED, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_SUSPENDNOROLES);
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_SUSPENDED, false);
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_UNENROL);
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsNotEnrolled(1, 1);
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid4', 'courseid' => 'courseid4', 'roleid' => 'editingteacher'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_SUSPENDNOROLES);
|
||||
$plugin->sync_user_enrolments(self::$users[4]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, false);
|
||||
|
||||
// Test all other mapping options.
|
||||
|
||||
$this->reset_enrol_database();
|
||||
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
|
||||
$plugin->set_config('localcoursefield', 'id');
|
||||
$plugin->set_config('localuserfield', 'id');
|
||||
$plugin->set_config('localrolefield', 'id');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->id, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->id, 'courseid'=>self::$courses[2]->id, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->id, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->id, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->id, 'courseid' => self::$courses[2]->id, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->id, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
@@ -353,14 +381,14 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('localuserfield', 'email');
|
||||
$plugin->set_config('localrolefield', 'id');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->email, 'courseid'=>self::$courses[1]->shortname, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->email, 'courseid'=>self::$courses[2]->shortname, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->email, 'courseid'=>self::$courses[1]->shortname, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->email, 'courseid' => self::$courses[1]->shortname, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->email, 'courseid' => self::$courses[2]->shortname, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->email, 'courseid' => self::$courses[1]->shortname, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
@@ -370,14 +398,14 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('localuserfield', 'username');
|
||||
$plugin->set_config('localrolefield', 'id');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->username, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->username, 'courseid'=>self::$courses[2]->id, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->username, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->username, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->username, 'courseid' => self::$courses[2]->id, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->username, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$plugin->sync_user_enrolments(self::$users[1]);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
}
|
||||
@@ -403,123 +431,144 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('localuserfield', 'idnumber');
|
||||
$plugin->set_config('localrolefield', 'shortname');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid2', 'roleid'=>'editingteacher'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid2', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'xxxxxxx', 'courseid'=>'courseid1', 'roleid'=>'student')); // Bogus record to be ignored.
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'xxxxxxxxx', 'roleid'=>'student')); // Bogus record to be ignored.
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid2', 'roleid' => 'editingteacher'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid2', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid4', 'courseid' => 'courseid4', 'roleid' => 'editingteacher', 'otheruser' => '1'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'xxxxxxx', 'courseid' => 'courseid1', 'roleid' => 'student')); // Bogus record to be ignored.
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'xxxxxxxxx', 'roleid' => 'student')); // Bogus record to be ignored.
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
|
||||
$plugin->set_config('defaultrole', self::$roles['teacher']->id);
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid3', 'courseid'=>'courseid3'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid3', 'courseid' => 'courseid3'));
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
// Test different unenrolment options.
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_KEEP);
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_SUSPEND);
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_SUSPENDED, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_SUSPENDNOROLES);
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_SUSPENDED, false);
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$plugin->set_config('unenrolaction', ENROL_EXT_REMOVED_UNENROL);
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsNotEnrolled(1, 1);
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'teacher'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'student'));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'teacher'));
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(6, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid'=>'userid1', 'courseid'=>'courseid1', 'roleid'=>'teacher'));
|
||||
$DB->delete_records('enrol_database_test_enrols', array('userid' => 'userid1', 'courseid' => 'courseid1', 'roleid' => 'teacher'));
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(4, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(4, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(4, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(5, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'editingteacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsNotEnrolled(4, 4);
|
||||
$this->assertHasRoleAssignment(4, 4, 'editingteacher');
|
||||
$this->assertIsEnrolled(3, 3, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
|
||||
@@ -528,21 +577,21 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$this->reset_enrol_database();
|
||||
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
|
||||
$plugin->set_config('localcoursefield', 'id');
|
||||
$plugin->set_config('localuserfield', 'id');
|
||||
$plugin->set_config('localrolefield', 'id');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->id, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->id, 'courseid'=>self::$courses[2]->id, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->id, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->id, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->id, 'courseid' => self::$courses[2]->id, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->id, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
@@ -553,14 +602,14 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('localuserfield', 'email');
|
||||
$plugin->set_config('localrolefield', 'id');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->email, 'courseid'=>self::$courses[1]->shortname, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->email, 'courseid'=>self::$courses[2]->shortname, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->email, 'courseid'=>self::$courses[1]->shortname, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->email, 'courseid' => self::$courses[1]->shortname, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->email, 'courseid' => self::$courses[2]->shortname, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->email, 'courseid' => self::$courses[1]->shortname, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
@@ -571,14 +620,14 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('localuserfield', 'username');
|
||||
$plugin->set_config('localrolefield', 'id');
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->username, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->username, 'courseid'=>self::$courses[2]->id, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->username, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->username, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->username, 'courseid' => self::$courses[2]->id, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->username, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$plugin->sync_enrolments($trace);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
@@ -588,30 +637,30 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
$this->reset_enrol_database();
|
||||
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->username, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[1]->username, 'courseid'=>self::$courses[2]->id, 'roleid'=>self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid'=>self::$users[2]->username, 'courseid'=>self::$courses[1]->id, 'roleid'=>self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->username, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[1]->username, 'courseid' => self::$courses[2]->id, 'roleid' => self::$roles['teacher']->id));
|
||||
$DB->insert_record('enrol_database_test_enrols', array('userid' => self::$users[2]->username, 'courseid' => self::$courses[1]->id, 'roleid' => self::$roles['student']->id));
|
||||
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(0, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
|
||||
$plugin->sync_enrolments($trace, self::$courses[3]->id);
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(1, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(1, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
|
||||
$plugin->sync_enrolments($trace, self::$courses[1]->id);
|
||||
$this->assertEquals(2, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(2, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
|
||||
$plugin->sync_enrolments($trace, self::$courses[2]->id);
|
||||
$this->assertEquals(3, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(3, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 1, ENROL_USER_ACTIVE, 'student');
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
$this->assertIsEnrolled(2, 1, ENROL_USER_ACTIVE, 'student');
|
||||
@@ -623,14 +672,14 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
$plugin->sync_enrolments($trace, self::$courses[1]->id);
|
||||
$this->assertEquals(1, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(1, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(1, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
$this->assertIsEnrolled(1, 2, ENROL_USER_ACTIVE, 'teacher');
|
||||
|
||||
$plugin->sync_enrolments($trace, self::$courses[2]->id);
|
||||
$this->assertEquals(0, $DB->count_records('user_enrolments', array()));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol'=>'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_database')));
|
||||
$this->assertEquals(3, $DB->count_records('enrol', array('enrol' => 'database')));
|
||||
$this->assertEquals(0, $DB->count_records('role_assignments', array('component' => 'enrol_database')));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -648,16 +697,16 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$trace = new null_progress_trace();
|
||||
|
||||
$plugin->set_config('localcategoryfield', 'id');
|
||||
$coursecat = $this->getDataGenerator()->create_category(array('name'=>'Test category 1', 'idnumber'=>'tcid1'));
|
||||
$defcat = $DB->get_record('course_categories', array('id'=>$plugin->get_config('defaultcategory')));
|
||||
$coursecat = $this->getDataGenerator()->create_category(array('name' => 'Test category 1', 'idnumber' => 'tcid1'));
|
||||
$defcat = $DB->get_record('course_categories', array('id' => $plugin->get_config('defaultcategory')));
|
||||
|
||||
$course1 = array('fullname'=>'New course 1', 'shortname'=>'nc1', 'idnumber'=>'ncid1', 'category'=>$coursecat->id);
|
||||
$course2 = array('fullname'=>'New course 2', 'shortname'=>'nc2', 'idnumber'=>'ncid2', 'category'=>null);
|
||||
$course1 = array('fullname' => 'New course 1', 'shortname' => 'nc1', 'idnumber' => 'ncid1', 'category' => $coursecat->id);
|
||||
$course2 = array('fullname' => 'New course 2', 'shortname' => 'nc2', 'idnumber' => 'ncid2', 'category' => null);
|
||||
// Duplicate records are to be ignored.
|
||||
$course3 = array('fullname'=>'New course 3', 'shortname'=>'xx', 'idnumber'=>'yy2', 'category'=>$defcat->id);
|
||||
$course4 = array('fullname'=>'New course 4', 'shortname'=>'xx', 'idnumber'=>'yy3', 'category'=>$defcat->id);
|
||||
$course5 = array('fullname'=>'New course 5', 'shortname'=>'xx1', 'idnumber'=>'yy', 'category'=>$defcat->id);
|
||||
$course6 = array('fullname'=>'New course 6', 'shortname'=>'xx2', 'idnumber'=>'yy', 'category'=>$defcat->id);
|
||||
$course3 = array('fullname' => 'New course 3', 'shortname' => 'xx', 'idnumber' => 'yy2', 'category' => $defcat->id);
|
||||
$course4 = array('fullname' => 'New course 4', 'shortname' => 'xx', 'idnumber' => 'yy3', 'category' => $defcat->id);
|
||||
$course5 = array('fullname' => 'New course 5', 'shortname' => 'xx1', 'idnumber' => 'yy', 'category' => $defcat->id);
|
||||
$course6 = array('fullname' => 'New course 6', 'shortname' => 'xx2', 'idnumber' => 'yy', 'category' => $defcat->id);
|
||||
|
||||
$DB->insert_record('enrol_database_test_courses', $course1);
|
||||
$DB->insert_record('enrol_database_test_courses', $course2);
|
||||
@@ -679,14 +728,14 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
// People should NOT push duplicates there because the results are UNDEFINED! But anyway skip the duplicates.
|
||||
|
||||
$this->assertEquals(1, $DB->count_records('course', array('idnumber'=>'yy')));
|
||||
$this->assertEquals(1, $DB->count_records('course', array('shortname'=>'xx')));
|
||||
$this->assertEquals(1, $DB->count_records('course', array('idnumber' => 'yy')));
|
||||
$this->assertEquals(1, $DB->count_records('course', array('shortname' => 'xx')));
|
||||
|
||||
|
||||
// Test category mapping via idnumber.
|
||||
|
||||
$plugin->set_config('localcategoryfield', 'idnumber');
|
||||
$course7 = array('fullname'=>'New course 7', 'shortname'=>'nc7', 'idnumber'=>'ncid7', 'category'=>'tcid1');
|
||||
$course7 = array('fullname' => 'New course 7', 'shortname' => 'nc7', 'idnumber' => 'ncid7', 'category' => 'tcid1');
|
||||
$DB->insert_record('enrol_database_test_courses', $course7);
|
||||
$plugin->sync_courses($trace);
|
||||
|
||||
@@ -699,10 +748,10 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
// Test course template.
|
||||
|
||||
$template = $this->getDataGenerator()->create_course(array('numsections'=>666, 'shortname'=>'crstempl'));
|
||||
$template = $this->getDataGenerator()->create_course(array('numsections' => 666, 'shortname' => 'crstempl'));
|
||||
$plugin->set_config('templatecourse', 'crstempl');
|
||||
|
||||
$course8 = array('fullname'=>'New course 8', 'shortname'=>'nc8', 'idnumber'=>'ncid8', 'category'=>null);
|
||||
$course8 = array('fullname' => 'New course 8', 'shortname' => 'nc8', 'idnumber' => 'ncid8', 'category' => null);
|
||||
$DB->insert_record('enrol_database_test_courses', $course8);
|
||||
$plugin->sync_courses($trace);
|
||||
|
||||
@@ -715,11 +764,11 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
|
||||
// Test invalid category.
|
||||
|
||||
$course9 = array('fullname'=>'New course 9', 'shortname'=>'nc9', 'idnumber'=>'ncid9', 'category'=>'xxxxxxx');
|
||||
$course9 = array('fullname' => 'New course 9', 'shortname' => 'nc9', 'idnumber' => 'ncid9', 'category' => 'xxxxxxx');
|
||||
$DB->insert_record('enrol_database_test_courses', $course9);
|
||||
$plugin->sync_courses($trace);
|
||||
$this->assertEquals(2+1+4+1+count(self::$courses), $DB->count_records('course'));
|
||||
$this->assertFalse($DB->record_exists('course', array('idnumber'=>'ncid9')));
|
||||
$this->assertFalse($DB->record_exists('course', array('idnumber' => 'ncid9')));
|
||||
|
||||
|
||||
// Test when categories not specified.
|
||||
@@ -727,7 +776,7 @@ class enrol_database_testcase extends advanced_testcase {
|
||||
$plugin->set_config('newcoursecategory', '');
|
||||
$plugin->sync_courses($trace);
|
||||
$this->assertEquals(1+2+1+4+1+count(self::$courses), $DB->count_records('course'));
|
||||
$this->assertTrue($DB->record_exists('course', array('idnumber'=>'ncid9')));
|
||||
$this->assertTrue($DB->record_exists('course', array('idnumber' => 'ncid9')));
|
||||
|
||||
|
||||
// Final cleanup - remove extra tables, fixtures and caches.
|
||||
|
||||
Reference in New Issue
Block a user