public void TotalUserCountMustEqualNumberOfUniqueUsers()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.TotalUserCount == 2, "Incorrect number of Users.");
        }
        public void LevelAchievedMustNotBeSetIfNotAllUsersMarkedAllCapabilitiesForALevel()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.DimensionResults.First().Levels.First().LevelAchieved == false, "Level was not achieved.");
        }
        public void ResultCountPerDimensionMustEqualNumberOfResponses()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.DimensionResults.First().ResponseCount == assessmentItems.Count());
        }
        public void CorrectTargetCapabilityCountMustBeSetOnResult()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.DimensionResults.First().Levels.First().TargetCapabilityCount == 2, "Incorrect capability count.");
        }
        public void GivenMissingCapabilityMapThenExceptionMustBeThrown()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            var capabilityMap       = new List <Tuple <int, int, int> >();
            AssessmentScorer scorer = new AssessmentScorer(capabilityMap);

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.DimensionResults.First().Levels.First().Level == 1);
        }
        public void TestThatMissingDimensionsAreAdded()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.DimensionResults.Where(i => i.DimensionId == 2).Any(), "The missing dimension was not added.");
            Assert.IsTrue(result.DimensionResults.Where(i => i.DimensionId == 2).First().Levels.Count() == 1, "The missing level was not added.");
        }
        public void GivenAnAssessmentWithTwoResultsForSameDimensionThenReturnOnlyOneResult()
        {
            var assessmentItems = CreateAssessmentWithResponses();


            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(assessmentItems);

            Assert.IsTrue(result.DimensionResults.Where(i => i.DimensionId == 1).Count() == 1, "Only one result per dimension must be returned.");
            Assert.IsTrue(result.DimensionResults.First().DimensionId == 1, "Incorrect dimension id was returned.");
        }
        private static AssessmentScorer CreateScorer()
        {
            var capabilityMap = new List <Tuple <int, int, int> >();

            capabilityMap.Add(new Tuple <int, int, int>(1, 1, 2));
            capabilityMap.Add(new Tuple <int, int, int>(1, 2, 3));
            capabilityMap.Add(new Tuple <int, int, int>(2, 1, 1));

            AssessmentScorer scorer = new AssessmentScorer(capabilityMap);

            return(scorer);
        }
        public void LevelAchievedMustBeSetIfAllUsersMarkedAllCapabilitiesForALevel()
        {
            var assessmentItems = CreateAssessmentWithResponses();

            var items = assessmentItems as List <Core.Models.AssessmentScoringItem>;

            items.Add(new Core.Models.AssessmentScoringItem()
            {
                DimensionId = 1, CapabilityId = 2, Level = 1, UserId = "Bob", CapabilityAchieved = true
            });
            items.Add(new Core.Models.AssessmentScoringItem()
            {
                DimensionId = 1, CapabilityId = 1, Level = 1, UserId = "Fred", CapabilityAchieved = true
            });

            AssessmentScorer scorer = CreateScorer();

            var result = scorer.CalculateScore(items);

            Assert.IsTrue(result.DimensionResults.First().Levels.First().LevelAchieved == true, "Level should be achieved.");
        }