Ejemplo n.º 1
0
        public void CheckingAccountTransfer_WhenProcessingNegativeAmount_ProducesException(string from, string to, decimal amount)
        {
            var transactionId = Guid.NewGuid().ToString();
            var transfer      = new CheckingAccountTransfer();

            void action() => transfer.TranferAmountBetweenAccounts(transactionId, from, to, amount);

            Assert.Throws <ArgumentException>(action);
        }
Ejemplo n.º 2
0
        public void CheckingAccountTransfer_WhenProcessingValidTransaction_ProducesTransferSucceddedEvent(string from, string to, decimal amount)
        {
            var transactionId = Guid.NewGuid().ToString();
            var transfer      = new CheckingAccountTransfer();

            Event @event = transfer.TranferAmountBetweenAccounts(transactionId, from, to, amount);

            Assert.Equal(nameof(TransferSucceededEvent), @event.Header.MessageType);
        }
Ejemplo n.º 3
0
        public void CheckingAccountTransfer_WhenProcessingValidTransaction_GeneratesCreditOnToAccount(string from, string to, decimal amount)
        {
            var transactionId = Guid.NewGuid().ToString();
            var transfer      = new CheckingAccountTransfer();

            transfer.TranferAmountBetweenAccounts(transactionId, from, to, amount);
            var lines = transfer.CheckingAccountLines;

            Assert.NotNull(lines.SingleOrDefault(l => l.AccountId == to && l.Amount == +amount));
        }
        private async Task CancelTransferAsync(MessageHeader header, CancelTransferCommandContent content)
        {
            var transactionId = header?.TransactionId;
            var transaction   = content?.Transaction;

            var   transfer         = new CheckingAccountTransfer();
            Event tranferCancelled = transfer.CancelTranferAmountBetweenAccounts(transactionId, transaction.AccountFromId, transaction.AccountToId, transaction.Amount);

            foreach (var line in transfer.CheckingAccountLines)
            {
                await repository.AddAsync(line);
            }

            await eventProducer.ProduceAsync(tranferCancelled);
        }