public void ReviewingTransitionStates(string testcaseName, LoanApplicationStatus startingStatus,
                                              LoanApplicationState toState, LoanApplicationState expectedState, LoanApplicationStatus expectedStatus)
        {
            var loanApplicationInfo = TransitionToReviewingState(borrowerRegistration);
            var loanApplicationGuid = loanApplicationInfo.LoanApplicationGuid.ToString();

            // If we're already are at InReviewNeedDecision, then we don't need to do any further transitioning for our stating status.
            if (startingStatus != LoanApplicationStatus.NewAppNeedInitialReview)
            {
                if (!ReviewStatusTransitions(loanApplicationInfo.LoanApplicationGuid, startingStatus))
                {
                    Assert.Fail($"Unable to transition to the desired loan status of {startingStatus.ToString()}...stopping test.");
                }
            }
            log.Info($"We're in the expected status of {startingStatus.ToString()}.  Transitioning to {expectedState}...");

            var stateUpdateResponse = new ResponseObject <EmptyResult>();

            switch (toState)
            {
            case LoanApplicationState.Accepting:
            case LoanApplicationState.Finalizing:
                stateUpdateResponse = loanApplicationClient.SetLoanAppToAccept(loanApplicationGuid);
                break;

            case LoanApplicationState.Expired:
                stateUpdateResponse = loanApplicationClient.SetLoanAppToExpire(loanApplicationGuid);
                break;

            case LoanApplicationState.Declined:
                stateUpdateResponse = loanApplicationStateClient.ChangeStateToDecline(loanApplicationGuid);
                break;

            case LoanApplicationState.Withdrawn:
                stateUpdateResponse = loanApplicationStateClient.ChangeStateToWithdraw(loanApplicationGuid);
                break;

            default:
                Assert.Fail($"{toState.ToString()} is in invalid argument for this test...failing.");
                break;
            }

            Assert.That(stateUpdateResponse.statusCode == HttpStatusCode.OK ||
                        (stateUpdateResponse.statusCode == HttpStatusCode.NoContent),
                        $"We weren't able to successfully run the workflow transition request successfully.  Status code {stateUpdateResponse.statusCode}");
            log.Info($"Checking to see that our loan application in the expected Declined/Declined state/status.");

            coreLoanApplicationStatusClient
            .UpdateStatusByLoanApplication(loanApplicationInfo.LoanApplicationGuid.ToString());
            var statusResponse = coreLoanApplicationStatusClient
                                 .GetStatusByLoanApplication(loanApplicationInfo.LoanApplicationGuid.ToString());

            Assert.That(statusResponse.statusCode == HttpStatusCode.OK, $"We weren't able to get the status of our loanapplication successfully.  Status Code {statusResponse.statusCode.ToString()}");
            Assert.NotNull(statusResponse.content, "We received no content for our status request.");

            ValidateApplicationState(statusResponse.content, expectedState, expectedStatus);
            log.Info($"Validated the successful transition from {startingStatus} to {expectedState}/{expectedStatus} for loan application guid:  {loanApplicationInfo.LoanApplicationGuid}");
        }
Beispiel #2
0
 public LoanApplication(long id, long applicantId, long loanAmount, TimeSpan paybackPeriod, InterestRate interestRate)
     : base(id)
 {
     ApplicantId   = applicantId;
     LoanAmount    = loanAmount;
     PaybackPeriod = paybackPeriod;
     InterestRate  = interestRate;
     State         = LoanApplicationState.InitialState();
 }
        public LoanApplication(ApplicantId applicantId, long packBackPeriodInDays, long amount)
        {
            this.Id              = Guid.NewGuid();
            Applicant            = applicantId;
            PackBackPeriodInDays = packBackPeriodInDays;
            Amount = amount;
            State  = new Pending();

            Causes(new LoanApplicationPlaced(this.Id, this.Applicant, this.PackBackPeriodInDays, this.Amount));
        }
 public void Cancel()
 {
     this.State = this.State.Cancel();
     Causes(new LoanApplicationCanceled(this.Id));
 }
 public void Confirm()
 {
     this.State = this.State.Confirm();
     Causes(new LoanApplicationConfirmed(this.Id));
 }
Beispiel #6
0
 public void FinalConfirm()
 {
     this.State = this.State.FinalConfirm();
 }
Beispiel #7
0
 public void Cancel()
 {
     this.State = this.State.Cancel();
 }
Beispiel #8
0
 public void Reject()
 {
     this.State = this.State.Reject();
 }
Beispiel #9
0
 public void Confirm(long loanAmount, TimeSpan paybackPeriod)
 {
     this.State         = this.State.Confirm();
     this.LoanAmount    = loanAmount;
     this.PaybackPeriod = paybackPeriod;
 }
        public void ReviewingTransitionStatuses(string testcaseName, LoanApplicationStatus startingStatus, LoanApplicationWorkflowAction action, LoanApplicationState expectedState, LoanApplicationStatus expectedStatus, string agentName, AgentRole agentRole)
        {
            var loanApplicationInfo = TransitionToReviewingState(borrowerRegistration);

            // If we're already are at InReviewNeedDecision, then we don't need to do any further transitioning for our stating status.
            if (startingStatus != LoanApplicationStatus.NewAppNeedInitialReview)
            {
                if (!ReviewStatusTransitions(loanApplicationInfo.LoanApplicationGuid, startingStatus))
                {
                    Assert.Fail($"Unable to transition to the desired loan status of {startingStatus.ToString()}...stopping test.");
                }
            }
            log.Info($"We're in the expected status of {startingStatus.ToString()}.  Transitioning to {expectedStatus.ToString()}.");

            //If we provide an agentname, that means we need to add a new agent with the given role to the BCD
            if (!String.IsNullOrEmpty(agentName))
            {
                AssignAgentToLoanApplication((Guid)loanApplicationInfo.LoanApplicationGuid, AgentRole.UWM, "clpuwm");
            }

            var workflowResponse = loanApplicationClient.WorkflowAction(loanApplicationInfo.LoanApplicationGuid.ToString(), action);

            Assert.That(workflowResponse.statusCode == HttpStatusCode.OK, $"We weren't able to successfully run the workflow transition request successfully.  Status code {workflowResponse.statusCode}");
            log.Info($"Checking to see that our loan application in the expected {expectedState}/{expectedStatus} state/status.");

            coreLoanApplicationStatusClient
            .UpdateStatusByLoanApplication(loanApplicationInfo.LoanApplicationGuid.ToString());

            var statusResponse = coreLoanApplicationStatusClient
                                 .GetStatusByLoanApplication(loanApplicationInfo
                                                             .LoanApplicationGuid.ToString());

            Assert.That(statusResponse.statusCode == HttpStatusCode.OK, $"We weren't able to get the status of our loanapplication successfully.  Status Code {statusResponse.statusCode.ToString()}");
            Assert.NotNull(statusResponse.content, "We received no content for our status request.");
            ValidateApplicationState(statusResponse.content, expectedState, expectedStatus);
            log.Info($"Validated the successful transition from {startingStatus} to {expectedStatus} loan application guid:  {loanApplicationInfo.LoanApplicationGuid}");
        }