register($this->makeProvider()); $items = $registry->items($this->hadesUser); $this->assertArrayHasKey('dashboard', $items); $this->assertArrayHasKey('admin', $items); $this->assertSame('Dashboard', $items['dashboard']['items'][0]['label']); $this->assertSame('Platform', $items['admin']['items'][0]['label']); } public function test_AdminMenuRegistry_items_Bad_hides_admin_items_for_non_hades_users(): void { $registry = new AdminMenuRegistry; $registry->register($this->makeProvider()); $user = new class extends HadesUser { public function isHades(): bool { return false; } }; $items = $registry->items($user); $this->assertArrayHasKey('dashboard', $items); $this->assertArrayNotHasKey('admin', $items); } protected function makeProvider(): AdminMenuProvider { return new class implements AdminMenuProvider { public function adminMenuItems(): array { return [ [ 'group' => 'dashboard', 'priority' => 10, 'item' => fn (): array => ['label' => 'Dashboard', 'href' => '/hub'], ], [ 'group' => 'admin', 'priority' => 20, 'admin' => true, 'item' => fn (): array => ['label' => 'Platform', 'href' => '/hub/platform'], ], ]; } public function menuPermissions(): array { return []; } public function canViewMenu(?object $user, ?object $workspace): bool { return $user !== null; } }; } }