fix architecture and write new tests
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { additionalDriverSchema, approvalSchema, createSchema, extendSchema, inspectionParamSchema, inspectionSchema, listQuerySchema, updateSchema } from './reservation.schemas'
|
||||
|
||||
describe('reservation schemas edge cases', () => {
|
||||
it('defaults reservation creation arrays and deposit while requiring cuid identifiers', () => {
|
||||
const parsed = createSchema.parse({
|
||||
vehicleId: 'ckvvehicle000000000000001',
|
||||
customerId: 'ckvcustomer00000000000001',
|
||||
startDate: '2026-07-01T10:00:00.000Z',
|
||||
endDate: '2026-07-03T10:00:00.000Z',
|
||||
})
|
||||
|
||||
expect(parsed.depositAmount).toBe(0)
|
||||
expect(parsed.selectedInsurancePolicyIds).toEqual([])
|
||||
expect(parsed.additionalDrivers).toEqual([])
|
||||
expect(createSchema.safeParse({ ...parsed, vehicleId: 'vehicle_1' }).success).toBe(false)
|
||||
})
|
||||
|
||||
it('validates additional drivers and inspection damage defaults', () => {
|
||||
expect(additionalDriverSchema.parse({ firstName: 'A', lastName: 'B', driverLicense: 'DL-1' })).toMatchObject({ driverLicense: 'DL-1' })
|
||||
expect(additionalDriverSchema.safeParse({ firstName: '', lastName: 'B', driverLicense: 'DL-1' }).success).toBe(false)
|
||||
expect(additionalDriverSchema.safeParse({ firstName: 'A', lastName: 'B', driverLicense: 'DL-1', licenseExpiry: 'tomorrow' }).success).toBe(false)
|
||||
|
||||
const parsed = inspectionSchema.parse({
|
||||
fuelLevel: 'FULL',
|
||||
damagePoints: [{ viewType: 'FRONT', x: 12.5, y: 42, damageType: 'SCRATCH' }],
|
||||
})
|
||||
expect(parsed.customerAgreed).toBe(false)
|
||||
expect(parsed.damagePoints[0]).toMatchObject({ severity: 'MINOR', isPreExisting: false })
|
||||
expect(inspectionSchema.safeParse({ fuelLevel: 'OVERFLOWING_WITH_OPTIMISM' }).success).toBe(false)
|
||||
})
|
||||
|
||||
it('coerces list pagination and rejects unsafe update/extension payloads', () => {
|
||||
expect(listQuerySchema.parse({ page: '3', pageSize: '50', status: 'CONFIRMED' })).toMatchObject({ page: 3, pageSize: 50 })
|
||||
expect(listQuerySchema.parse({})).toMatchObject({ page: 1, pageSize: 20 })
|
||||
expect(listQuerySchema.safeParse({ pageSize: 101 }).success).toBe(false)
|
||||
expect(updateSchema.safeParse({ depositAmount: -1 }).success).toBe(false)
|
||||
expect(extendSchema.safeParse({ newEndDate: '2026-07-05T10:00:00.000Z', reason: '' }).success).toBe(false)
|
||||
expect(approvalSchema.parse({ approved: true })).toEqual({ approved: true })
|
||||
expect(inspectionParamSchema.parse({ id: 'reservation_1', type: 'CHECKIN' })).toEqual({ id: 'reservation_1', type: 'CHECKIN' })
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user