diff --git a/packages/connector/src/__mocks__/testData.ts b/packages/connector/src/__mocks__/testData.ts index 2d5205ae..4051e1cb 100644 --- a/packages/connector/src/__mocks__/testData.ts +++ b/packages/connector/src/__mocks__/testData.ts @@ -59,6 +59,18 @@ const xmlData = { YES `, + machineInfoOpenMedia: ` + Annova + 1 + 1 + 1 + 1 + 1 + NCS.ID.MOS + + + 2.84 + `, reqObj: ` M000123 `, mosReqAll: ` 0 `, mosObj: ` M000123 Hotel Fire Hotel Fire vo :30 Show 7 VIDEO 59.94 1 1800 NEW READY\\server\\media\\clip392028cd2320s0d.mxfhttps://server/proxy/clipe.wmvhttps://server/proxy/clipe.xml Chris 2009-10-31T23:39:12 Chris 2009-10-31T23:39:12

Exterior footage of Baley Park Hotel on fire with natural sound. Trucks are visible for the first portion of the clip. CG locator at 0:04 and duration 0:05, Baley Park Hotel.

Cuts to view of fire personnel exiting hotel lobby and cleaning up after the fire is out.

Clip has been doubled for pad on voice over.

STORY https://MOSA4.com/mos/supported_schemas/MOSAXML2.08 SHOLMES 20010308142001 0 278 LJOHNSTON 0 SHOLMES
`, @@ -516,6 +528,22 @@ const xmlApiData = { profile7: true, }, }), + machineInfoOpenMediaReply: literal({ + manufacturer: mosTypes.mosString128.create('Annova'), + model: mosTypes.mosString128.create('1'), + hwRev: mosTypes.mosString128.create('1'), + swRev: mosTypes.mosString128.create('1'), + DOM: mosTypes.mosString128.create('1'), + SN: mosTypes.mosString128.create('1'), + ID: mosTypes.mosString128.create('NCS.ID.MOS'), + time: mosTypes.mosTime.create('0'), + opTime: mosTypes.mosTime.create('0'), + mosRev: mosTypes.mosString128.create('2.84'), + + supportedProfiles: { + deviceType: 'N/A', + }, + }), mosObj: literal({ ID: mosTypes.mosString128.create('M000123'), Slug: mosTypes.mosString128.create('My new object'), diff --git a/packages/connector/src/__tests__/Profile0-open-media.spec.ts b/packages/connector/src/__tests__/Profile0-open-media.spec.ts new file mode 100644 index 00000000..e8396625 --- /dev/null +++ b/packages/connector/src/__tests__/Profile0-open-media.spec.ts @@ -0,0 +1,200 @@ +import { + checkMessageSnapshot, + clearMocks, + decode, + doBeforeAll, + encode, + getMessageId, + getMosConnection, + getMosDevice, + getXMLReply, + setupMocks, +} from './lib' +import { MosConnection, MosDevice, IMOSObject, IMOSListMachInfo } from '..' +import { SocketMock } from '../__mocks__/socket' +import { xmlData, xmlApiData } from '../__mocks__/testData' + +/* eslint-disable @typescript-eslint/no-unused-vars */ +// @ts-ignore imports are unused +import { Socket } from 'net' +/* eslint-enable @typescript-eslint/no-unused-vars */ + +beforeAll(() => { + setupMocks() +}) +beforeEach(() => { + clearMocks() +}) +describe('Profile 0 - non strict', () => { + let mosDevice: MosDevice + let mosConnection: MosConnection + + let socketMockLower: SocketMock + let socketMockUpper: SocketMock + let socketMockQuery: SocketMock + + let serverSocketMockLower: SocketMock + let serverSocketMockUpper: SocketMock + let serverSocketMockQuery: SocketMock + + let onRequestMachineInfo: jest.Mock + let onRequestMOSObject: jest.Mock + let onRequestAllMOSObjects: jest.Mock + + beforeAll(async () => { + mosConnection = await getMosConnection( + { + '0': true, + '1': true, // Must support at least one other profile + }, + false + ) + mosDevice = await getMosDevice(mosConnection) + + // Profile 0: + onRequestMachineInfo = jest.fn(async () => { + return xmlApiData.machineInfo + }) + mosDevice.onRequestMachineInfo(async (): Promise => { + return onRequestMachineInfo() + }) + // Profile 1: + onRequestMOSObject = jest.fn(async () => { + return xmlApiData.mosObj + }) + onRequestAllMOSObjects = jest.fn(async () => { + return [xmlApiData.mosObj, xmlApiData.mosObj2] + }) + mosDevice.onRequestMOSObject(async (objId: string): Promise => { + return onRequestMOSObject(objId) + }) + mosDevice.onRequestAllMOSObjects(async (): Promise> => { + return onRequestAllMOSObjects() + }) + const b = doBeforeAll() + socketMockLower = b.socketMockLower + socketMockUpper = b.socketMockUpper + socketMockQuery = b.socketMockQuery + serverSocketMockLower = b.serverSocketMockLower + serverSocketMockUpper = b.serverSocketMockUpper + serverSocketMockQuery = b.serverSocketMockQuery + + mosDevice.checkProfileValidness() + mosConnection.checkProfileValidness() + }) + afterAll(async () => { + await mosDevice.dispose() + await mosConnection.dispose() + }) + beforeEach(() => { + onRequestMOSObject.mockClear() + onRequestAllMOSObjects.mockClear() + + serverSocketMockLower.mockClear() + serverSocketMockUpper.mockClear() + if (serverSocketMockQuery) serverSocketMockQuery.mockClear() + socketMockLower.mockClear() + socketMockUpper.mockClear() + if (socketMockQuery) socketMockQuery.mockClear() + }) + test('init', async () => { + expect(mosDevice).toBeTruthy() + expect(socketMockLower).toBeTruthy() + expect(socketMockUpper).toBeTruthy() + expect(serverSocketMockLower).toBeTruthy() + }) + test('requestMachineInfo - missing