feat: manually create customer access link for offer and update status
addresses #869eea8d7
This commit is contained in:
@@ -449,6 +449,71 @@ class AccommodationBookingServiceTest extends TestCase
|
||||
yield 'discarded' => [AccommodationBookingStatus::Discarded];
|
||||
}
|
||||
|
||||
public function testGenerateAccessLinkIssuesTheLinkAndMovesToOpenWithoutMailing(): void
|
||||
{
|
||||
$mailer = $this->createMock(Mailer::class);
|
||||
$mailer->expects(self::never())->method('createAndSendEmail');
|
||||
|
||||
$booking = new AccommodationBooking();
|
||||
$booking->setStatus(AccommodationBookingStatus::Requested);
|
||||
$booking->setEmail('[email protected]');
|
||||
|
||||
$service = $this->createServiceWithAccommodation(mailer: $mailer);
|
||||
|
||||
$service->generateAccessLink($booking);
|
||||
|
||||
self::assertSame(AccommodationBookingStatus::Open, $booking->getStatus());
|
||||
self::assertNotNull($booking->getAccessLinkIssuedAt());
|
||||
}
|
||||
|
||||
public function testGenerateAccessLinkPublishesAnAdminAuthoredDraftTheSameWay(): void
|
||||
{
|
||||
$booking = new AccommodationBooking();
|
||||
$booking->setStatus(AccommodationBookingStatus::Draft);
|
||||
$booking->setEmail('[email protected]');
|
||||
|
||||
$service = $this->createServiceWithAccommodation();
|
||||
|
||||
$service->generateAccessLink($booking);
|
||||
|
||||
self::assertSame(AccommodationBookingStatus::Open, $booking->getStatus());
|
||||
}
|
||||
|
||||
public function testGenerateAccessLinkKeepsAnAlreadyIssuedLinkSoEarlierLinksStayValid(): void
|
||||
{
|
||||
$issuedAt = new \DateTimeImmutable('2026-01-01');
|
||||
|
||||
$booking = new AccommodationBooking();
|
||||
$booking->setStatus(AccommodationBookingStatus::Requested);
|
||||
$booking->setEmail('[email protected]');
|
||||
$booking->setAccessLinkIssuedAt($issuedAt);
|
||||
|
||||
$service = $this->createServiceWithAccommodation();
|
||||
|
||||
$service->generateAccessLink($booking);
|
||||
|
||||
self::assertSame($issuedAt, $booking->getAccessLinkIssuedAt());
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider statusesThatAreNotAwaitingAnOffer
|
||||
*/
|
||||
public function testGenerateAccessLinkNoOpsOnceTheOfferIsOut(AccommodationBookingStatus $status): void
|
||||
{
|
||||
$entityManager = $this->createMock(EntityManagerInterface::class);
|
||||
$entityManager->expects(self::never())->method('flush');
|
||||
|
||||
$booking = new AccommodationBooking();
|
||||
$booking->setStatus($status);
|
||||
$booking->setEmail('[email protected]');
|
||||
|
||||
$service = $this->createServiceWithAccommodation(entityManager: $entityManager);
|
||||
|
||||
$service->generateAccessLink($booking);
|
||||
|
||||
self::assertSame($status, $booking->getStatus());
|
||||
}
|
||||
|
||||
public function testDiscardBookingClosesTheBookingSilently(): void
|
||||
{
|
||||
$entityManager = $this->createMock(EntityManagerInterface::class);
|
||||
|
||||
Reference in New Issue
Block a user