// /* eslint-disable @typescript-eslint/ban-ts-comment */ // import handlePeerOnData from './handlePeerOnData'; // import getDesktopSourceStreamBySourceID from './getDesktopSourceStreamBySourceID'; // import { // TEST_ROOM_ID, // TEST_SHARING_SESSION_ID, // TEST_USER, // } from './mocks/testVars'; // import PeerConnection from '.'; // import RoomIDService from '../../server/RoomIDService'; // import ConnectedDevicesService from '../ConnectedDevicesService'; // import SharingSessionService from '../SharingSessionService'; // import DesktopCapturerSourceType from '../DesktopCapturerSourcesService/DesktopCapturerSourceType'; // import NullSimplePeer from './NullSimplePeer'; // import prepareDataMessageToSendScreenSourceType from './prepareDataMessageToSendScreenSourceType'; // import DesktopCapturerSourcesService from '../DesktopCapturerSourcesService'; // jest.useFakeTimers(); // jest.mock('simple-peer'); // jest.mock('./getDesktopSourceStreamBySourceID', () => { // return jest.fn(); // }); // const TEST_DATA_SET_VIDEO_QUALITY_05 = ` // { // "type": "set_video_quality", // "payload": { // "value": 0.5 // } // } // `; // const TEST_DATA_GET_SHARING_SOURCE_TYPE = ` // { // "type": "get_sharing_source_type", // "payload": { // } // } // `; // describe('handlePeerOnData callback', () => { // let peerConnection: PeerConnection; // beforeEach(() => { // peerConnection = new PeerConnection( // TEST_ROOM_ID, // TEST_SHARING_SESSION_ID, // TEST_USER, // {} as RoomIDService, // {} as ConnectedDevicesService, // {} as SharingSessionService, // {} as DesktopCapturerSourcesService // ); // peerConnection.desktopCapturerSourceID = DesktopCapturerSourceType.SCREEN; // }); // afterEach(() => { // jest.clearAllMocks(); // jest.restoreAllMocks(); // }); // describe('when handlePeerOnData called properly', () => { // describe('when handlePeerOnData called with set_video_quality data and when sharing source is SCREEN', () => { // it('should create new stream', () => { // handlePeerOnData(peerConnection, TEST_DATA_SET_VIDEO_QUALITY_05); // expect(getDesktopSourceStreamBySourceID).toBeCalled(); // }); // it('should call replaceTrack() on peer', async () => { // // @ts-ignore // getDesktopSourceStreamBySourceID.mockImplementation( // () => // (({ // getVideoTracks: () => [{ stop: jest.fn() }], // } as unknown) as MediaStream) // ); // peerConnection.localStream = ({ // getVideoTracks: () => [{ stop: jest.fn() }], // } as unknown) as MediaStream; // peerConnection.peer = ({ // replaceTrack: jest.fn(), // } as unknown) as typeof NullSimplePeer; // await handlePeerOnData(peerConnection, TEST_DATA_SET_VIDEO_QUALITY_05); // expect(peerConnection.peer.replaceTrack).toBeCalled(); // }); // it('should call .stop() on old track to clear memory', async () => { // // @ts-ignore // getDesktopSourceStreamBySourceID.mockImplementation( // () => // (({ // getVideoTracks: () => [{ stop: jest.fn() }], // } as unknown) as MediaStream) // ); // const oldTrackStopFunctionMock = jest.fn(); // peerConnection.localStream = ({ // getVideoTracks: () => [{ stop: oldTrackStopFunctionMock }], // } as unknown) as MediaStream; // peerConnection.peer = ({ // replaceTrack: jest.fn(), // } as unknown) as typeof NullSimplePeer; // await handlePeerOnData(peerConnection, TEST_DATA_SET_VIDEO_QUALITY_05); // expect(oldTrackStopFunctionMock).toBeCalled(); // }); // }); // describe('when handlePeerOnData called with set_video_quality data and when sharing source is WINDOW', () => { // it('should NOT create new stream', () => { // peerConnection.desktopCapturerSourceID = // DesktopCapturerSourceType.WINDOW; // handlePeerOnData(peerConnection, TEST_DATA_SET_VIDEO_QUALITY_05); // expect(getDesktopSourceStreamBySourceID).not.toBeCalled(); // }); // it('should NOT call replaceTrack() on peer', async () => { // peerConnection.desktopCapturerSourceID = // DesktopCapturerSourceType.WINDOW; // // @ts-ignore // getDesktopSourceStreamBySourceID.mockImplementation( // () => // (({ // getVideoTracks: () => [{ stop: jest.fn() }], // } as unknown) as MediaStream) // ); // peerConnection.localStream = ({ // getVideoTracks: () => [{ stop: jest.fn() }], // } as unknown) as MediaStream; // peerConnection.peer = ({ // replaceTrack: jest.fn(), // } as unknown) as typeof NullSimplePeer; // await handlePeerOnData(peerConnection, TEST_DATA_SET_VIDEO_QUALITY_05); // expect(peerConnection.peer.replaceTrack).not.toBeCalled(); // }); // it('should NOT call .stop() on old track to clear memory', async () => { // peerConnection.desktopCapturerSourceID = // DesktopCapturerSourceType.WINDOW; // // @ts-ignore // getDesktopSourceStreamBySourceID.mockImplementation( // () => // (({ // getVideoTracks: () => [{ stop: jest.fn() }], // } as unknown) as MediaStream) // ); // const oldTrackStopFunctionMock = jest.fn(); // peerConnection.localStream = ({ // getVideoTracks: () => [{ stop: oldTrackStopFunctionMock }], // } as unknown) as MediaStream; // peerConnection.peer = ({ // replaceTrack: jest.fn(), // } as unknown) as typeof NullSimplePeer; // await handlePeerOnData(peerConnection, TEST_DATA_SET_VIDEO_QUALITY_05); // expect(oldTrackStopFunctionMock).not.toBeCalled(); // }); // }); // describe('when handlePeerOnData called with get_sharing_source_type data', () => { // describe('when sharing source type is SCREEN', () => { // it('should call peer.send() with proper data', () => { // peerConnection.peer = ({ // send: jest.fn(), // } as unknown) as typeof NullSimplePeer; // handlePeerOnData(peerConnection, TEST_DATA_GET_SHARING_SOURCE_TYPE); // expect(peerConnection.peer.send).toBeCalledWith( // prepareDataMessageToSendScreenSourceType( // DesktopCapturerSourceType.SCREEN // ) // ); // }); // }); // describe('when sharing source type is WINDOW', () => { // it('should call peer.send() with proper data', () => { // peerConnection.desktopCapturerSourceID = // DesktopCapturerSourceType.WINDOW; // peerConnection.peer = ({ // send: jest.fn(), // } as unknown) as typeof NullSimplePeer; // handlePeerOnData(peerConnection, TEST_DATA_GET_SHARING_SOURCE_TYPE); // expect(peerConnection.peer.send).toBeCalledWith( // prepareDataMessageToSendScreenSourceType( // DesktopCapturerSourceType.WINDOW // ) // ); // }); // }); // }); // }); // });