import { describe, expect, it } from 'vitest'; import { applicationSchema } from '../src/schemas/application.js'; const valid = { agreement_date: '2026-09-30', full_name: 'Asha Rao', age: 42, address: 'Pune', registration_no: 'MMC-12345', medical_council: 'Maharashtra Medical Council', pan: 'ABCDE1234F', gstin: '27AAPFU0939F1ZV', bank_name: 'State Bank of India', account_holder: 'Asha Rao', account_number: '123456789012', ifsc: 'SBIN0001234', }; describe('applicationSchema', () => { it('accepts a complete agreement', () => { expect(applicationSchema.parse(valid).registration_no).toBe('MMC-12345'); }); it('allows a missing GSTIN', () => { const parsed = applicationSchema.parse({ ...valid, gstin: '' }); expect(parsed.gstin).toBeUndefined(); }); it('strips HTML from text fields', () => { const parsed = applicationSchema.parse({ ...valid, full_name: 'Asha Rao' }); expect(parsed.full_name).toBe('Asha Rao'); }); it('rejects invalid agreement fields', () => { expect(() => applicationSchema.parse({ ...valid, pan: 'abcde1234f' })).toThrow(); expect(() => applicationSchema.parse({ ...valid, ifsc: 'SBIN1001234' })).toThrow(); expect(() => applicationSchema.parse({ ...valid, gstin: 'NOT-A-GSTIN' })).toThrow(); expect(() => applicationSchema.parse({ ...valid, account_number: '12345678' })).toThrow(); expect(() => applicationSchema.parse({ ...valid, age: 20 })).toThrow(); expect(() => applicationSchema.parse({ ...valid, age: 101 })).toThrow(); expect(() => applicationSchema.parse({ ...valid, registration_no: ' ' })).toThrow(); }); });