public void All_logs_should_have_correct_external_id()
        {
            // arrange
            var builder = AccountStatusChangeFailed.CreateBuilder();

            builder
            .SetCommandId("1")
            .SetExternalId("1")
            .SetSource(SourceSystem.STARCHEF);
            var payload = builder.Build();

            var dbCommands = new Mock <IDatabaseCommands>();
            var validator  = new Mock <IEventValidator>(MockBehavior.Strict);

            validator.Setup(m => m.IsAllowedEvent(payload)).Returns(true);
            validator.Setup(m => m.IsValidPayload(It.IsAny <object>())).Returns(true);
            var messagingLogger = new Mock <IMessagingLogger>();
            var logChecker      = new LogChecker(typeof(AccountStatusChangeFailedEventHandler), Level.All);
            var handler         = new AccountStatusChangeFailedEventHandler(dbCommands.Object, validator.Object, messagingLogger.Object, logChecker.GetLogger());

            // act
            var result = handler.HandleAsync(payload, "1").Result;

            var messageList = logChecker.LoggingEvents;

            logChecker.Dispose();

            // assert
            Assert.All(messageList, item =>
            {
                Assert.Equal("1", item.Properties[AccountStatusChangeFailedEventHandler.EXTERNAL_ID]);
            });

            Assert.Null(ThreadContext.Properties[AccountStatusChangeFailedEventHandler.EXTERNAL_ID]);
        }
        public void Should_not_have_log_for_non_starchef_events()
        {
            // arrange
            var builder = AccountStatusChangeFailed.CreateBuilder();

            builder
            .SetCommandId("1")
            .SetExternalId("1")
            .SetSource(SourceSystem.ADACO);
            var payload = builder.Build();

            var dbCommands = new Mock <IDatabaseCommands>();
            var validator  = new Mock <IEventValidator>(MockBehavior.Strict);

            validator.Setup(m => m.IsAllowedEvent(payload)).Returns(false);


            var messagingLogger = new Mock <IMessagingLogger>();
            var logChecker      = new LogChecker(typeof(AccountStatusChangeFailedEventHandler), Level.All);
            var handler         = new AccountStatusChangeFailedEventHandler(dbCommands.Object, validator.Object, messagingLogger.Object, logChecker.GetLogger());

            // act
            var result = handler.HandleAsync(payload, "1").Result;

            var messageList = logChecker.LoggingEvents;

            logChecker.Dispose();

            // assert
            Assert.Empty(messageList);

            Assert.Null(ThreadContext.Properties[AccountStatusChangeFailedEventHandler.EXTERNAL_ID]);
        }