Пример #1
0
 public HoldMediaState(CallMediaState holdState, MediaSession context)
     : base(context)
 {
     _context.IsHeld = true;
     LogManager.GetLogger <HoldMediaState>()
     .DebugFormat("Call {0} {1}", _context.Call.Id, GetType().Name);
     _context.MediaState = holdState;
     //connect media if not connected
     if (_context.IsActive)
     {
         _context.IsActive = false;
         _context.ConferenceBridge.DisconnectFromSoundDevice(
             _context.Call.ConferenceSlotId);
     }
 }
Пример #2
0
        public void when_transfer_it_should_depend_on_media_state__should_delegate_call_to_provider([
                                                                                                        Values(
                                                                                                            CallMediaState.None,
                                                                                                            CallMediaState.Active,
                                                                                                            CallMediaState.Disconnected,
                                                                                                            CallMediaState.Error,
                                                                                                            CallMediaState.LocalHold,
                                                                                                            CallMediaState.RemoteHold)] CallMediaState mediaState, [Values(
                                                                                                                                                                        true,
                                                                                                                                                                        true,
                                                                                                                                                                        false,
                                                                                                                                                                        false,
                                                                                                                                                                        false,
                                                                                                                                                                        false
                                                                                                                                                                        )] bool shouldDelegate)
        {
            _provider.Setup(x => x.GetInfo(It.IsAny <int>()))
            .Returns(new CallInfo()
            {
                MediaStatus = mediaState
            });

            //arrange
            _sut.SetId(_fixture.CreateAnonymous <int>());
            _sut.HandleMediaStateChanged();

            //act
            _sut.Transfer("sip:sip@sip");

            //assert

            if (shouldDelegate)
            {
                _provider.Verify(x => x.TransferCall(It.Is <int>(x1 => x1 == _sut.Id), It.Is <string>(x1 => x1 == "sip:sip@sip")), Times.Once());
            }
            else
            {
                _provider.Verify(x => x.TransferCall(It.Is <int>(x1 => x1 == _sut.Id), It.Is <string>(x1 => x1 == "sip:sip@sip")), Times.Never());
            }
        }