Example #1
0
        public void CalculateScoreQuery_ScorePolicyWithoutThresholds_Throw()
        {
            var givenScorePolicy = new ScorePolicy
            {
                ScoreRules = System.Array.Empty <ScoreRule>()
            };
            var givenPercentage = 0.5m;

            Action act = () => CalculateScoreQueryHandler.GetScore(givenPercentage, givenScorePolicy);

            act.Should().Throw <DesignByContractException>();
        }
        public async System.Threading.Tasks.Task HandleAsync(CreateScorePolicyCommand command)
        {
            var scoreRules = command.ScoreRules.Select(dto => new ScoreRule()
            {
                Threshold = dto.Threshold, Score = dto.Score
            });
            ScorePolicy scorePolicy = new ScorePolicy()
            {
                Name        = command.Name,
                Description = command.Description,
                ScoreRules  = new List <ScoreRule>(scoreRules)
            };
            await _dbContext.ScorePolicies.AddAsync(scorePolicy);

            await _dbContext.SaveChangesAsync();
        }
Example #3
0
        public void CalculateScoreQuery_SingleThresholdScorePolicy_ResultsMeetExpectation(decimal percentage,
                                                                                          int expectedScore)
        {
            var givenScorePolicy = new ScorePolicy
            {
                ScoreRules = new[]
                {
                    new ScoreRule {
                        Threshold = 0.5m, Score = 5
                    }
                }
            };

            CalculateScoreQueryHandler.GetScore(percentage, givenScorePolicy)
            .Should().Be(expectedScore);
        }
Example #4
0
        public void ShouldReturnFalseForLeasserThan600Score()
        {
            var mockDependency = new Mock <IScoreService>();

            mockDependency.Setup(x => x.GetScore(It.IsAny <string>()))
            .ReturnsAsync(100);
            var loan = new Loan
            {
                cpf = "abc"
            };
            var scorePolicy = new ScorePolicy(mockDependency.Object);
            var result      = scorePolicy.ProcessScorePolicy(loan).Result;

            Assert.NotEqual(0, result.score);
            Assert.False(result.score_policy_result);
        }
        public static int GetScore(decimal percentagePassed, ScorePolicy scorePolicy)
        {
            Fail.IfNull(scorePolicy);
            Fail.IfNullOrEmpty(scorePolicy.ScoreRules);

            var rules = scorePolicy.ScoreRules
                        .OrderBy(sr => sr.Threshold)
                        .ToList();

            var score = 0;

            foreach (var rule in rules)
            {
                if (percentagePassed < rule.Threshold)
                {
                    break;
                }
                score = rule.Score;
            }
            return(score);
        }
        public void TwoScorePoliciesInDatabase_TwoPoliciesReturned()
        {
            ScorePolicy firstScorePolicy = new ScorePolicy {
                Id          = 1,
                Name        = "test1",
                Description = "FirstScorePolicyTest",
                ScoreRules  = new List <ScoreRule>(new[] { new ScoreRule {
                                                               Score = 1, Threshold = 0.9m
                                                           } })
            };
            ScorePolicy secondScorePolicy = new ScorePolicy
            {
                Id          = 2,
                Name        = "test2",
                Description = "SecondScorePolicyTest",
                ScoreRules  = new List <ScoreRule>(new[] { new ScoreRule {
                                                               Score = 1, Threshold = 0.9m
                                                           } })
            };
            ScorePolicyDto firstScorePolicyDto    = new ScorePolicyDto(1, "test1", "FirstScorePolicyTest");
            ScorePolicyDto secondScorePolicyDto   = new ScorePolicyDto(2, "test2", "SecondScorePolicyTest");
            var            expectedScorePolicyIds = new List <ScorePolicyDto>
            {
                firstScorePolicyDto,
                secondScorePolicyDto
            };
            var givenQuery = AllScorePoliciesQuery.Create();
            IQueryHandler <AllScorePoliciesQuery, AllScorePoliciesResult> sut =
                new AllScorePoliciesQueryHandler(Context);

            Context.ScorePolicies.AddRange(firstScorePolicy, secondScorePolicy);
            Context.SaveChanges();
            var result            = sut.HandleAsync(givenQuery).Result;
            var actualScorePolicy = result.ScorePolicies;

            actualScorePolicy.Should().BeEquivalentTo(expectedScorePolicyIds).And.HaveCount(2);
        }