/** * 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 testUgroupCountNonAdminForDynamicUgroupsMixed() { $this->skipUnless(MOCKFUNCTION_AVAILABLE, "Function mocking not available"); if (MOCKFUNCTION_AVAILABLE) { 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_dynamic_ugroups(1, array(3, 4), $validUGroups)); $this->assertEqual(array(1, 2, 4), $validUGroups); MockFunction::restore('ugroup_count_project_admins'); } }