feat: hide unavailable ski passes from selection in create flow
This commit is contained in:
@@ -51,6 +51,40 @@ class ServiceAvailabilityCalculatorTest extends TestCase
|
||||
$this->assertTrue($this->calculator->isServiceUnavailable(1, $bookingDto, 0));
|
||||
}
|
||||
|
||||
public function testServiceOnBookingStopIsUnavailableDespiteUnlimitedQuota(): void
|
||||
{
|
||||
$skiPass = $this->createSkiPass(id: 1, available: null, status: Constants::STATUS_BLOCKED);
|
||||
$bookingDto = $this->createBookingDtoWithServices([$skiPass]);
|
||||
|
||||
$this->assertTrue($this->calculator->isServiceUnavailable(1, $bookingDto, 0));
|
||||
}
|
||||
|
||||
public function testServiceOnBookingStopIsUnavailableDespiteRemainingQuota(): void
|
||||
{
|
||||
$skiPass = $this->createSkiPass(id: 1, available: 10, status: Constants::STATUS_BLOCKED);
|
||||
$bookingDto = $this->createBookingDtoWithServices([$skiPass]);
|
||||
|
||||
$this->assertTrue($this->calculator->isServiceUnavailable(1, $bookingDto, 0));
|
||||
}
|
||||
|
||||
public function testFilterAvailableServicesRemovesSoldOutAndBlockedServices(): void
|
||||
{
|
||||
$bookable = $this->createSkiPass(id: 1, available: 5);
|
||||
$soldOut = $this->createSkiPass(id: 2, available: 0);
|
||||
$blocked = $this->createSkiPass(id: 3, available: null, status: Constants::STATUS_BLOCKED);
|
||||
$unlimited = $this->createSkiPass(id: 4, available: null);
|
||||
|
||||
$bookingDto = $this->createBookingDtoWithServices([$bookable, $soldOut, $blocked, $unlimited]);
|
||||
|
||||
$filtered = $this->calculator->filterAvailableServices(
|
||||
$bookingDto->travel->additionalServices,
|
||||
$bookingDto,
|
||||
0
|
||||
);
|
||||
|
||||
$this->assertSame([1, 4], array_keys($filtered));
|
||||
}
|
||||
|
||||
private function createParkingService(int $id, int $available): Service
|
||||
{
|
||||
$service = new Service();
|
||||
@@ -62,6 +96,18 @@ class ServiceAvailabilityCalculatorTest extends TestCase
|
||||
return $service;
|
||||
}
|
||||
|
||||
private function createSkiPass(int $id, ?int $available, string $status = Constants::STATUS_AVAILABLE): Service
|
||||
{
|
||||
$service = new Service();
|
||||
$service->id = $id;
|
||||
$service->label = sprintf('Skipass %d', $id);
|
||||
$service->subType = Constants::TOKEN_SKI_PASS;
|
||||
$service->available = $available;
|
||||
$service->status = $status;
|
||||
|
||||
return $service;
|
||||
}
|
||||
|
||||
private function createBookingDtoWithServices(array $services): BookingDto
|
||||
{
|
||||
$travel = new Travel();
|
||||
|
||||
Reference in New Issue
Block a user