public async Task CannotWithdrawFundsIfTransferIsNotPositive(decimal transfer) { var deposit = 5000m; var limit = 5000m; var accCreatedEv = new AccountCreated(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Name = "Jake Sanders" }; var cashDepositedEv = new CashDeposited(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Amount = deposit }; var limitSetEv = new DailyWireTransferLimitSet(CorrelatedMessage.NewRoot()) { AccountId = _accountId, DailyLimit = limit }; var cmd = new TryWireTransfer() { AccountId = _accountId, Amount = transfer }; await _runner.Run( def => def .Given(accCreatedEv, cashDepositedEv, limitSetEv) .When(cmd) .Throws(new SystemException("Wire Transfer amount should be greater than 0."))); }
public async Task CannotWireTransferMultipleTimesIfLimitExceeded( decimal deposit, decimal limit, decimal transfer) { var accCreatedEv = new AccountCreated(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Name = "Jake Sanders" }; var cashDepositedEv = new CashDeposited(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Amount = deposit }; var dailyLimitSetEv = new DailyWireTransferLimitSet(CorrelatedMessage.NewRoot()) { AccountId = _accountId, DailyLimit = limit }; var transferedEv = new WireTransferHappened(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Amount = transfer }; var cmd = new TryWireTransfer() { AccountId = _accountId, Amount = transfer }; var transferFailedEv = new WireTransferFailed(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Amount = transfer }; var accBlockedEv = new AccountBlocked(CorrelatedMessage.NewRoot()) { AccountId = _accountId }; await _runner.Run( def => def .Given(accCreatedEv, cashDepositedEv, dailyLimitSetEv, transferedEv, transferedEv) .When(cmd) .Then(transferFailedEv, accBlockedEv)); }
public async Task CanWireTransferIfEnoughFundsAndNotExceededLimits( decimal deposit, decimal limit, decimal transfer) { var accCreatedEv = new AccountCreated(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Name = "Jake Sanders" }; var cashDepositedEv = new CashDeposited(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Amount = deposit }; var dailyLimitSetEv = new DailyWireTransferLimitSet(CorrelatedMessage.NewRoot()) { AccountId = _accountId, DailyLimit = limit }; var cmd = new TryWireTransfer() { AccountId = _accountId, Amount = transfer }; var transferedEv = new WireTransferHappened(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Amount = cmd.Amount }; await _runner.Run( def => def .Given(accCreatedEv, cashDepositedEv, dailyLimitSetEv) .When(cmd) .Then(transferedEv)); }
public async Task CanSetDailyWireTransfertLimit(decimal limit) { var accCreatedEv = new AccountCreated(CorrelatedMessage.NewRoot()) { AccountId = _accountId, Name = "Jake Sanders" }; var cmd = new SetDailyWireTransferLimit() { AccountId = _accountId, DailyLimit = limit }; var limitSetEv = new DailyWireTransferLimitSet(CorrelatedMessage.NewRoot()) { AccountId = cmd.AccountId, DailyLimit = cmd.DailyLimit }; await _runner.Run( def => def.Given(accCreatedEv).When(cmd).Then(limitSetEv) ); }
public async Task CanSetDailyWireTransferLimit(double limit) { var created = new AccountCreated(CorrelatedMessage.NewRoot()) { AccountId = _accountId, AccountHolderName = "Parth Sheth" }; var cmd = new SetDailyWireTransferLimit { AccountId = _accountId, DailyWireTransferLimit = Convert.ToDecimal(limit) }; var limitSet = new DailyWireTransferLimitSet(cmd) { AccountId = _accountId, DailyWireTransferLimit = cmd.DailyWireTransferLimit }; await _runner.Run( def => def.Given(created).When(cmd).Then(limitSet) ); }