示例#1
0
        public void InitialTransfer_WhenProcessingValidTransaction_ProducesExpectedEvents(string from, string to, decimal amount, string expectedEvent)
        {
            var transactionId   = Guid.NewGuid().ToString();
            var initialTransfer = new InitialTransfer(transactionId, from, to, amount);

            Event @event = initialTransfer.ValidateTransfer();

            Assert.Equal(expectedEvent, @event.Header.MessageType);
        }
示例#2
0
        public void InitialTransfer_WhenProcessingValidTransaction_CollectsExpectedEvents(string from, string to, decimal amount, InitialTransferState expectedState)
        {
            var transactionId   = Guid.NewGuid().ToString();
            var initialTransfer = new InitialTransfer(transactionId, from, to, amount);

            initialTransfer.ValidateTransfer();

            Assert.Equal(expectedState, initialTransfer.State);
        }
        private async Task ValidateAsync(MessageHeader header, ValidateTransferCommandContent content)
        {
            var transactionId = header?.TransactionId;
            var transaction   = content?.Transaction;

            var   initialTransfer = new InitialTransfer(transactionId, transaction.AccountFromId, transaction.AccountToId, transaction.Amount);
            Event validationEvent = initialTransfer.ValidateTransfer();

            await repository.AddAsync(initialTransfer);

            await eventProducer.ProduceAsync(validationEvent);
        }
        private async Task CancelTransfer(MessageHeader header, CancelTransferCommandContent content)
        {
            var transactionId = header?.TransactionId;
            var transaction   = content?.Transaction;

            var   initialTransfer  = new InitialTransfer(transactionId, transaction.AccountFromId, transaction.AccountToId, transaction.Amount);
            Event transferCanceled = initialTransfer.CancelTransfer();

            await repository.AddAsync(initialTransfer);

            await eventProducer.ProduceAsync(transferCanceled);
        }