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); } }
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()); } }