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); }
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); }
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); }