7 lines
1.0 KiB
TypeScript
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));});
|