public void Affordability_check_returns_value(AffordabilityRating engineResult) { // Arrange var loanDecision = new LoanDecision(); var request = new CheckAffordability { LoanApplication = new LoanApplication(), LoanDecision = loanDecision, }; var mockAffordabilityVerifier = new Mock <IAffordabilityEngine>(MockBehavior.Strict); mockAffordabilityVerifier.Setup(m => m.Calculate(It.IsNotNull <LoanApplication>())).Returns(engineResult); var affordabilityCheck = new CheckAffordabilityHandler(mockAffordabilityVerifier.Object); // Act var response = affordabilityCheck.Handle(request); // Assert Assert.Equal(engineResult, response.AffordabilityRating); Assert.Equal(engineResult, loanDecision.AffordabilityRating); }
public static FlowContext MockCheckAffordability(this FlowContext flowContext, AffordabilityRating affordabilityRating) { flowContext.MockActivity <CheckAffordability, CheckAffordability.Response>( req => new CheckAffordability.Response { AffordabilityRating = affordabilityRating }); return(flowContext); }
public async void Application_is_referred( bool isEligible, AffordabilityRating affordabilityRating, IdentityCheckResult identityCheckResult) { // Arrange var loanApplication = BuildLoanApplication(); var actualTemplateNames = new List <string>(); var isLoanReferredEventRaised = new bool?[1]; var flowContext = new FlowContext() .MockCheckEligibility(isEligible) .MockCheckAffordability(affordabilityRating) .MockIdentityCheck(identityCheckResult) .MockSendEmail(actualTemplateNames) .MockCreateLoanDecision() .MockRaiseLoanDecisionReferredEvent(isLoanReferredEventRaised); var request = new MakeLoanApplicationDecision { FlowContext = flowContext, LoanApplication = loanApplication }; // Act var(mediator, logger) = GetMediator(request); var response = await mediator.Send(request); logger.LogDebug($"Trace: {response.Trace}"); // Assert Assert.NotNull(response.LoanDecision); Assert.Equal(LoanDecisionResult.Refer, response.LoanDecision.Result); Assert.True(isLoanReferredEventRaised[0]); Assert.Single(actualTemplateNames); Assert.Contains("ReferNotification", actualTemplateNames); }
public void Can_rate_loan_applications(decimal monthlyIncomeAmount, decimal monthlyOutgoingAmount, AffordabilityRating expectedRating) { var loanApplication = new LoanApplication { MonthlyIncomeAmount = monthlyIncomeAmount, MonthlyOutgoingAmount = monthlyOutgoingAmount, }; var affordabilityEngine = new AffordabilityEngine(); var actualRating = affordabilityEngine.Calculate(loanApplication); Assert.Equal(expectedRating, actualRating); }