import { CoreConfigurationSchema, CoreConfigurationModel } from './core-configuration.model' import { CoreConfigurationMediaSchema, CoreConfigurationMediaModel } from './core-configuration-media.model'; import { CoreConfigurationMediaTypeSchema, CoreConfigurationMediaTypeModel } from './core-configuration-media-type.model' describe('CoreConfigurationModel', () => { describe('constructor', () => { it('should create and initialize empty model', () => { const model = new CoreConfigurationModel(); expect(model.editorConfiguration).toEqual({}); expect(model.media).toEqual([]); expect(model.mediaTypes).toEqual([]); }); it('should intialize model from schema', () => { const schemaData: CoreConfigurationSchema = generateSchemaData(); const model = new CoreConfigurationModel(schemaData); expect(model.editorConfiguration).toStrictEqual(schemaData.editor_configuration); expect(model.media).toStrictEqual(schemaData.media_configuration.media.map(v => new CoreConfigurationMediaModel(v))); expect(model.mediaTypes).toStrictEqual(schemaData.media_configuration.media_types.map(v => new CoreConfigurationMediaTypeModel(v))); }); }); describe('#fromSchema', () => { it('should initialize from a schema input', () => { const model = new CoreConfigurationModel(); const schemaData: CoreConfigurationSchema = generateSchemaData(); model.fromSchema(schemaData); expect(model.editorConfiguration).toStrictEqual(schemaData.editor_configuration); expect(model.media).toStrictEqual(schemaData.media_configuration.media.map(v => new CoreConfigurationMediaModel(v))); expect(model.mediaTypes).toStrictEqual(schemaData.media_configuration.media_types.map(v => new CoreConfigurationMediaTypeModel(v))); }); }); describe('#toSchema', () => { it('should build a schema object from the model', () => { const schemaData: CoreConfigurationSchema = generateSchemaData(); const model = new CoreConfigurationModel(schemaData); const newSchema = model.toSchema(); expect(newSchema).toStrictEqual(schemaData); }); }); }); let generateSchemaData = function (): CoreConfigurationSchema { return { editor_configuration: {}, media_configuration: { media: [generateSchemaDataMedia()], media_types: [generateSchemaDataMediaType()] } } }; let generateSchemaDataMedia = function (): CoreConfigurationMediaSchema { return { asset_id: 'mock asset_id', description: 'mock description', thumbnail_url: 'mock thumbnailUrl', title: 'mock title', type: ['mock type a', 'mock type b'], url: 'mock url' } }; let generateSchemaDataMediaType = function (): CoreConfigurationMediaTypeSchema { return { key: "mock-key", value: "mock-value" } };