public AccountWithdrawResponse Withdraw(string accountNumber, decimal amount) { AccountWithdrawResponse response = new AccountWithdrawResponse(); response.Account = _accountRepository.LoadAccount(accountNumber); if (response.Account == null) { response.Success = false; response.Message = $"{accountNumber} is not a valid account"; } else { response.Success = true; IWithdraw withdrawRule = WithdrawRulesFactory.Create(response.Account.Type); response = withdrawRule.Withdraw(response.Account, amount); } if (response.Success) { _accountRepository.SaveAccount(response.Account); } return(response); }
public void PremiumAccountWithdrawTests(string accountNumber, string name, decimal balance, AccountType accountType, decimal amount, decimal newBalance, bool expectedResult) { IWithdraw withdraw = WithdrawRulesFactory.Create(AccountType.Premium); Account account = new Account(); account.AccountNumber = accountNumber; account.Name = name; account.Balance = balance; account.Type = accountType; AccountWithdrawResponse response = withdraw.Withdraw(account, amount); Assert.AreEqual(expectedResult, response.Success); }