Пример #1
0
        public void TestLoanApprovedForHighCreditScore()
        {
            var application = new LoanApplication()
            {
                FirstName    = "John",
                LastName     = "Doe",
                AnnualIncome = 50_000,
                CreditScore  = 77,
                LoanAmount   = 250_000,
                Term         = LoanTerm.YEARS_30
            };
            LoanProcessingService service = new LoanProcessingService(Rates,
                                                                      new CreditScoreLoanApprovalRule(),
                                                                      new LoanSizeLoanApprovalRule()
                                                                      );

            // Act
            var result = service.ProcessLoan(application);

            Assert.IsTrue(result.Approved);
        }
Пример #2
0
        public void TestLoanHasCorrectInterestRate()
        {
            // Arrange
            var application = new LoanApplication()
            {
                FirstName    = "John",
                LastName     = "Doe",
                AnnualIncome = 50_000,
                CreditScore  = 73,
                LoanAmount   = 250_000,
                Term         = LoanTerm.YEARS_30
            };
            LoanProcessingService service = new LoanProcessingService(Rates,
                                                                      new CreditScoreLoanApprovalRule(),
                                                                      new LoanSizeLoanApprovalRule()
                                                                      );

            // Act
            var result = service.ProcessLoan(application);

            // Assert
            Assert.IsNotNull(result.InterestRate, "This loan should be approved and have an interest rate");
            Assert.AreEqual(0.0625, result.InterestRate.Value);
        }
Пример #3
0
        public void TestLoanHasCorrectPaymentCalculated()
        {
            // Arrange
            var application = new LoanApplication()
            {
                FirstName    = "John",
                LastName     = "Doe",
                AnnualIncome = 50_000,
                CreditScore  = 73,
                LoanAmount   = 250_000,
                Term         = LoanTerm.YEARS_30
            };
            LoanProcessingService service = new LoanProcessingService(Rates,
                                                                      new CreditScoreLoanApprovalRule(),
                                                                      new LoanSizeLoanApprovalRule()
                                                                      );

            // Act
            var result = service.ProcessLoan(application);

            // Assert
            Assert.IsNotNull(result.MonthlyPayment);
            Assert.AreEqual(1539.29, result.MonthlyPayment.Value);
        }
Пример #4
0
        public void TestLoansOverOneMillionDollarsShouldBeDenied()
        {
            // Arrange
            var application = new LoanApplication()
            {
                FirstName    = "John",
                LastName     = "Doe",
                AnnualIncome = 250_000,
                CreditScore  = 95,
                LoanAmount   = 1_000_001,
                Term         = LoanTerm.YEARS_30
            };
            LoanProcessingService service = new LoanProcessingService(Rates,
                                                                      new CreditScoreLoanApprovalRule(),
                                                                      new LoanSizeLoanApprovalRule()
                                                                      );

            // Act
            var result = service.ProcessLoan(application);

            // Assert
            Assert.IsFalse(result.Approved);
        }
    }
Пример #5
0
 public CreateModel(LoanProcessingService loanProcessingService, ILoanApplicationResultRepository resultRepository)
 {
     _loanProcessingService = loanProcessingService;
     _resultRepository      = resultRepository;
 }