Esempio n. 1
0
        public void Eligibility_check_returns_value(bool verifierResult)
        {
            // Arrange

            var loanDecision = new LoanDecision();

            var request = new CheckEligibility
            {
                LoanApplication = new LoanApplication(),
                LoanDecision    = loanDecision,
            };

            var mockEligibilityVerifier = new Mock <IEligibilityVerifier>(MockBehavior.Strict);

            mockEligibilityVerifier.Setup(m => m.IsEligible(It.IsNotNull <LoanApplication>())).Returns(verifierResult);

            var eligibilityCheck = new CheckEligibilityHandler(mockEligibilityVerifier.Object);

            // Act

            var response = eligibilityCheck.Handle(request);

            // Assert

            Assert.Equal(verifierResult, response.IsEligible);
            Assert.Equal(verifierResult, loanDecision.IsEligible);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a table containing all the AchievementObject's items
        /// Should be called using DataBind.Eval() function in the .aspx file
        /// Also implements the user's data if given
        /// </summary>
        /// <param name="achievements">List of achievements that will be converted to a table</param>
        protected void CreateAchievementsTable(List <AchievementObject> achievements)
        {
            achievementsTable = new DataTable();

            achievementsTable.Columns.AddRange(new DataColumn[7]
            {
                new DataColumn("AchName", typeof(string)),
                new DataColumn("AchMembers", typeof(string)),
                new DataColumn("AchDescription", typeof(string)),
                new DataColumn("AchQuestReq", typeof(List <AQuestReq>)),
                new DataColumn("AchSkillReq", typeof(List <ASkillReq>)),
                new DataColumn("AchRunescore", typeof(int)),
                new DataColumn("AchEligible", typeof(bool))
            });

            User currentUser = (User)ViewState["User"];

            if (currentUser != null)
            {
                achievements = CheckEligibility.Eligibility(currentUser, achievements);
            }

            foreach (var achievement in achievements)
            {
                string name        = achievement.AName;
                string description = achievement.ADescription;
                int    runescore   = achievement.ARunescore;
                string members     = achievement.AMembers;
                string eligible    = achievement.AEligible.ToString();
                var    questReqs   = achievement.AQuestReqs;
                var    skillReqs   = achievement.ASkillReqs;

                if (questReqs == null)
                {
                    System.Diagnostics.Debug.Write("questReqs is null");
                }

                achievementsTable.Rows.Add(name, members, description,
                                           questReqs, skillReqs, runescore, eligible);
            }

            ViewState.Add("AchievementsTable", achievementsTable);
        }
Esempio n. 3
0
        protected override void ConfigureDefinition(FlowDefinition <MakeLoanApplicationDecision, MakeLoanApplicationDecision.Response> flowDefinition)
        {
            flowDefinition

            .Do("InitialiseNewDecision", InitialiseNewLoanDecision.NewDefinition())

            // ------------------------------------------------------------------------------------------------

            .Do("CheckEligibility", CheckEligibility.NewDefinition())
            .Check("IsEligible", FlowValueDecision <bool?> .NewDefinition()
                   .BindInput(rq => rq.SwitchValue, nameof(CheckEligibility.Response.IsEligible)))
            .When(false).Goto("SetResultToDecline")
            .When(true).Goto("CheckAffordability")
            .Else().Unhandled()

            // ------------------------------------------------------------------------------------------------

            .Do("CheckAffordability", CheckAffordability.NewDefinition())
            .Check("AffordabilityRating", FlowValueDecision <AffordabilityRating?> .NewDefinition()
                   .BindInput(rq => rq.SwitchValue, nameof(CheckAffordability.Response.AffordabilityRating)))
            .When(AffordabilityRating.Fair).Goto("SetResultToRefer")
            .When(AffordabilityRating.Poor).Goto("SetResultToDecline")
            .When(AffordabilityRating.Good).Goto("CheckIdentity")
            .Else().Unhandled()

            // ------------------------------------------------------------------------------------------------

            .Do("CheckIdentity", CheckIdentity.NewDefinition())
            .Check("IdentityCheckResult", FlowValueDecision <IdentityCheckResult?> .NewDefinition()
                   .BindInput(rq => rq.SwitchValue, nameof(CheckIdentity.Response.IdentityCheckResult)))
            .When(IdentityCheckResult.ServiceUnavailable).Goto("SetResultToRefer")
            .When(IdentityCheckResult.IdentityNotFound).Goto("SetResultToDecline")
            .When(IdentityCheckResult.IdentityFound).Goto("SetResultToAccept")
            .Else().Unhandled()

            // ------------------------------------------------------------------------------------------------

            .Do("SetResultToAccept", SetLoanDecisionResult.NewDefinition()
                .SetValue(rq => rq.Result, LoanDecisionResult.Accept))
            .Goto("SaveDecision")

            .Do("SetResultToRefer", SetLoanDecisionResult.NewDefinition()
                .SetValue(rq => rq.Result, LoanDecisionResult.Refer))
            .Goto("SaveDecision")

            .Do("SetResultToDecline", SetLoanDecisionResult.NewDefinition()
                .SetValue(rq => rq.Result, LoanDecisionResult.Decline))
            .Goto("SaveDecision")

            // ------------------------------------------------------------------------------------------------

            .Do("SaveDecision", CreateLoanDecision.NewDefinition())

            .Check("LoanDecisionResult", FlowValueDecision <LoanDecisionResult?> .NewDefinition()
                   .BindInput(rq => rq.SwitchValue, nameof(SetLoanDecisionResult.Response.Result)))
            .When(LoanDecisionResult.Decline).Goto("PostDeclineActions")
            .When(LoanDecisionResult.Refer).Goto("PostReferActions")
            .When(LoanDecisionResult.Accept).Goto("PostAcceptActions")
            .Else().Unhandled()

            // ------------------------------------------------------------------------------------------------

            .Label("PostAcceptActions")
            .Do("SendAcceptConfirmationEmail", SendEmail.NewDefinition()
                .SetValue(rq => rq.TemplateName, "AcceptConfirmation")
                .BindInput(rq => rq.EmailAddress,
                           nameof(MakeLoanApplicationDecision.LoanApplication), (LoanApplication la) => la.EmailAddress)
                .BindInputs(rq => rq.DataObjects,
                            nameof(MakeLoanApplicationDecision.LoanApplication),
                            nameof(InitialiseNewLoanDecision.Response.LoanDecision))
                .BindInput(rq => rq.ParentId,
                           nameof(InitialiseNewLoanDecision.Response.LoanDecision), (LoanDecision ld) => ld.Id))
            .End()

            // ------------------------------------------------------------------------------------------------

            .Label("PostReferActions")
            .Do("SendReferNotificationEmail", SendEmail.NewDefinition()
                .SetValue(rq => rq.TemplateName, "ReferNotification")
                .BindInput(rq => rq.EmailAddress,
                           nameof(MakeLoanApplicationDecision.LoanApplication), (LoanApplication la) => la.EmailAddress)
                .BindInputs(rq => rq.DataObjects,
                            nameof(MakeLoanApplicationDecision.LoanApplication),
                            nameof(InitialiseNewLoanDecision.Response.LoanDecision))
                .BindInput(rq => rq.ParentId,
                           nameof(InitialiseNewLoanDecision.Response.LoanDecision), (LoanDecision ld) => ld.Id))
            .Do("RaiseLoanReferredEvent", RaiseLoanDecisionReferredEvent.NewDefinition())
            .End()

            // ------------------------------------------------------------------------------------------------

            .Label("PostDeclineActions")
            .Do("SendDeclineConfirmationEmail", SendEmail.NewDefinition()
                .SetValue(rq => rq.TemplateName, "DeclineConfirmation")
                .BindInput(rq => rq.EmailAddress,
                           nameof(MakeLoanApplicationDecision.LoanApplication), (LoanApplication la) => la.EmailAddress)
                .BindInputs(rq => rq.DataObjects,
                            nameof(MakeLoanApplicationDecision.LoanApplication),
                            nameof(InitialiseNewLoanDecision.Response.LoanDecision))
                .BindInput(rq => rq.ParentId,
                           nameof(InitialiseNewLoanDecision.Response.LoanDecision), (LoanDecision ld) => ld.Id))
            .End();
        }