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);
        }
Esempio n. 2
0
        public static FlowContext MockCheckAffordability(this FlowContext flowContext,
                                                         AffordabilityRating affordabilityRating)
        {
            flowContext.MockActivity <CheckAffordability, CheckAffordability.Response>(
                req => new CheckAffordability.Response {
                AffordabilityRating = affordabilityRating
            });

            return(flowContext);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }