Ejemplo n.º 1
0
        /// <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);
        }