public void CannotWithdrawCashWithNonPositiveAmount(decimal amount) { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); CmdHandler.Handle(new DepositCashCommand { AccountId = AccountId, Amount = 1000m }); CmdHandler.Handle(new SetDailyWireTransferLimitCommand { AccountId = AccountId, DailyWireTransferLimit = 1000m }); var cmd = new WithdrawCashCommand() { AccountId = AccountId, Amount = amount }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("Cannot withdraw a negative amount", msg.Exception.Message); }
public void CannotExceedOverDraftLimit() { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); CmdHandler.Handle(new SetDailyWireTransferLimitCommand { AccountId = AccountId, DailyWireTransferLimit = 1000m }); CmdHandler.Handle(new SetOverDraftLimitCommand { AccountId = AccountId, OverDraftLimit = 100m }); var cmd = new WithdrawCashCommand() { AccountId = AccountId, Amount = 101m }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("Account is blocked, you exceeded your overdraft limit", msg.Exception.Message); }
public void CanWithdrawCash() { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); CmdHandler.Handle(new DepositCashCommand { AccountId = AccountId, Amount = 1000m }); CmdHandler.Handle(new SetDailyWireTransferLimitCommand { AccountId = AccountId, DailyWireTransferLimit = 1000m }); var cmd = new WithdrawCashCommand() { AccountId = AccountId, Amount = 100m }; Assert.IsType <Success>(CmdHandler.Handle(cmd)); }
public void CannotWithdrawFromBlockedAccount() { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); CmdHandler.Handle(new DepositCashCommand { AccountId = AccountId, Amount = 1000m }); var cmd = new WithdrawCashCommand() { AccountId = AccountId, Amount = 10m }; CmdHandler.Handle(cmd); dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("Account is blocked", msg.Exception.Message); }
public void CannotExceedDailyWireTransferLimit() { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); CmdHandler.Handle(new DepositCashCommand { AccountId = AccountId, Amount = 1000m }); CmdHandler.Handle(new SetDailyWireTransferLimitCommand { AccountId = AccountId, DailyWireTransferLimit = 100m }); var cmd = new WithdrawCashCommand() { AccountId = AccountId, Amount = 101m }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.StartsWith("Account is blocked, you only have", msg.Exception.Message); }
public void CanCreateAccount() { var cmd = new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }; Assert.IsType <Success>(CmdHandler.Handle(cmd)); }
public void CannotDepositCheckIntoInvalidAccount() { var cmd = new DepositCheckCommand { AccountId = AccountId, Amount = Convert.ToDecimal(100m) }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("No account with this ID exists", msg.Exception.Message); }
public void CannotWithdrawCashFromInvalidAccount() { var cmd = new WithdrawCashCommand() { AccountId = AccountId, Amount = 200m }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("No account with this ID exists", msg.Exception.Message); }
public void CannotCreateAccountWithWhiteSpaceName() { var cmd = new CreateAccountCommand() { AccountId = AccountId, HolderName = " \t " }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("HolderName can't be empty", msg.Exception.Message); }
public void CannotSetLimitOnInvalidAccount() { var cmd = new SetOverDraftLimitCommand { AccountId = AccountId, OverDraftLimit = 100m }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("No account with this ID exists", msg.Exception.Message); }
public void CannotCreateAccountWithSameId() { var cmd = new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }; CmdHandler.Handle(cmd); dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("An account with this ID already exists", msg.Exception.Message); }
public void CanDepositCheck(decimal amount) { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); var cmd = new DepositCheckCommand { AccountId = AccountId, Amount = amount }; Assert.IsType <Success>(CmdHandler.Handle(cmd)); }
public void CanSetOverDraftLimit(decimal limit) { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); var cmd = new SetOverDraftLimitCommand { AccountId = AccountId, OverDraftLimit = limit }; Assert.IsType <Success>(CmdHandler.Handle(cmd)); }
public void CannotDepositCheckWithNonPositiveAmount(decimal amount) { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); var cmd = new DepositCheckCommand { AccountId = AccountId, Amount = amount }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("Cannot deposit a negative amount", msg.Exception.Message); }
public void CannotSetNegativeLimit(decimal limit) { CmdHandler.Handle(new CreateAccountCommand { AccountId = AccountId, HolderName = "John Doe" }); var cmd = new SetOverDraftLimitCommand { AccountId = AccountId, OverDraftLimit = limit }; dynamic msg = CmdHandler.Handle(cmd); Assert.IsType <Fail>(msg); Assert.Equal("Overdraft limit cannot be negative", msg.Exception.Message); }