@@ -601,116 +601,125 @@ describe('Meetings SDK Adapter', () => {
601
601
} ) ;
602
602
} ) ;
603
603
604
- describe ( 'videoControl ()' , ( ) => {
605
- test ( 'returns the display data of a meeting control in a proper shape ', ( done ) => {
606
- meetingsSDKAdapter . videoControl ( meetingID ) . subscribe ( ( dataDisplay ) => {
607
- expect ( dataDisplay ) . toMatchObject ( {
608
- ID : 'mute-video' ,
609
- type : 'TOGGLE' ,
610
- icon : 'camera-muted_28' ,
611
- tooltip : 'No camera available ',
612
- state : 'disabled' ,
613
- text : 'No camera' ,
614
- } ) ;
615
- done ( ) ;
604
+ describe ( 'handleLocalVideo ()' , ( ) => {
605
+ describe ( 'video is unmuted ', ( ) => {
606
+ beforeEach ( ( ) => {
607
+ meetingsSDKAdapter . meetings [ meetingID ] = {
608
+ ... meeting ,
609
+ localVideo : {
610
+ stream : mockSDKMediaStreams . localVideo ,
611
+ permission : 'ALLOWED ',
612
+ } ,
613
+ disabledLocalVideo : null ,
614
+ remoteVideo : { } ,
615
+ } ;
616
616
} ) ;
617
- } ) ;
618
617
619
- test ( 'throws errors if sdk meeting object is not defined' , ( done ) => {
620
- meetingsSDKAdapter . videoControl ( 'inexistent' ) . subscribe (
621
- ( ) => { } ,
622
- ( error ) => {
623
- expect ( error . message ) . toBe ( 'Could not find meeting with ID "inexistent"' ) ;
624
- done ( ) ;
625
- } ,
626
- ) ;
627
- } ) ;
628
- } ) ;
618
+ test ( 'does not call sdk muteVideo() if the meeting is inactive' , async ( ) => {
619
+ meetingsSDKAdapter . meetings [ meetingID ] . remoteVideo = null ;
620
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
629
621
630
- describe ( 'handleLocalVideo()' , ( ) => {
631
- beforeEach ( ( ) => {
632
- meetingsSDKAdapter . meetings [ meetingID ] = {
633
- ...meeting ,
634
- localVideo : {
635
- stream : mockSDKMediaStreams . localVideo ,
636
- } ,
637
- remoteVideo : { } ,
638
- } ;
639
- } ) ;
622
+ expect ( mockSDKMeeting . muteVideo ) . not . toHaveBeenCalled ( ) ;
623
+ } ) ;
640
624
641
- test ( 'skips muting video if there is an inactive meeting' , async ( ) => {
642
- meetingsSDKAdapter . meetings [ meetingID ] . remoteVideo = null ;
643
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
625
+ test ( 'calls sdk muteVideo() if the meeting is active' , async ( ) => {
626
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
644
627
645
- expect ( mockSDKMeeting . muteVideo ) . not . toHaveBeenCalled ( ) ;
646
- } ) ;
628
+ expect ( mockSDKMeeting . muteVideo ) . toHaveBeenCalled ( ) ;
629
+ } ) ;
647
630
648
- test ( 'skips unmuting video if there is an inactive meeting' , async ( ) => {
649
- meetingsSDKAdapter . meetings [ meetingID ] . remoteVideo = null ;
650
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
631
+ test ( 'updates the meeting object to have video muted' , async ( ) => {
632
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
651
633
652
- expect ( mockSDKMeeting . unmuteVideo ) . not . toHaveBeenCalled ( ) ;
653
- } ) ;
634
+ expect ( meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream ) . toBeNull ( ) ;
635
+ expect ( meetingsSDKAdapter . meetings [ meetingID ] . disabledLocalVideo ) . toMatchMediaStream (
636
+ mockSDKMediaStreams . localVideo ,
637
+ ) ;
638
+ } ) ;
654
639
655
- test ( 'mutes video if the the video track is enabled ' , async ( ) => {
656
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
640
+ test ( 'emits a meeting updated event ' , async ( ) => {
641
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
657
642
658
- expect ( mockSDKMeeting . muteVideo ) . toHaveBeenCalled ( ) ;
659
- } ) ;
643
+ expect ( mockSDKMeeting . emit ) . toHaveBeenCalledTimes ( 1 ) ;
644
+ expect ( mockSDKMeeting . emit . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'adapter:meeting:updated' ) ;
645
+ expect ( mockSDKMeeting . emit . mock . calls [ 0 ] [ 1 ] ) . toMatchObject ( {
646
+ localVideo : { stream : null } ,
647
+ disabledLocalVideo : mockSDKMediaStreams . localVideo ,
648
+ } ) ;
649
+ } ) ;
650
+
651
+ test ( 'logs error if the sdk muteVideo() rejects with an error' , async ( ) => {
652
+ const error = new Error ( 'sdk error' ) ;
660
653
661
- test ( 'localVideo property should be null once the video track is muted' , async ( ) => {
662
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
654
+ mockSDKMeeting . muteVideo = jest . fn ( ( ) => Promise . reject ( error ) ) ;
655
+ global . console . error = jest . fn ( ) ;
656
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
663
657
664
- expect ( meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream ) . toBeNull ( ) ;
658
+ expect ( global . console . error ) . toHaveBeenCalledWith (
659
+ 'Unable to update local video settings for meeting "meetingID"' ,
660
+ error ,
661
+ ) ;
662
+ } ) ;
665
663
} ) ;
666
664
667
- test ( 'emits the custom event after muting the video track' , async ( ) => {
668
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
665
+ describe ( 'video is muted' , ( ) => {
666
+ beforeEach ( ( ) => {
667
+ meetingsSDKAdapter . meetings [ meetingID ] = {
668
+ ...meeting ,
669
+ localVideo : {
670
+ stream : null ,
671
+ permission : undefined ,
672
+ } ,
673
+ disabledLocalVideo : mockSDKMediaStreams . localVideo ,
674
+ remoteVideo : { } ,
675
+ } ;
676
+ } ) ;
677
+
678
+ test ( 'does not call sdk unmuteVideo() if the meeting is inactive' , async ( ) => {
679
+ meetingsSDKAdapter . meetings [ meetingID ] . remoteVideo = null ;
680
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
669
681
670
- expect ( mockSDKMeeting . emit ) . toHaveBeenCalledWith ( 'adapter:media:local:update' , {
671
- control : 'mute-video' ,
672
- state : 'inactive' ,
682
+ expect ( mockSDKMeeting . unmuteVideo ) . not . toHaveBeenCalled ( ) ;
673
683
} ) ;
674
- } ) ;
675
684
676
- test ( 'unmutes video if the video track is disabled' , async ( ) => {
677
- meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream = null ;
678
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
685
+ test ( 'calls sdk unmuteVideo() if the meeting is active' , async ( ) => {
686
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
679
687
680
- expect ( mockSDKMeeting . emit ) . toHaveBeenCalledWith ( 'adapter:media:local:update' , {
681
- control : 'mute-video' ,
682
- state : 'disabled' ,
688
+ expect ( mockSDKMeeting . unmuteVideo ) . toHaveBeenCalled ( ) ;
683
689
} ) ;
684
- } ) ;
685
690
686
- test ( 'localVideo property should be defined once the video track is unmuted' , async ( ) => {
687
- meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream = null ;
688
- meetingsSDKAdapter . meetings [ meetingID ] . disabledLocalVideo = mockSDKMediaStreams . localVideo ;
689
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
691
+ test ( 'updates the meeting object to have video unmuted' , async ( ) => {
692
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
690
693
691
- expect ( meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream )
692
- . toMatchMediaStream ( mockSDKMediaStreams . localVideo ) ;
693
- } ) ;
694
+ expect ( meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream )
695
+ . toMatchMediaStream ( mockSDKMediaStreams . localVideo ) ;
696
+ expect ( meetingsSDKAdapter . meetings [ meetingID ] . disabledLocalVideo ) . toBeNull ( ) ;
697
+ } ) ;
694
698
695
- test ( 'emits the custom event after unmuting the video track' , async ( ) => {
696
- meetingsSDKAdapter . meetings [ meetingID ] . localVideo . stream = null ;
697
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
699
+ test ( 'emits a meeting updated event' , async ( ) => {
700
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
698
701
699
- expect ( mockSDKMeeting . emit ) . toHaveBeenCalledWith ( 'adapter:media:local:update' , {
700
- control : 'mute-video' ,
701
- state : 'disabled' ,
702
+ expect ( mockSDKMeeting . emit ) . toHaveBeenCalledTimes ( 1 ) ;
703
+ expect ( mockSDKMeeting . emit . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'adapter:meeting:updated' ) ;
704
+ expect ( mockSDKMeeting . emit . mock . calls [ 0 ] [ 1 ] ) . toMatchObject ( {
705
+ localVideo : {
706
+ stream : mockSDKMediaStreams . localVideo ,
707
+ } ,
708
+ } ) ;
702
709
} ) ;
703
- } ) ;
704
710
705
- test ( 'throws error if video control is not handled properly' , async ( ) => {
706
- mockSDKMeeting . muteVideo = jest . fn ( ( ) => Promise . reject ( ) ) ;
707
- global . console . error = jest . fn ( ) ;
708
- await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
711
+ test ( 'logs error if the sdk unmuteVideo() rejects with an error' , async ( ) => {
712
+ const error = new Error ( 'sdk error' ) ;
709
713
710
- expect ( global . console . error ) . toHaveBeenCalledWith (
711
- 'Unable to update local video settings for meeting "meetingID"' ,
712
- undefined ,
713
- ) ;
714
+ mockSDKMeeting . unmuteVideo = jest . fn ( ( ) => Promise . reject ( error ) ) ;
715
+ global . console . error = jest . fn ( ) ;
716
+ await meetingsSDKAdapter . handleLocalVideo ( meetingID ) ;
717
+
718
+ expect ( global . console . error ) . toHaveBeenCalledWith (
719
+ 'Unable to update local video settings for meeting "meetingID"' ,
720
+ error ,
721
+ ) ;
722
+ } ) ;
714
723
} ) ;
715
724
} ) ;
716
725
0 commit comments