public async Task LoanPaymentOverviewFeature_Should_Throw_ValidationException_For_Invalid_LoanAmount(int loanAmount) { // Arrange var domainConfiguration = new DomainConfiguration { MaxAdministrationFee = 10000, AdministrationFeePercentage = 1, AnnualInterestRatePercentage = 5 }; var domainConfigurationOptionsMock = new Mock <IOptions <DomainConfiguration> >(); domainConfigurationOptionsMock.Setup(m => m.Value).Returns(domainConfiguration); var handler = new LoanPaymentOverview.QueryHandler(domainConfigurationOptionsMock.Object); var query = new LoanPaymentOverview.Query { LoanAmount = loanAmount, DurationOfLoanInYears = 10 }; // Act & Assert await Assert.ThrowsAsync <ValidationException>(() => handler.Handle(query, default)); }
public async Task LoanPaymentOverviewFeature_Should_Calculate_Values_Properly(DomainConfiguration domainConfiguration, LoanPaymentOverview.Query query, LoanPaymentOverview.Result expectedResult) { // Arrange var domainConfigurationOptionsMock = new Mock <IOptions <DomainConfiguration> >(); domainConfigurationOptionsMock.Setup(m => m.Value).Returns(domainConfiguration); var handler = new LoanPaymentOverview.QueryHandler(domainConfigurationOptionsMock.Object); // Act var result = await handler.Handle(query, default); // Assert Assert.Equal(expectedResult.MonthlyPayment, result.MonthlyPayment); Assert.Equal(expectedResult.TotalInterest, result.TotalInterest); Assert.Equal(expectedResult.AdministrationFee, result.AdministrationFee); }