import { When } from '@cucumber/cucumber' import type { PerausetWorld } from '../support/world.js' When('I create a boat route with name {string} origin {string} destination {string}', async function (this: PerausetWorld, name: string, origin: string, destination: string) { await this.post('/boats/routes', { name, origin, destination, }) }) When('I create a boat with name {string} capacity {int}', async function (this: PerausetWorld, name: string, capacity: number) { await this.post('/boats', { name, passengerCapacity: capacity, }) }) When('I create a boat trip for the route and boat departing {string}', async function (this: PerausetWorld, departureAt: string) { const routeId = (this as any).routeId const boatId = (this as any).boatId await this.post('/boats/trips', { routeId, boatId, scheduledDepartureAt: departureAt, }) }) When('I open the boat trip', async function (this: PerausetWorld) { const tripId = (this as any).tripId await this.post(`/boats/trips/${tripId}/open`, { tripId, }) }) When('I request a seat on the boat trip', async function (this: PerausetWorld) { const tripId = (this as any).tripId await this.post(`/boats/trips/${tripId}/request-seat`, { tripId, requestedSeats: 1, }) }) When('I confirm the boat request', async function (this: PerausetWorld) { const boatRequestId = (this as any).boatRequestId await this.post(`/boats/requests/${boatRequestId}/confirm`, { requestId: boatRequestId, }) }) When('I create a boat trip for the route without boat departing {string}', async function (this: PerausetWorld, departureAt: string) { const routeId = (this as any).routeId await this.post('/boats/trips', { routeId, scheduledDepartureAt: departureAt, }) }) When('I cancel the boat trip', async function (this: PerausetWorld) { const tripId = (this as any).tripId await this.post(`/boats/trips/${tripId}/cancel`, { tripId, }) })