MDL-17929 enrol_meta: unittest for unenrolment from group

This commit is contained in:
Marina Glancy 2015-04-23 15:08:07 +08:00
parent 9c1561ef83
commit f99fe11045

View File

@ -532,6 +532,68 @@ class enrol_meta_plugin_testcase extends advanced_testcase {
$this->assertFalse(is_enrolled(context_course::instance($course3->id), $user4, '', true));
}
/**
* Enrol users from another course into a course where one of the members is already enrolled
* and is a member of the same group.
*/
public function test_add_to_group_with_member() {
global $CFG, $DB;
require_once($CFG->dirroot.'/group/lib.php');
$this->resetAfterTest(true);
$metalplugin = enrol_get_plugin('meta');
$user1 = $this->getDataGenerator()->create_user();
$user2 = $this->getDataGenerator()->create_user();
$course1 = $this->getDataGenerator()->create_course();
$course2 = $this->getDataGenerator()->create_course();
$manualenrol1 = $DB->get_record('enrol', array('courseid' => $course1->id, 'enrol' => 'manual'), '*', MUST_EXIST);
$manualenrol2 = $DB->get_record('enrol', array('courseid' => $course2->id, 'enrol' => 'manual'), '*', MUST_EXIST);
$student = $DB->get_record('role', array('shortname' => 'student'));
$groupid = groups_create_group((object)array('name' => 'Grp', 'courseid' => $course2->id));
$this->enable_plugin();
set_config('unenrolaction', ENROL_EXT_REMOVED_UNENROL, 'enrol_meta');
// Manually enrol user1 to course2 and add him to group.
// Manually enrol user2 to course2 but do not add him to the group.
enrol_get_plugin('manual')->enrol_user($manualenrol2, $user1->id, $student->id);
groups_add_member($groupid, $user1->id);
enrol_get_plugin('manual')->enrol_user($manualenrol2, $user2->id, $student->id);
$this->assertTrue(groups_is_member($groupid, $user1->id));
$this->assertFalse(groups_is_member($groupid, $user2->id));
// Add instance of meta enrolment in course2 linking to course1 and enrol both users in course1.
$metalplugin->add_instance($course2, array('customint1' => $course1->id, 'customint2' => $groupid));
enrol_get_plugin('manual')->enrol_user($manualenrol1, $user1->id, $student->id);
enrol_get_plugin('manual')->enrol_user($manualenrol1, $user2->id, $student->id);
// Both users now should be members of the group.
$this->assertTrue(groups_is_member($groupid, $user1->id));
$this->assertTrue(groups_is_member($groupid, $user2->id));
// Ununerol both users from course1.
enrol_get_plugin('manual')->unenrol_user($manualenrol1, $user1->id);
enrol_get_plugin('manual')->unenrol_user($manualenrol1, $user2->id);
// User1 should still be member of the group because he was added there manually. User2 should no longer be there.
$this->assertTrue(groups_is_member($groupid, $user1->id));
$this->assertFalse(groups_is_member($groupid, $user2->id));
// Assert that everything is the same after sync.
enrol_meta_sync();
$this->assertTrue(groups_is_member($groupid, $user1->id));
$this->assertFalse(groups_is_member($groupid, $user2->id));
}
/**
* Test user_enrolment_created event.
*/