public void DoubleStopShouldNotCauseErrorTest()
        {
            var model    = new Mock <IModel>();
            var consumer = new Mock <IConsumer>();
            var actor    = new Mock <IActorRef>();

            var test = new StreamSubscriber(model.Object, consumer.Object, actor.Object);

            model.Setup(x => x.BasicConsume("test", true, consumer.Object.Id, false, false, null, test)).Callback(() => { });
            test.StartConsuming("test");

            test.StopConsuming();
            test.StopConsuming();
        }
        public void StopConsumingShouldNotLogWarnWhenAlreadyClosedConnectionTest()
        {
            var model    = new Mock <IModel>();
            var consumer = new Mock <IConsumer>();
            var actor    = new Mock <IActorRef>();
            var logger   = new Mock <ILog>();

            consumer.SetupGet(c => c.Id).Returns("Consumer1Id");

            var test = new StreamSubscriber(model.Object, consumer.Object, actor.Object);

            var loggerField = test.GetType().GetField("_logger", BindingFlags.Instance | BindingFlags.NonPublic);

            loggerField.SetValue(test, logger.Object);

            model.Setup(x => x.BasicConsume("test", true, consumer.Object.Id, false, false, null, test)).Callback(() => { });
            test.StartConsuming("test");

            model.SetupGet(m => m.IsClosed).Returns(true);
            model.Setup(x => x.BasicCancel(consumer.Object.Id)).Callback(() =>
            {
                throw new AlreadyClosedException(
                    new ShutdownEventArgs(ShutdownInitiator.Application, 0, "Already closed"));
            });

            test.StopConsuming();

            logger.Verify(
                l => l.Warn(It.Is <string>(
                                msg => msg.StartsWith($"Connection already closed for consumerId={consumer.Object.Id}"))),
                Times.Never, "Connection already closed warning should not be logged.");
        }
        public void StopShouldsENDdIApatchesRemoveMessageTest()
        {
            var model    = new Mock <IModel>();
            var consumer = new Mock <IConsumer>();
            var actor    = new Mock <IActorRef>();
            var test     = new StreamSubscriber(model.Object, consumer.Object, actor.Object);

            model.Setup(x => x.BasicConsume("test", true, consumer.Object.Id, false, false, null, test)).Callback(() => { });
            //test.IsDisposed.Should().Be(false);

            test.StartConsuming("test");
            test.StopConsuming();

            //TODO check RemoveSubscriberMessage
        }