PPPAIMT-Crest/backend/test/applicationSchema.test.js

44 lines
1.6 KiB
JavaScript

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 <b>Rao</b>' });
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();
});
});