public async Task CallNextAction(bool loggingEnabled)
        {
            behaviour = new LoggingIncomingBehaviour(mockLogger.Object, LogLevel.Warning);

            var message = IncomingMessageBuilder.BuildDefault();

            mockLogger.Setup(m => m.IsEnabled(LogLevel.Warning)).Returns(loggingEnabled);

            await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false);

            Assert.IsTrue(nextActionWasCalled);
        }
        public async Task LogMessageAtConfiguredLevel(LogLevel level)
        {
            behaviour = new LoggingIncomingBehaviour(mockLogger.Object, level);

            var message = IncomingMessageBuilder.BuildDefault();

            mockLogger.Setup(m => m.IsEnabled(level)).Returns(true);

            await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false);

            mockLogger.VerifyLoggedMessageContains(level, "HANDLING ");
        }
        public async Task NotLogWhenLoggingIsDisabled()
        {
            behaviour = new LoggingIncomingBehaviour(mockLogger.Object, LogLevel.Warning);

            var message = IncomingMessageBuilder.BuildDefault();

            mockLogger.Setup(m => m.IsEnabled(LogLevel.Warning)).Returns(false);

            await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false);

            mockLogger
            .Verify(
                m => m.Log <object>(
                    It.IsAny <LogLevel>(),
                    It.IsAny <EventId>(), It.IsAny <object>(), It.IsAny <Exception>(),
                    It.IsAny <Func <object, Exception, string> >()),
                Times.Never);
        }