fix architecture and write new tests

This commit is contained in:
root
2026-06-10 00:40:19 -04:00
parent 560da1cadf
commit 80a597bc10
377 changed files with 84020 additions and 1337 deletions
@@ -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' })
})
})