public async Task WithdrawAmount_FromDepositAccount_WhenAccountIsNotMatured_ShouldThrowException() { //Arrange Mock <IAccountRepository> sut = new Mock <IAccountRepository>(); _accountRepo = sut.Object; var withdrawAmountRequest = new WithdrawAmountRequestDto { AccountId = 1, Amount = 20 }; var savingsAccountSetting = new AccountTypeDetailDto { AccountId = 1, AnnualInterestRate = 2, //2% interest rate AccountType = 2, //Deposit account DepositPeriodInDays = 30, InterestPayingFrequency = 1, //Daily, AccountCreatedDate = DateTime.Now.AddDays(-2) }; sut.Setup(x => x.GetAccountSetting(1)).Returns(async() => savingsAccountSetting); var accountService = new AccountService(_accountRepo); //Act and Assert var ex = Assert.ThrowsAsync <Exception>(() => accountService.WithdrawAmount(withdrawAmountRequest)); Assert.AreEqual("Deposit hasn't reached maturity", ex.Message); }
public async Task WithdrawAmount_FromSavingsAccount_ShouldUpdate_Balance() { //Arrange Mock <IAccountRepository> sut = new Mock <IAccountRepository>(); _accountRepo = sut.Object; var withdrawAmountRequest = new WithdrawAmountRequestDto { AccountId = 1, Amount = 20 }; var expected = 10; var savingsAccountSetting = new AccountTypeDetailDto { AccountId = 1, AnnualInterestRate = 2, //2% interest rate AccountType = 1, //Savings account DepositPeriodInDays = 0, InterestPayingFrequency = 0 }; sut.Setup(x => x.GetAccountSetting(1)).Returns(async() => savingsAccountSetting); sut.Setup(x => x.WithdrawAmount(withdrawAmountRequest)).Returns(async() => expected); var accountService = new AccountService(_accountRepo); //Act var res = await accountService.WithdrawAmount(withdrawAmountRequest); //Act Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(expected, res); }