*/ final class HoldFactory extends Factory { protected $model = Hold::class; /** * @return array */ public function definition(): array { return [ 'slot_id' => Slot::factory(), 'idempotency_key' => (string) Str::uuid(), 'status' => HoldStatus::Held, 'expires_at' => now()->addSeconds((int) config('slots.hold_ttl')), ]; } public function expired(): self { return $this->state(fn (): array => [ 'status' => HoldStatus::Held, 'expires_at' => now()->subMinute(), ]); } public function confirmed(): self { return $this->state(fn (): array => [ 'status' => HoldStatus::Confirmed, 'confirmed_at' => now(), ]); } public function cancelled(): self { return $this->state(fn (): array => [ 'status' => HoldStatus::Cancelled, 'cancelled_at' => now(), ]); } }