import { StreamAttendeeOptionsModel, StreamAttendeeOptionsSchema, } from './stream-attendee-options.model'; describe('StreamAttendeeOptionsModel', () => { describe('constructor', () => { it('should create and initialize empty model', () => { const model = new StreamAttendeeOptionsModel(); expect(model.enable2fa).toBe(false); expect(model.enableCamera).toBe(false); expect(model.enableChat).toBe(false); expect(model.enableMicrophone).toBe(false); expect(model.enableMultipleHosts).toBe(false); expect(model.enablePassword).toBe(false); expect(model.enablePrivateMessages).toBe(false); }); it('should intialize model from schema', () => { const schema: StreamAttendeeOptionsSchema = { enable_2fa: false, enable_camera: true, enable_chat: false, enable_microphone: true, enable_multiple_hosts: !!false, enable_password: false, enable_private_messages: false, }; const model = new StreamAttendeeOptionsModel(schema); expect(model.enable2fa).toBe(schema.enable_2fa); expect(model.enableCamera).toBe(schema.enable_camera); expect(model.enableChat).toBe(schema.enable_chat); expect(model.enableMicrophone).toBe(schema.enable_microphone); expect(model.enableMultipleHosts).toBe(schema.enable_multiple_hosts); expect(model.enablePassword).toBe(schema.enable_password); expect(model.enablePrivateMessages).toBe(schema.enable_private_messages); }); }); describe('#fromSchema', () => { it('should initialize from a schema input', () => { const model = new StreamAttendeeOptionsModel(); expect(model.enable2fa).toBe(false); expect(model.enableCamera).toBe(false); expect(model.enableChat).toBe(false); expect(model.enableMicrophone).toBe(false); expect(model.enableMultipleHosts).toBe(false); expect(model.enablePassword).toBe(false); expect(model.enablePrivateMessages).toBe(false); const schema: StreamAttendeeOptionsSchema = { enable_2fa: false, enable_camera: true, enable_chat: false, enable_microphone: true, enable_multiple_hosts: false, enable_password: true, enable_private_messages: false, }; model.fromSchema(schema); expect(model.enable2fa).toBe(schema.enable_2fa); expect(model.enableCamera).toBe(schema.enable_camera); expect(model.enableChat).toBe(schema.enable_chat); expect(model.enableMicrophone).toBe(schema.enable_microphone); expect(model.enableMultipleHosts).toBe(schema.enable_multiple_hosts); expect(model.enablePassword).toBe(schema.enable_password); expect(model.enablePrivateMessages).toBe(schema.enable_private_messages); }); }); describe('#toSchema', () => { it('should build a schema object from the model', () => { const schema: StreamAttendeeOptionsSchema = { enable_2fa: false, enable_camera: false, enable_chat: false, enable_microphone: false, enable_multiple_hosts: false, enable_password: false, enable_private_messages: false, }; const model = new StreamAttendeeOptionsModel(schema); const newSchema = model.toSchema(); expect(schema).toStrictEqual(newSchema); }); }); });