public void CalculateCompleteness_SkippedItems_CompletenessTotalCorrect() { using (var serviceLocatorFixture = new ServiceLocatorFixture()) { // Setup SetupServiceLocatorFixture(serviceLocatorFixture); var itemDefinitions = GetItemDefinitions(); var ruleCollection = Substitute.For <IAssessmentRuleCollection> (); var rule = Substitute.For <IItemSkippingRule> (); rule.SkippedItemDefinitions.Returns(itemDefinitions.Where(i => i.CodedConcept.Code == "3")); ruleCollection.ItemSkippingRules.Returns(new List <IItemSkippingRule> { rule }); serviceLocatorFixture.StructureMapContainer.Configure( c => c.For <IAssessmentRuleCollection>().Use(ruleCollection).Named("Test")); var assessmentDefinition = Substitute.For <AssessmentDefinition>(); assessmentDefinition.GetAllItemDefinitionsOfType(Arg.Any <ItemType>()).Returns(itemDefinitions); var assessmentInstance = new AssessmentInstance(assessmentDefinition, Guid.NewGuid(), "Test", false); var completeness = assessmentInstance.CalculateCompleteness(); Assert.AreEqual(itemDefinitions.Count(i => i.GetIsRequired()) - 1, completeness.Total); } }
/// <summary>Calculates the completeness.</summary> /// <param name="assessment">The assessment.</param> /// <param name="sectionDefinition">The section definition.</param> /// <returns>A <see cref="CompletenessResults" />.</returns> public CompletenessResults CalculateCompleteness(AssessmentInstance assessment, ItemDefinition sectionDefinition = null) { if (sectionDefinition != null) { var requiredQuestions = AssessmentDefinition.GetAllItemDefinitionsOfTypeInContainer(sectionDefinition, ItemType.Question).Where(i => i.GetIsRequired()); var totalRequired = requiredQuestions.Count( ); var skippedTotal = requiredQuestions.Select(i => i.CodedConcept.Code).Intersect(assessment.SkippedItemDefinitions.Select(i => i.CodedConcept.Code)).Count(); var answeredTotal = requiredQuestions.Select(i => i.CodedConcept.Code).Intersect(assessment.ItemInstances.Select(i => i.ItemDefinitionCode)).Count(); return(new CompletenessResults("Report", totalRequired - skippedTotal, answeredTotal)); } return(assessment.CalculateCompleteness()); }
public void CalculateCompleteness_NothingSkipped_CompletenessTotalCorrect() { using (var serviceLocatorFixture = new ServiceLocatorFixture()) { // Setup SetupServiceLocatorFixture(serviceLocatorFixture); var assessmentDefinition = Substitute.For <AssessmentDefinition> (); var itemDefinitions = GetItemDefinitions(); assessmentDefinition.GetAllItemDefinitionsOfType(Arg.Any <ItemType> ()).Returns(itemDefinitions); var assessmentInstance = new AssessmentInstance(assessmentDefinition, Guid.NewGuid(), "Test", false); var completeness = assessmentInstance.CalculateCompleteness(); Assert.AreEqual(itemDefinitions.Count(i => i.GetIsRequired()), completeness.Total); } }