/// <exception cref="NotSupportedMessageException">Raised when message type is not supported</exception> public IMessageHandler CreateHandler <T>() { var configuration = new AppConfigConfiguration(); var csProvider = new ConnectionStringProvider(); var dbCommands = new DatabaseCommands(csProvider, configuration); var messagingLogger = new MessagingLogger(dbCommands); if (typeof(T) == typeof(PriceBandUpdated)) { var validator = new PriceBandUpdatedValidator(dbCommands); return(new PriceBandEventHandler(dbCommands, validator, messagingLogger, configuration)); } if (typeof(T) == typeof(AccountCreated)) { var validator = new AccountCreatedValidator(dbCommands); var handler = new AccountCreatedEventHandler(dbCommands, validator, configuration, messagingLogger); handler.OnProcessed += SendMessage; return(handler); } if (typeof(T) == typeof(AccountCreateFailed)) { var validator = new AccountCreateFailedValidator(dbCommands); return(new AccountCreateFailedEventHandler(dbCommands, validator, messagingLogger)); } if (typeof(T) == typeof(AccountUpdated)) { var validator = new AccountUpdatedValidator(dbCommands); return(new AccountUpdatedEventHandler(dbCommands, validator, messagingLogger)); } if (typeof(T) == typeof(AccountUpdateFailed)) { var validator = new AccountUpdateFailedValidator(dbCommands); return(new AccountUpdateFailedEventHandler(dbCommands, validator, messagingLogger)); } if (typeof(T) == typeof(AccountStatusChanged)) { var validator = new AccountStatusChangedValidator(dbCommands); return(new AccountStatusChangedEventHandler(dbCommands, validator, messagingLogger)); } if (typeof(T) == typeof(AccountStatusChangeFailed)) { var validator = new AccountStatusChangeFailedValidator(dbCommands); return(new AccountStatusChangeFailedEventHandler(dbCommands, validator, messagingLogger)); } if (typeof(T) == typeof(FileUploadCompleted)) { var validator = new FileUploadEventValidator(dbCommands); return(new FileUploadCompletedHandler(dbCommands, validator, messagingLogger)); } throw new NotSupportedMessageException(string.Format("Message type {0} is not supported.", typeof(T).Name)); }
public void Should_return_true_for_valid_model() { var builder = AccountCreateFailed.CreateBuilder(); builder .SetInternalId("1") .SetReason(AccountCreateFailedReason.INVALID_CREATE_DATA); var accountCreated = builder.Build(); var validator = new AccountCreateFailedValidator(Mock.Of <IDatabaseCommands>()); var actual = validator.IsValidPayload(accountCreated); Assert.True(actual); }
public void Should_catch_nonInt_IntenalId() { var builder = AccountCreateFailed.CreateBuilder(); const long MORE_THAN_INT = (((long)int.MaxValue) + 1); builder.SetReason(AccountCreateFailedReason.INVALID_CREATE_DATA) .SetInternalId(MORE_THAN_INT.ToString()); var payload = builder.Build(); var validator = new AccountCreateFailedValidator(Mock.Of <IDatabaseCommands>()); var result = validator.IsValidPayload(payload); Assert.False(result); Assert.Equal("InternalId is not Int32: " + MORE_THAN_INT, validator.GetErrors()); }
public void Should_updated_valid_data_and_log_to_messaging_events() { var builder = AccountCreateFailed.CreateBuilder(); builder .SetInternalId("1") .SetReason(AccountCreateFailedReason.INVALID_CREATE_DATA) .SetSource(SourceSystem.STARCHEF); var payload = builder.Build(); var dbCommands = new Mock <IDatabaseCommands>(); var validator = new AccountCreateFailedValidator(dbCommands.Object); var messagingLogger = new Mock <IMessagingLogger>(); var handler = new AccountCreateFailedEventHandler(dbCommands.Object, validator, messagingLogger.Object); var result = handler.HandleAsync(payload, "1").Result; // assertions Assert.Equal(MessageHandlerResult.Success, result); messagingLogger.Verify(m => m.ReceivedFailedMessage(It.IsAny <FailedTransferObject>(), It.IsAny <string>()), Times.Once); }