@@ -82,17 +82,34 @@ class MockRTCPeerConnection {
8282 }
8383 close ( ) { }
8484 getStats ( ) { return [ ] ; }
85+ addTrack ( track : MockMediaStreamTrack ) { return new MockRTCRtpSender ( track ) ; }
86+ }
87+
88+ class MockRTCRtpSender {
89+ constructor ( public track : MockMediaStreamTrack ) { }
90+
91+ replaceTrack ( track : MockMediaStreamTrack ) { this . track = track ; }
92+ }
93+
94+ class MockMediaStreamTrack {
95+ constructor ( public readonly id : string , public readonly kind : "audio" | "video" , public enabled = true ) { }
96+
97+ stop ( ) { }
8598}
8699
87100class MockMediaStream {
88101 constructor (
89102 public id : string ,
103+ private tracks : MockMediaStreamTrack [ ] = [ ] ,
90104 ) { }
91105
92- getTracks ( ) { return [ ] ; }
93- getAudioTracks ( ) { return [ { enabled : true } ] ; }
94- getVideoTracks ( ) { return [ { enabled : true } ] ; }
106+ getTracks ( ) { return this . tracks ; }
107+ getAudioTracks ( ) { return this . tracks . filter ( ( track ) => track . kind === "audio" ) ; }
108+ getVideoTracks ( ) { return this . tracks . filter ( ( track ) => track . kind === "video" ) ; }
95109 addEventListener ( ) { }
110+ removeEventListener ( ) { }
111+ addTrack ( track : MockMediaStreamTrack ) { this . tracks . push ( track ) ; }
112+ removeTrack ( track : MockMediaStreamTrack ) { this . tracks . splice ( this . tracks . indexOf ( track ) , 1 ) ; }
96113}
97114
98115class MockMediaDeviceInfo {
@@ -102,7 +119,13 @@ class MockMediaDeviceInfo {
102119}
103120
104121class MockMediaHandler {
105- getUserMediaStream ( ) { return new MockMediaStream ( "mock_stream_from_media_handler" ) ; }
122+ getUserMediaStream ( audio : boolean , video : boolean ) {
123+ const tracks = [ ] ;
124+ if ( audio ) tracks . push ( new MockMediaStreamTrack ( "audio_track" , "audio" ) ) ;
125+ if ( video ) tracks . push ( new MockMediaStreamTrack ( "video_track" , "video" ) ) ;
126+
127+ return new MockMediaStream ( "mock_stream_from_media_handler" , tracks ) ;
128+ }
106129 stopUserMediaStream ( ) { }
107130}
108131
@@ -350,7 +373,15 @@ describe('Call', function() {
350373 } ,
351374 } ) ;
352375
353- call . pushRemoteFeed ( new MockMediaStream ( "remote_stream" ) ) ;
376+ call . pushRemoteFeed (
377+ new MockMediaStream (
378+ "remote_stream" ,
379+ [
380+ new MockMediaStreamTrack ( "remote_audio_track" , "audio" ) ,
381+ new MockMediaStreamTrack ( "remote_video_track" , "video" ) ,
382+ ] ,
383+ ) ,
384+ ) ;
354385 const feed = call . getFeeds ( ) . find ( ( feed ) => feed . stream . id === "remote_stream" ) ;
355386 expect ( feed ?. purpose ) . toBe ( SDPStreamMetadataPurpose . Usermedia ) ;
356387 expect ( feed ?. isAudioMuted ( ) ) . toBeTruthy ( ) ;
0 commit comments