import { createModel } from '../../create-model' import Ajv from 'ajv' import addFormats from 'ajv-formats' import { excludeFromModel } from '../exclude-from-model' const ajv = new Ajv() addFormats(ajv) describe('exclude-from-model', () => { it('should exclude / remove properties from existing model', () => { const Model1 = createModel({ user_id: { type: 'string', default: '123' }, username: { type: 'string' }, }) const ExcludeModel = excludeFromModel(Model1, { username: true }) expect(Model1.getSchema()).toEqual({ additionalProperties: false, $id: 'm1', type: 'object', properties: { user_id: { default: '123', type: 'string', }, username: { default: undefined, type: 'string', }, }, required: [], }) expect(ExcludeModel.getSchema()).toEqual({ additionalProperties: false, $id: 'm2', type: 'object', properties: { user_id: { default: '123', 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 }) }) })