Skip to content

Commit b47e8a3

Browse files
committed
Add new tests
Signed-off-by: Šimon Brandner <[email protected]>
1 parent 249a969 commit b47e8a3

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

spec/unit/webrtc/call.spec.ts

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,4 +427,82 @@ describe('Call', function() {
427427
expect(client.client.mediaHandler.getUserMediaStream).toHaveBeenNthCalledWith(1, true, true);
428428
expect(client.client.mediaHandler.getUserMediaStream).toHaveBeenNthCalledWith(2, true, false);
429429
});
430+
431+
it("should handle mid-call device changes", async () => {
432+
client.client.mediaHandler.getUserMediaStream = jest.fn().mockReturnValue(
433+
new MockMediaStream(
434+
"stream", [
435+
new MockMediaStreamTrack("audio_track", "audio"),
436+
new MockMediaStreamTrack("video_track", "video"),
437+
],
438+
),
439+
);
440+
441+
const callPromise = call.placeVideoCall();
442+
await client.httpBackend.flush();
443+
await callPromise;
444+
445+
await call.onAnswerReceived({
446+
getContent: () => {
447+
return {
448+
version: 1,
449+
call_id: call.callId,
450+
party_id: 'party_id',
451+
answer: {
452+
sdp: DUMMY_SDP,
453+
},
454+
};
455+
},
456+
});
457+
458+
await call.updateLocalUsermediaStream(
459+
new MockMediaStream(
460+
"replacement_stream",
461+
[
462+
new MockMediaStreamTrack("new_audio_track", "audio"),
463+
new MockMediaStreamTrack("video_track", "video"),
464+
],
465+
),
466+
);
467+
expect(call.localUsermediaStream.id).toBe("stream");
468+
expect(call.localUsermediaStream.getAudioTracks()[0].id).toBe("new_audio_track");
469+
expect(call.localUsermediaStream.getVideoTracks()[0].id).toBe("video_track");
470+
expect(call.usermediaSenders.find((sender) => {
471+
return sender?.track?.kind === "audio";
472+
}).track.id).toBe("new_audio_track");
473+
expect(call.usermediaSenders.find((sender) => {
474+
return sender?.track?.kind === "video";
475+
}).track.id).toBe("video_track");
476+
});
477+
478+
it("should handle upgrade to video call", async () => {
479+
const callPromise = call.placeVoiceCall();
480+
await client.httpBackend.flush();
481+
await callPromise;
482+
483+
await call.onAnswerReceived({
484+
getContent: () => {
485+
return {
486+
version: 1,
487+
call_id: call.callId,
488+
party_id: 'party_id',
489+
answer: {
490+
sdp: DUMMY_SDP,
491+
},
492+
[SDPStreamMetadataKey]: {},
493+
};
494+
},
495+
});
496+
497+
await call.upgradeCall(false, true);
498+
499+
expect(call.localUsermediaStream.getAudioTracks()[0].id).toBe("audio_track");
500+
expect(call.localUsermediaStream.getVideoTracks()[0].id).toBe("video_track");
501+
expect(call.usermediaSenders.find((sender) => {
502+
return sender?.track?.kind === "audio";
503+
}).track.id).toBe("audio_track");
504+
expect(call.usermediaSenders.find((sender) => {
505+
return sender?.track?.kind === "video";
506+
}).track.id).toBe("video_track");
507+
});
430508
});

0 commit comments

Comments
 (0)