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(); }
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); }
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); }