create(); $user = User::factory()->create(); $reservation = Reservation::create([ 'reference' => 'REQ-TEST-001', 'requester_id' => $user->id, 'purpose' => 'Sessão de formação audiovisual', 'usage_location' => 'Auditório', 'starts_at' => '2026-09-10 09:00:00', 'ends_at' => '2026-09-10 11:00:00', 'status' => ReservationStatus::Approved, ]); $reservation->items()->create([ 'snipe_asset_id' => $asset->id, 'starts_at' => '2026-09-10 09:00:00', 'ends_at' => '2026-09-10 11:00:00', 'status' => ReservationItemStatus::Reserved, ]); $service = app(AvailabilityService::class); expect($service->isAvailable($asset, new DateTimeImmutable('2026-09-10 10:30:00'), new DateTimeImmutable('2026-09-10 12:00:00')))->toBeFalse() ->and($service->isAvailable($asset, new DateTimeImmutable('2026-09-10 11:00:00'), new DateTimeImmutable('2026-09-10 13:00:00')))->toBeTrue(); }); it('recusa ativos atribuídos ou não requisitáveis', function () { $service = app(AvailabilityService::class); $period = [new DateTimeImmutable('+2 days'), new DateTimeImmutable('+3 days')]; $assigned = SnipeAsset::factory()->create(['assigned_id' => 42]); $notRequestable = SnipeAsset::factory()->create(['requestable' => false]); expect($service->isAvailable($assigned, ...$period))->toBeFalse() ->and($service->isAvailable($notRequestable, ...$period))->toBeFalse(); });