diff --git a/lib/tests/grouplib_test.php b/lib/tests/grouplib_test.php index ede1736f611..5c0d0f3c2bf 100644 --- a/lib/tests/grouplib_test.php +++ b/lib/tests/grouplib_test.php @@ -767,4 +767,75 @@ class core_grouplib_testcase extends advanced_testcase { $this->assertEquals('Group 1', $groups[0]->name); $this->assertEquals('Group 2', $groups[1]->name); } + + /** + * Tests for groups_get_user_groups() method. + */ + public function test_groups_get_user_groups() { + $this->resetAfterTest(true); + $generator = $this->getDataGenerator(); + + // Create courses. + $course1 = $generator->create_course(); + $course2 = $generator->create_course(); + + // Create users. + $user1 = $generator->create_user(); + $user2 = $generator->create_user(); + $user3 = $generator->create_user(); + + // Enrol users. + $generator->enrol_user($user1->id, $course1->id); + $generator->enrol_user($user1->id, $course2->id); + $generator->enrol_user($user2->id, $course2->id); + $generator->enrol_user($user3->id, $course2->id); + + // Create groups. + $group1 = $generator->create_group(array('courseid' => $course1->id)); + $group2 = $generator->create_group(array('courseid' => $course2->id)); + $group3 = $generator->create_group(array('courseid' => $course2->id)); + + // Assign users to groups. + $this->assertTrue($generator->create_group_member(array('groupid' => $group1->id, 'userid' => $user1->id))); + $this->assertTrue($generator->create_group_member(array('groupid' => $group2->id, 'userid' => $user2->id))); + + // Get user groups. + $usergroups1 = groups_get_user_groups($course1->id, $user1->id); + $usergroups2 = groups_get_user_groups($course2->id, $user2->id);; + + // Assert return data. + $this->assertEquals($group1->id, $usergroups1[0][0]); + $this->assertEquals($group2->id, $usergroups2[0][0]); + + // Now, test with groupings. + $grouping1 = $generator->create_grouping(array('courseid' => $course1->id)); + $grouping2 = $generator->create_grouping(array('courseid' => $course2->id)); + + // Assign the groups to grouping. + groups_assign_grouping($grouping1->id, $group1->id); + groups_assign_grouping($grouping2->id, $group2->id); + groups_assign_grouping($grouping2->id, $group3->id); + + // Test with grouping. + $usergroups1 = groups_get_user_groups($course1->id, $user1->id); + $usergroups2 = groups_get_user_groups($course2->id, $user2->id); + $this->assertArrayHasKey($grouping1->id, $usergroups1); + $this->assertArrayHasKey($grouping2->id, $usergroups2); + + // Test user without a group. + $usergroups1 = groups_get_user_groups($course2->id, $user3->id); + $this->assertCount(0, $usergroups1[0]); + + // Test with userid = 0. + $usergroups1 = groups_get_user_groups($course1->id, 0); + $usergroups2 = groups_get_user_groups($course2->id, 0); + $this->assertCount(0, $usergroups1[0]); + $this->assertCount(0, $usergroups2[0]); + + // Test with courseid = 0. + $usergroups1 = groups_get_user_groups(0, $user1->id); + $usergroups2 = groups_get_user_groups(0, $user2->id); + $this->assertCount(0, $usergroups1[0]); + $this->assertCount(0, $usergroups2[0]); + } } diff --git a/lib/tests/modinfolib_test.php b/lib/tests/modinfolib_test.php index 1abab2d5810..8aad3eea617 100644 --- a/lib/tests/modinfolib_test.php +++ b/lib/tests/modinfolib_test.php @@ -657,4 +657,67 @@ class core_modinfolib_testcase extends advanced_testcase { $this->assertFalse($cm->uservisible); $this->assertTrue($cm->is_user_access_restricted_by_capability()); } + + /** + * Tests for get_groups() method. + */ + public function test_get_groups() { + $this->resetAfterTest(); + $generator = $this->getDataGenerator(); + + // Create courses. + $course1 = $generator->create_course(); + $course2 = $generator->create_course(); + $course3 = $generator->create_course(); + + // Create users. + $user1 = $generator->create_user(); + $user2 = $generator->create_user(); + $user3 = $generator->create_user(); + + // Enrol users on courses. + $generator->enrol_user($user1->id, $course1->id); + $generator->enrol_user($user2->id, $course2->id); + $generator->enrol_user($user3->id, $course2->id); + $generator->enrol_user($user3->id, $course3->id); + + // Create groups. + $group1 = $generator->create_group(array('courseid' => $course1->id)); + $group2 = $generator->create_group(array('courseid' => $course2->id)); + $group3 = $generator->create_group(array('courseid' => $course2->id)); + + // Assign users to groups and assert the result. + $this->assertTrue($generator->create_group_member(array('groupid' => $group1->id, 'userid' => $user1->id))); + $this->assertTrue($generator->create_group_member(array('groupid' => $group2->id, 'userid' => $user2->id))); + $this->assertTrue($generator->create_group_member(array('groupid' => $group3->id, 'userid' => $user2->id))); + $this->assertTrue($generator->create_group_member(array('groupid' => $group2->id, 'userid' => $user3->id))); + + // Create groupings. + $grouping1 = $generator->create_grouping(array('courseid' => $course1->id)); + $grouping2 = $generator->create_grouping(array('courseid' => $course2->id)); + + // Assign and assert group to groupings. + groups_assign_grouping($grouping1->id, $group1->id); + groups_assign_grouping($grouping2->id, $group2->id); + groups_assign_grouping($grouping2->id, $group3->id); + + // Test with one single group. + $modinfo = get_fast_modinfo($course1, $user1->id); + $groups = $modinfo->get_groups($grouping1->id); + $this->assertCount(1, $groups); + $this->assertArrayHasKey($group1->id, $groups); + + // Test with two groups. + $modinfo = get_fast_modinfo($course2, $user2->id); + $groups = $modinfo->get_groups(); + $this->assertCount(2, $groups); + $this->assertTrue(in_array($group2->id, $groups)); + $this->assertTrue(in_array($group3->id, $groups)); + + // Test with no groups. + $modinfo = get_fast_modinfo($course3, $user3->id); + $groups = $modinfo->get_groups(); + $this->assertCount(0, $groups); + $this->assertArrayNotHasKey($group1->id, $groups); + } }