public AccountState Event(AccountStatusChanged occurred) { return(new AccountState(this.AccountNumber, this.CurrentBalance, occurred.AccountStatus, this.Obligations, SimulatedFields, AuditLog.Add(new StateLog("AccountStatusChanged", occurred.UniqueGuid(), occurred.OccurredOn())))); }
public void Should_not_have_log_for_non_starchef_events() { // arrange var builder = AccountStatusChanged.CreateBuilder(); builder .SetSource(SourceSystem.ADACO) .SetExternalId(Guid.Empty.ToString()) .SetStatus(AccountStatus.ACTIVE); 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(AccountStatusChangedEventHandler), Level.All); var handler = new AccountStatusChangedEventHandler(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[AccountStatusChangedEventHandler.EXTERNAL_ID]); }
private AccountState ApplyEvent(AccountStatusChanged occurred) { return(new AccountState( AccountNumber, CurrentBalance, occurred.AccountStatus, Obligations, SimulatedFields, AuditLog.Add(new StateLog("AccountStatusChanged", occurred.Message, occurred.UniqueGuid(), occurred.OccurredOn())), OpeningBalance, Inventroy, UserName, LastPaymentAmount, LastPaymentDate)); }
public void Should_log_listener_exceptions_and_have_correct_external_id() { // arrange var builder = AccountStatusChanged.CreateBuilder(); builder .SetSource(SourceSystem.STARCHEF) .SetExternalId(Guid.Empty.ToString()) .SetStatus(AccountStatus.ACTIVE); 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>(); messagingLogger.Setup(d => d.MessageProcessedSuccessfully(It.IsAny <object>(), It.IsAny <string>())).Throws(new ListenerException()); var logChecker = new LogChecker(typeof(AccountStatusChangedEventHandler), Level.All); var handler = new AccountStatusChangedEventHandler(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(item.Properties[AccountStatusChangedEventHandler.EXTERNAL_ID], Guid.Empty.ToString()); }); Assert.NotNull( messageList.Where( item => item.ExceptionObject != null && item.ExceptionObject.GetType() == typeof(ListenerException)).FirstOrDefault() ); Assert.Null(ThreadContext.Properties[AccountStatusChangedEventHandler.EXTERNAL_ID]); }
public void All_logs_should_have_correct_external_id_invalid_payload() { // arrange var builder = AccountStatusChanged.CreateBuilder(); builder .SetSource(SourceSystem.STARCHEF) .SetExternalId(Guid.Empty.ToString()) .SetStatus(AccountStatus.ACTIVE); 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(false); validator.Setup(m => m.GetErrors()).Returns(string.Empty); var messagingLogger = new Mock <IMessagingLogger>(); var logChecker = new LogChecker(typeof(AccountStatusChangedEventHandler), Level.All); var handler = new AccountStatusChangedEventHandler(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(item.Properties[AccountStatusChangedEventHandler.EXTERNAL_ID], Guid.Empty.ToString()); }); Assert.Null(ThreadContext.Properties[AccountStatusChangedEventHandler.EXTERNAL_ID]); }