From 74aece8719ecb07342c523fedf9cdb0a165e4f4e Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Tue, 1 Mar 2016 14:25:48 +0800 Subject: [PATCH] MDL-48362 enrol_cohort: Fix unit test by manually triggering sync Sync is now automatically triggered by add/update instance. We need to manually trigger sync before each part of the test to clean up role assignments from the previous test. --- enrol/cohort/tests/sync_test.php | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/enrol/cohort/tests/sync_test.php b/enrol/cohort/tests/sync_test.php index b21afc39951..b938206cbd2 100644 --- a/enrol/cohort/tests/sync_test.php +++ b/enrol/cohort/tests/sync_test.php @@ -50,6 +50,7 @@ class enrol_cohort_testcase extends advanced_testcase { global $DB; $this->resetAfterTest(); + $trace = new null_progress_trace(); // Setup a few courses and categories. @@ -191,6 +192,9 @@ class enrol_cohort_testcase extends advanced_testcase { $this->assertFalse($DB->record_exists('enrol', array('id'=>$cohortinstance1->id))); $this->assertFalse($DB->record_exists('role_assignments', array('component'=>'enrol_cohort', 'itemid'=>$cohortinstance1->id))); + // Cleanup after previous test (remove the extra user_enrolment). + enrol_cohort_sync($trace, $course1->id); + $this->assertEquals(3, $DB->count_records('user_enrolments', array())); // Test group sync. @@ -203,7 +207,7 @@ class enrol_cohort_testcase extends advanced_testcase { $id = $cohortplugin->add_instance($course1, array('customint1'=>$cohort1->id, 'roleid'=>$studentrole->id, 'customint2'=>$group1->id)); $cohortinstance1 = $DB->get_record('enrol', array('id'=>$id)); - $this->assertEquals(4, $DB->count_records('user_enrolments', array())); + $this->assertEquals(3, $DB->count_records('user_enrolments', array())); $this->assertEquals(2, $DB->count_records('role_assignments', array())); $this->assertTrue(is_enrolled(context_course::instance($course1->id), $user4)); @@ -241,7 +245,7 @@ class enrol_cohort_testcase extends advanced_testcase { cohort_add_member($cohort1->id, $user2->id); cohort_add_member($cohort1->id, $user3->id); - $this->assertEquals(7, $DB->count_records('user_enrolments', array())); + $this->assertEquals(6, $DB->count_records('user_enrolments', array())); $this->assertEquals(5, $DB->count_records('role_assignments', array())); $this->assertEquals(3, $DB->count_records('role_assignments', array('component'=>'enrol_cohort', 'itemid'=>$cohortinstance1->id))); $this->assertEquals(5, $DB->count_records('groups_members', array())); @@ -249,7 +253,7 @@ class enrol_cohort_testcase extends advanced_testcase { $cohortplugin->delete_instance($cohortinstance1); - $this->assertEquals(4, $DB->count_records('user_enrolments', array())); + $this->assertEquals(3, $DB->count_records('user_enrolments', array())); $this->assertEquals(2, $DB->count_records('role_assignments', array())); $this->assertEquals(0, $DB->count_records('role_assignments', array('component'=>'enrol_cohort', 'itemid'=>$cohortinstance1->id))); $this->assertEquals(2, $DB->count_records('groups_members', array())); @@ -377,7 +381,11 @@ class enrol_cohort_testcase extends advanced_testcase { // Test group sync. - $this->disable_plugin(); // No event sync + $this->disable_plugin(); // No event sync. + + // Trigger sync to remove left over role assignments. + enrol_cohort_sync($trace, $course1->id); + $this->assertEquals(2, $DB->count_records('role_assignments', array())); $id = groups_create_group((object)array('name'=>'Group 1', 'courseid'=>$course1->id)); $group1 = $DB->get_record('groups', array('id'=>$id), '*', MUST_EXIST); @@ -392,10 +400,10 @@ class enrol_cohort_testcase extends advanced_testcase { $this->assertTrue(groups_add_member($group1, $user4)); $this->assertTrue(groups_add_member($group2, $user4)); - $this->enable_plugin(); // No event sync + $this->enable_plugin(); // No event sync. $this->assertEquals(3, $DB->count_records('user_enrolments', array())); - $this->assertEquals(3, $DB->count_records('role_assignments', array())); + $this->assertEquals(2, $DB->count_records('role_assignments', array())); $this->assertFalse(groups_is_member($group1->id, $user1->id)); cohort_add_member($cohort1->id, $user1->id); @@ -405,7 +413,8 @@ class enrol_cohort_testcase extends advanced_testcase { enrol_cohort_sync($trace, $course1->id); $this->assertEquals(7, $DB->count_records('user_enrolments', array())); - $this->assertEquals(7, $DB->count_records('role_assignments', array())); + // This used to be 7 - but now add_instance triggers an immediate sync. + $this->assertEquals(6, $DB->count_records('role_assignments', array())); $this->assertTrue(groups_is_member($group1->id, $user1->id)); $this->assertTrue($DB->record_exists('groups_members', array('groupid'=>$group1->id, 'userid'=>$user1->id, 'component'=>'enrol_cohort', 'itemid'=>$cohortinstance1->id))); @@ -551,6 +560,9 @@ class enrol_cohort_testcase extends advanced_testcase { // Test group sync. $this->disable_plugin(); // No event sync + // Trigger sync to remove extra role assignments. + enrol_cohort_sync($trace, $course1->id); + $this->assertEquals(2, $DB->count_records('role_assignments', array())); $id = groups_create_group((object)array('name'=>'Group 1', 'courseid'=>$course1->id)); $group1 = $DB->get_record('groups', array('id'=>$id), '*', MUST_EXIST); @@ -567,7 +579,7 @@ class enrol_cohort_testcase extends advanced_testcase { $this->assertTrue(groups_add_member($group2, $user4)); $this->assertEquals(3, $DB->count_records('user_enrolments', array())); - $this->assertEquals(3, $DB->count_records('role_assignments', array())); + $this->assertEquals(2, $DB->count_records('role_assignments', array())); $this->assertFalse(groups_is_member($group1->id, $user1->id)); cohort_add_member($cohort1->id, $user1->id);