wip: group inquiries and booking

This commit is contained in:
Björn Fromme committed 2026-07-16 17:13:26 +02:00
1 parent 18a890e50e
commit e7bfb19ac9
71 files changed
+2731 -512

No files matched your search

@@ -175,7 +175,7 @@ class AccommodationBookingServiceTest extends TestCase
$service->sendCustomerConfirmationEmail($booking);
}
public function testRegenerateAccessLinkAndNotifyCustomerAlwaysOverwritesAndSends(): void
public function testRegenerateAccessLinkOverwritesAccessLinkIssuedAt(): void
{
$booking = new AccommodationBooking();
$booking->setEmail('[email protected]');
@@ -190,7 +190,7 @@ class AccommodationBookingServiceTest extends TestCase
$breakdownCalculator->method('compute')->willReturn(null);
$mailer = $this->createMock(Mailer::class);
$mailer->expects(self::once())->method('createAndSendEmail');
$mailer->expects(self::never())->method('createAndSendEmail');
$service = $this->createServiceWithAccommodation(
entityManager: $entityManager,
@@ -198,7 +198,7 @@ class AccommodationBookingServiceTest extends TestCase
breakdownCalculator: $breakdownCalculator,
);
$service->regenerateAccessLinkAndNotifyCustomer($booking);
$service->regenerateAccessLink($booking);
self::assertNotSame($previousIssuedAt, $booking->getAccessLinkIssuedAt());
}
@@ -234,6 +234,39 @@ class AccommodationBookingServiceTest extends TestCase
self::assertNull($booking->getAcceptedAt());
}
public function testRefreshPriceSnapshotStoresDiscountedFinalTotal(): void
{
$booking = new AccommodationBooking();
$booking->setAccommodationDiscount(10);
$booking->setBoardServiceDiscount(20);
$booking->setAdditionalServicesDiscount(50);
$breakdown = [
'total' => 12345,
'currency' => 'CHF',
'basePrice' => 8000,
'additionalPersonsPrice' => 2000,
'boardPrice' => 1000,
'servicesPrice' => 500,
];
$breakdownCalculator = $this->createMock(AccommodationBookingBreakdownCalculator::class);
$breakdownCalculator
->expects(self::once())
->method('computeCurrent')
->with($booking)
->willReturn($breakdown);
$service = $this->createServiceWithAccommodation(breakdownCalculator: $breakdownCalculator);
$service->refreshPriceSnapshot($booking);
// accommodation: (8000+2000)*10% = 1000, board: 1000*20% = 200, services: 500*50% = 250
self::assertSame($breakdown, $booking->getPriceBreakdown());
self::assertSame(12345 - 1000 - 200 - 250, $booking->getTotalPrice());
self::assertSame('CHF', $booking->getPricingCurrency());
self::assertSame(1, $booking->getPricingVersion());
}
/**
* @param AccommodationPrice[] $prices
*/