resolver(true)->resolveRoute()); } public function testEverybodyElseLandsOnTheirAccount(): void { self::assertSame('app_account', $this->resolver(false)->resolveRoute()); } public function testUrlIsGeneratedForTheResolvedRoute(): void { self::assertSame('/admin/dashboard', $this->resolver(true)->resolveUrl()); } private function resolver(bool $hasAdministrativeAccess): DefaultRouteResolver { $authorizationChecker = $this->createMock(AuthorizationCheckerInterface::class); $authorizationChecker ->method('isGranted') ->with(AdministrativeAccessVoter::ADMINISTRATIVE_ACCESS) ->willReturn($hasAdministrativeAccess) ; $urlGenerator = $this->createMock(UrlGeneratorInterface::class); $urlGenerator ->method('generate') ->willReturnCallback(static fn (string $route): string => match ($route) { 'app_admin_dashboard' => '/admin/dashboard', 'app_account' => '/account', default => self::fail(sprintf('Unexpected route "%s"', $route)), }) ; return new DefaultRouteResolver($authorizationChecker, $urlGenerator); } }