public IActionResult Withdraw(WithdrawViewModel model) { if (ModelState.IsValid) { var command = new WithdrawCommand { AccountId = model.AccountId, Amount = model.Amount, }; var query = new WithdrawHandler(new BankContext()).Handler(command); if (query.IsCompletedSuccessfully) { TempData["Success"] = $"{model.Amount.ToString("C")} withdrawn from account"; return(View()); } else { TempData["Error"] = $"Withdraw failed"; return(View()); } } return(View()); }
public void Withdraw_Overdraft() { var options = new DbContextOptionsBuilder <BankContext>() .UseInMemoryDatabase(databaseName: "NegativeAmount") .Options; using (var context = new BankContext(options)) { var account = new Account { AccountId = 2, Frequency = "Daily", Balance = 500 }; context.Accounts.Add(account); context.SaveChanges(); } using (var context = new BankContext(options)) { var command = new WithdrawCommand { AccountId = 2, Amount = 1000 }; var handler = new WithdrawHandler(context); Assert.ThrowsAsync <InsufficientFundsException>(() => handler.Handler(command)); } }
public void Deposit_NegativeAmount() { var options = new DbContextOptionsBuilder <BankContext>() .UseInMemoryDatabase(databaseName: "NegativeAmount") .Options; using (var context = new BankContext(options)) { var account = new Account { AccountId = 3, Frequency = "Daily" }; context.Accounts.Add(account); context.SaveChanges(); } using (var context = new BankContext(options)) { var command = new WithdrawCommand() { AccountId = 3, Amount = -50 }; var handler = new WithdrawHandler(context); Assert.ThrowsAsync <NegativeAmountException>(() => handler.Handler(command)); } }
public void Withdraw_NegativeAmount() { var options = new DbContextOptionsBuilder <BankContext>() .UseInMemoryDatabase(databaseName: "NegativeAmount") .Options; using (var context = new BankContext(options)) { var command = new WithdrawCommand() { AccountId = 1, Amount = -50 }; var handler = new WithdrawHandler(context); Assert.ThrowsAsync <NegativeAmountException>(() => handler.Handler(command)); } }