public void Should_reconnect_if_user_ack_wrong_delivery_id()
{
// Arrange
var waitHandler = new AutoResetEvent(false);
var id = Guid.NewGuid();
var channel = Substitute.For <IModel>();
channel.IsOpen.Returns(true);
var routeFinder = Substitute.For <IRouteFinder>();
var durableConnection = Substitute.For <IDurableConnection>();
//durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>());
durableConnection.When(x => x.Connect()).Do(callInfo =>
{
durableConnection.Connected += Raise.Event <Action>();
durableConnection.IsConnected.Returns(true);
});
durableConnection.CreateChannel().Returns(channel);
var tunnel = new RabbitTunnelForTest(routeFinder, durableConnection);
Action action = () => waitHandler.Set();
tunnel.SubscribeActions[id] = action;
tunnel.CreatedChannels.Add(channel);
// Action
tunnel.PublicTryReconnect(channel, id, new ShutdownEventArgs(ShutdownInitiator.Peer, 406, "PRECONDITION_FAILED - unknown delivery tag 10000"));
waitHandler.WaitOne(5000);
// Assert
Assert.IsTrue(tunnel.CreatedChannels.Count == 0);
}