(int)$b['userid']; }); $this->assertCount(2, $out); $u1 = $out[0]; $this->assertSame(1, (int)$u1['userid']); $this->assertSame('alice', $u1['username']); $this->assertGreaterThanOrEqual(1, count($u1['roles'])); // Bob exists too $u2 = $out[1]; $this->assertSame(2, (int)$u2['userid']); $this->assertSame('bob', $u2['username']); } public function testGetLocationDataExpandsChildrenAndGlobal(): void { require_once __DIR__ . '/../../../modules-available/permissionmanager/inc/getpermissiondata.inc.php'; $out = GetPermissionData::getLocationData(); $ids = array_column($out, 'locationid'); $this->assertContains(0, $ids); // global $this->assertContains(2, $ids); // Building A $this->assertContains(4, $ids); // Room 101 (child) $byId = []; foreach ($out as $row) { $byId[$row['locationid']] = $row; } $this->assertNotEmpty($byId[0]['roles']); $this->assertSame('Admin', $byId[0]['roles'][0]['rolename']); $this->assertSame('Tech', $byId[2]['roles'][0]['rolename']); $this->assertSame('Tech', $byId[4]['roles'][0]['rolename']); } public function testGetRolesPassThroughAndSorting(): void { require_once __DIR__ . '/../../../modules-available/permissionmanager/inc/getpermissiondata.inc.php'; $out = GetPermissionData::getRoles(GetPermissionData::WITH_USER_COUNT | GetPermissionData::WITH_LOCATION_COUNT); // Seed contains Admin and Tech, sorted alphabetically $this->assertGreaterThanOrEqual(2, count($out)); $this->assertSame('Admin', $out[0]['rolename']); $this->assertSame('Tech', $out[1]['rolename']); } }