Files
yc-modular-extractor-archived/tests/schema.test.ts
2026-11-05 01:04:53 +08:00

7 lines
1.0 KiB
TypeScript

import {test} from 'node:test';
import assert from 'node:assert/strict';
import Ajv from 'ajv';
import {buildSchema,sampleFields} from '../lib/schema';
test('nested schema accepts missing scalar values and rejects invented keys/types',()=>{const validate=new Ajv().compile(buildSchema(sampleFields));assert.equal(validate({patientName:null,allergies:[],vitalSigns:[{time:null,heartRate:78,bloodPressure:null}],medications:[]}),true);assert.equal(validate({patientName:'A',allergies:[],vitalSigns:[{time:null,heartRate:'78',bloodPressure:null}],medications:[]}),false);assert.equal(validate({patientName:null,allergies:[],vitalSigns:[],medications:[],extra:1}),false);});
test('rejects duplicates, reserved names, empty objects and invalid types',()=>{for(const fields of [[{name:'__proto__',type:'string',description:''}],[{name:'a',type:'string',description:''},{name:'a',type:'string',description:''}],[{name:'a',type:'object',description:'',fields:[]}],[{name:'a',type:'url',description:''}],[]])assert.throws(()=>buildSchema(fields as any));});