/** * Validate the ugroup list containing group admins. * Remove ugroups that are empty or contain no project admins. * Don't remove ugroups containing both project admins and non project admins * just indicate the total number of non project admins. * * @param Integer $groupId * @param Array $ugroups * * @return Array */ function ugroup_filter_ugroups_by_project_admin($groupId, $ugroups) { $validUGroups = array(); // Check static ugroups $nonAdmins = ugroup_count_non_admin_for_static_ugroups($groupId, $ugroups, $validUGroups); // Check dynamic ugroups $nonAdmins += ugroup_count_non_admin_for_dynamic_ugroups($groupId, $ugroups, $validUGroups); return array('non_admins' => $nonAdmins, 'ugroups' => $validUGroups); }
function testUgroupCountNonAdminForStaticUgroupsMixed() { $this->skipUnless(MOCKFUNCTION_AVAILABLE, "Function mocking not available"); if (MOCKFUNCTION_AVAILABLE) { $uGroup = new MockUGroup(); $uGroup->setReturnValue('exists', true, array(1, 1)); $uGroup->setReturnValue('exists', true, array(1, 2)); $uGroup->setReturnValue('exists', true, array(1, 3)); $uGroup->setReturnValue('exists', true, array(1, 4)); MockFunction::generate('ugroup_get_ugroup'); MockFunction::setReturnValue('ugroup_get_ugroup', $uGroup); MockFunction::generate('ugroup_count_project_admins'); MockFunction::setReturnValueAt(0, 'ugroup_count_project_admins', array('admins' => 0, 'non_admins' => 2)); MockFunction::setReturnValueAt(1, 'ugroup_count_project_admins', array('admins' => 1, 'non_admins' => 3)); MockFunction::expectCallCount('ugroup_count_project_admins', 2); $validUGroups = array(1, 2); $this->assertEqual(3, ugroup_count_non_admin_for_static_ugroups(1, array(3, 4), $validUGroups)); $this->assertEqual(array(1, 2, 4), $validUGroups); MockFunction::restore('ugroup_count_project_admins'); } }