wip: finalize offer layout

This commit is contained in:
Björn Fromme committed 2026-07-17 12:16:33 +02:00
1 parent e7bfb19ac9
commit a1751f699b
20 files changed
+487 -541

No files matched your search

@@ -118,7 +118,6 @@ class OfferControllerTest extends TestCase
self::assertSame(Response::HTTP_OK, $response->getStatusCode());
self::assertSame('<html>offer</html>', $response->getContent());
self::assertSame('groups/booking/offer.html.twig', $controller->renderedView);
self::assertFalse($controller->renderedParameters['justAccepted']);
self::assertSame($booking, $controller->renderedParameters['booking']);
self::assertSame(['total' => 1000], $controller->renderedParameters['priceBreakdown']);
self::assertSame($booking->getAccommodation(), $controller->renderedParameters['ctx']->accommodation);
@@ -147,39 +146,6 @@ class OfferControllerTest extends TestCase
self::assertSame('groups/booking/offer_unavailable.html.twig', $controller->renderedView);
}
public function testViewMarksJustAcceptedWhenFlashIsPresent(): void
{
$booking = new AccommodationBooking();
$booking->setIsInquiry(false);
$booking->setAccommodation(new Accommodation());
$bookingRepository = $this->createMock(AccommodationBookingRepository::class);
$bookingRepository->method('findOneBy')->willReturn($booking);
$linkSigner = $this->createMock(AccommodationBookingLinkSigner::class);
$linkSigner->method('isSessionAuthorized')->willReturn(true);
$breakdownCalculator = $this->createMock(AccommodationBookingBreakdownCalculator::class);
$breakdownCalculator->method('compute')->willReturn(['total' => 1000]);
$controller = new TestableOfferController(
$bookingRepository,
$linkSigner,
$breakdownCalculator,
$this->createMock(AccommodationBookingService::class),
);
$session = new Session(new MockArraySessionStorage());
$session->getFlashBag()->add('accommodation_offer_accepted', true);
$request = Request::create('/groups/booking/offer/'.$booking->getUuid().'/view');
$request->setSession($session);
$response = $controller->view($booking->getUuid(), $request);
self::assertSame(Response::HTTP_OK, $response->getStatusCode());
self::assertTrue($controller->renderedParameters['justAccepted']);
}
public function testConfirmGetRendersModalWithFreshForm(): void
{
$booking = new AccommodationBooking();
@@ -243,6 +209,7 @@ class OfferControllerTest extends TestCase
self::assertInstanceOf(RedirectResponse::class, $response);
self::assertSame('/app_groups_booking_offer_view?uuid='.$booking->getUuid(), $response->getTargetUrl());
self::assertSame([['type' => 'success', 'message' => 'Deine Buchung ist bestätigt.']], $controller->flashes);
}
public function testConfirmPostValidViaHtmxReturnsHxRedirect(): void
@@ -407,9 +374,14 @@ final class TestableOfferController extends OfferController
return 'https://example.test/agb/';
}
/**
* @var array<int, array{type: string, message: mixed}>
*/
public array $flashes = [];
protected function addFlash(string $type, mixed $message): void
{
// no-op: avoids requiring a full service container in these unit tests
$this->flashes[] = ['type' => $type, 'message' => $message];
}
/**