/* eslint-disable @typescript-eslint/ban-ts-comment */ 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 createDesktopCapturerStream from './createDesktopCapturerStream'; import getDesktopSourceStreamBySourceID from './getDesktopSourceStreamBySourceID'; import DesktopCapturerSourcesService from '../DesktopCapturerSourcesService'; jest.useFakeTimers(); jest.mock('simple-peer'); jest.mock('./getDesktopSourceStreamBySourceID', () => { return jest.fn(); }); const MOCK_MEDIA_STREAM = ({} as unknown) as MediaStream; const TEST_SCREEN_SOURCE_ID = 'screen:1234fa'; const TEST_WINDOW_SOURCE_ID = 'window:1234fa'; const TEST_DISPLAY_SIZE = { width: 640, height: 480 }; describe('createDesktopCapturerStream callback', () => { let peerConnection: PeerConnection; beforeEach(() => { // @ts-ignore getDesktopSourceStreamBySourceID.mockReturnValueOnce(MOCK_MEDIA_STREAM); process.env.RUN_MODE = 'dev'; 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(() => { process.env.RUN_MODE = 'test'; jest.clearAllMocks(); jest.restoreAllMocks(); }); describe('when createDesktopCapturerStream called properly', () => { describe('when source type is screen', () => { it('should call getDesktopSourceStreamBySourceID with proper parameters and set localStream', async () => { peerConnection.sourceDisplaySize = { width: 640, height: 480 }; await createDesktopCapturerStream( peerConnection, TEST_SCREEN_SOURCE_ID ); expect(getDesktopSourceStreamBySourceID).toBeCalledWith( TEST_SCREEN_SOURCE_ID, TEST_DISPLAY_SIZE.width, TEST_DISPLAY_SIZE.height, 0.5, 1 ); expect(peerConnection.localStream).toBe(MOCK_MEDIA_STREAM); }); }); describe('when source type is window', () => { it('should call getDesktopSourceStreamBySourceID with proper parameters and set localStream', async () => { await createDesktopCapturerStream( peerConnection, TEST_WINDOW_SOURCE_ID ); expect(getDesktopSourceStreamBySourceID).toBeCalledWith( TEST_WINDOW_SOURCE_ID ); expect(peerConnection.localStream).toBe(MOCK_MEDIA_STREAM); }); }); }); });