import { createModel } from '../../create-model' import Ajv from 'ajv' import addFormats from 'ajv-formats' import { includeToModel } from '../include-to-model' const ajv = new Ajv() addFormats(ajv) describe('include-to-model', () => { it('should include new model properties to existing model', () => { const Model1 = createModel({ user_id: { type: 'string', default: '123' }, }) const ExcludeModel = includeToModel(Model1, { username: { type: 'string' } }) expect(Model1.getSchema()).toEqual({ additionalProperties: false, $id: 'm1', type: 'object', properties: { user_id: { default: '123', type: 'string', }, }, required: [], }) expect(ExcludeModel.getSchema()).toEqual({ additionalProperties: false, $id: 'm2', type: 'object', properties: { user_id: { default: '123', type: 'string', }, username: { default: undefined, type: 'string', }, }, required: [], }) expect(ajv.validateSchema(ExcludeModel.getSchema({ returnFullSchema: true }))).toBe(true) expect(ajv.validateSchema(ExcludeModel.getSchema())).toBe(true) const model = new ExcludeModel() expect(model).toEqual({ user_id: '123', username: undefined }) }) })