public async void ShouldNot_EvaluateTransactionAsync_Invalid() { var transactionCheckCommand = new TransactionCreatedEvent(); transactionCheckCommand.SetPending(); var transactionIsCheckedEvent = await _manager .EvaluateTransactionAsync(transactionCheckCommand); Assert.Null(transactionIsCheckedEvent); }
public async void ShouldNot_ProcessTransactionUpdatedEventAsync_Declined() { var newTransaction = new TransactionCreatedEvent { Id = 1.ToGuid().ToString(), AccountId = 2.ToGuid().ToString(), Amount = 1, SequentialNumber = 3 }; newTransaction.SetDenial(); var newCreatedAccount = await _manager.ProcessTransactionUpdatedEventAsync(newTransaction); Assert.Null(newCreatedAccount); }
public async void Should_ProcessTransactionUpdatedEventAsync_Valid() { var newTransaction = new TransactionCreatedEvent { Id = 1.ToGuid().ToString(), AccountId = 1.ToGuid().ToString(), Amount = 1, SequentialNumber = 2 }; newTransaction.SetApproval(); var newCreatedAccount = await _manager.ProcessTransactionUpdatedEventAsync(newTransaction); Assert.NotNull(newCreatedAccount); Assert.Equal(2, newCreatedAccount.Balance); }
public async Task <CreateTransactionCommandResult> Handle(CreateTransactionCommand command) { var charge = new Money(command.Amount, command.CurrencyCode); var newTransaction = Transaction.CreateTransactionForCard(command.CardId, command.UniqueId, command.ChargeDate, charge); var success = await transactionRepository.Add(newTransaction); if (success) { var transactionCreatedEvent = new TransactionCreatedEvent(newTransaction); eventBus.Publish(transactionCreatedEvent); } return(new CreateTransactionCommandResult( newTransaction.Id, newTransaction.CardId, newTransaction.ChargeDate, newTransaction.UniqueId, newTransaction.Charge.Amount, newTransaction.Charge.CurrencyCode, success)); }