From e4cf5b26eeeb55ee9dd12c5ca382d15a8474b004 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 17 Aug 2022 12:33:11 +0100 Subject: [PATCH] Add test for updateLocalUsermediaStream (#2596) --- spec/test-utils/webrtc.ts | 5 ++++- spec/unit/webrtc/groupCall.spec.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/spec/test-utils/webrtc.ts b/spec/test-utils/webrtc.ts index 62bf94510..28ee7e8a8 100644 --- a/spec/test-utils/webrtc.ts +++ b/spec/test-utils/webrtc.ts @@ -148,6 +148,7 @@ export class MockMediaStream { ) {} listeners: [string, (...args: any[]) => any][] = []; + public isStopped = false; dispatchEvent(eventType: string) { this.listeners.forEach(([t, c]) => { @@ -196,7 +197,9 @@ export class MockMediaHandler { this.userMediaStreams.push(stream); return stream; } - stopUserMediaStream() { } + stopUserMediaStream(stream: MockMediaStream) { + stream.isStopped = true; + } hasAudioDevice() { return true; } hasVideoDevice() { return true; } stopAllStreams() {} diff --git a/spec/unit/webrtc/groupCall.spec.ts b/spec/unit/webrtc/groupCall.spec.ts index 378fc1de8..6fc7ddf00 100644 --- a/spec/unit/webrtc/groupCall.spec.ts +++ b/spec/unit/webrtc/groupCall.spec.ts @@ -263,6 +263,33 @@ describe('Group Call', function() { groupCall.leave(); } }); + + it("retains state of local user media stream when updated", async () => { + try { + await groupCall.create(); + + await groupCall.initLocalCallFeed(); + + const oldStream = groupCall.localCallFeed.stream as unknown as MockMediaStream; + + // arbitrary values, important part is that they're the same afterwards + await groupCall.setLocalVideoMuted(true); + await groupCall.setMicrophoneMuted(false); + + const newStream = await mockClient.getMediaHandler().getUserMediaStream(true, true); + + groupCall.updateLocalUsermediaStream(newStream); + + expect(groupCall.localCallFeed.stream).toBe(newStream); + + expect(groupCall.isLocalVideoMuted()).toEqual(true); + expect(groupCall.isMicrophoneMuted()).toEqual(false); + + expect(oldStream.isStopped).toEqual(true); + } finally { + groupCall.leave(); + } + }); }); describe('Placing calls', function() {