runtime()->effectiveRoles([Role::TEAMER, Role::GROUPS_MANAGER]), ); } public function testImplicitRoleUserIsNotListed(): void { self::assertSame(['Administration'], $this->runtime()->effectiveRoles([Role::USER, Role::ADMIN])); self::assertSame([], $this->runtime()->effectiveRoles([Role::USER])); } public function testNominationsAreListedApartFromTheEffectiveRoles(): void { $roles = [Role::TEAMER, Role::pending(Role::ADMIN)]; self::assertSame(['Teamer:in'], $this->runtime()->effectiveRoles($roles)); self::assertSame(['Administration'], $this->runtime()->nominatedRoles($roles)); } public function testUnknownRoleStaysVisible(): void { self::assertSame(['ROLE_LEGACY'], $this->runtime()->effectiveRoles(['ROLE_LEGACY'])); } private function runtime(): AppRuntime { return (new \ReflectionClass(AppRuntime::class))->newInstanceWithoutConstructor(); } }