import { describe, expect, it } from 'vitest' import { createSchema, updateSchema, listQuerySchema } from './complaint.schemas' describe('complaint schemas', () => { it('defaults new complaints to the lowest severity when not provided', () => { expect(createSchema.parse({ category: 'BILLING', subject: 'Incorrect invoice' })).toMatchObject({ category: 'BILLING', subject: 'Incorrect invoice', severity: 'LEVEL_1', }) }) it('rejects empty complaint subjects', () => { expect(() => createSchema.parse({ category: 'BILLING', subject: '' })).toThrow() }) it('accepts lifecycle updates without requiring immutable creation fields', () => { expect(updateSchema.parse({ status: 'RESOLVED', resolution: 'Refund issued' })).toEqual({ status: 'RESOLVED', resolution: 'Refund issued', }) }) it('coerces pagination and applies default page size for list queries', () => { expect(listQuerySchema.parse({ page: '2', severity: 'LEVEL_3' })).toEqual({ page: 2, pageSize: 20, severity: 'LEVEL_3', }) }) it('rejects pathological page sizes before they hit the database', () => { expect(() => listQuerySchema.parse({ pageSize: '101' })).toThrow() }) })