public void CourseCompletion_should_have_formatted_completion_summary(
            string?completed,
            int maxPostLearningAssessmentAttempts,
            bool isAssessed,
            int postLearningAssessmentPassThreshold,
            int diagnosticAssessmentCompletionThreshold,
            int tutorialsCompletionThreshold,
            string expectedSummary
            )
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                completed: completed != null ? DateTime.Parse(completed) : (DateTime?)null,
                maxPostLearningAssessmentAttempts: maxPostLearningAssessmentAttempts,
                isAssessed: isAssessed,
                postLearningAssessmentPassThreshold: postLearningAssessmentPassThreshold,
                diagnosticAssessmentCompletionThreshold: diagnosticAssessmentCompletionThreshold,
                tutorialsCompletionThreshold: tutorialsCompletionThreshold
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.SummaryText.Should().Be(expectedSummary);
        }
Beispiel #2
0
        public IActionResult CompletionSummary(int customisationId)
        {
            var candidateId = User.GetCandidateIdKnownNotNull();
            var centreId    = User.GetCentreId();

            var courseCompletion = courseCompletionService.GetCourseCompletion(candidateId, customisationId);

            if (courseCompletion == null)
            {
                logger.LogError(
                    "Redirecting to 404 as customisation id was not found. " +
                    $"Candidate id: {candidateId}, customisation id: {customisationId}, " +
                    $"centre id: {centreId.ToString() ?? "null"}");
                return(RedirectToAction("StatusCode", "LearningSolutions", new { code = 404 }));
            }

            var progressId = courseContentService.GetOrCreateProgressId(candidateId, customisationId, centreId);

            if (progressId == null)
            {
                logger.LogError(
                    "Redirecting to 404 as no progress id was returned. " +
                    $"Candidate id: {candidateId}, customisation id: {customisationId}, centre id: {centreId}");
                return(RedirectToAction("StatusCode", "LearningSolutions", new { code = 404 }));
            }

            sessionService.StartOrUpdateDelegateSession(candidateId, customisationId, HttpContext.Session);
            courseContentService.UpdateProgress(progressId.Value);

            var model = new CourseCompletionViewModel(config, courseCompletion, progressId.Value);

            return(View("Completion/Completion", model));
        }
        public void CourseCompletion_should_have_incomplete_status_for_null_completed()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(completed: null);

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.CompletionStatus.Should().Be("incomplete");
        }
        public void CourseCompletion_FinaliseAriaLabel_should_be_null_when_completed_is_null()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(completed: null);

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.FinaliseAriaLabel.Should().BeNull();
        }
        public void CourseCompletion_should_have_customisationId()
        {
            // Given
            const int customisationId          = 1234;
            var       expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(customisationId);

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.CustomisationId.Should().Be(customisationId);
        }
        public void CourseCompletion_should_have_FinaliseUrl()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion();
            var expectedFinaliseUrl      = $"{BaseUrl}/tracking/finalise?ProgressID={ProgressId}";

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.FinaliseUrl.Should().Be(expectedFinaliseUrl);
        }
        public void CourseCompletion_should_show_PercentageTutorialsCompleted_when_not_0()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                percentageTutorialsCompleted: 10
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.ShowPercentageTutorialsCompleted.Should().BeTrue();
        }
        public void CourseCompletion_should_not_show_DiagnosticScore_when_null()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                diagnosticScore: null
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.ShowDiagnosticScore.Should().BeFalse();
        }
        public void CourseCompletion_should_have_diagnosticScore()
        {
            // Given
            const int diagnosticScore          = 42;
            var       expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                diagnosticScore: diagnosticScore
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.DiagnosticScore.Should().Be(diagnosticScore);
        }
        public void CourseCompletion_should_round_percentageTutorialsCompleted_down()
        {
            // Given
            const double percentageTutorialsCompleted = 44.4;
            var          expectedCourseCompletion     = CourseCompletionHelper.CreateDefaultCourseCompletion(
                percentageTutorialsCompleted: percentageTutorialsCompleted
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.PercentageTutorialsCompleted.Should().Be(44);
        }
        public void CourseCompletion_should_have_postLearningPasses()
        {
            // Given
            const int postLearningPasses       = 61;
            var       expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                postLearningPasses: postLearningPasses
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.PostLearningPasses.Should().Be(postLearningPasses);
        }
        public void CourseCompletion_should_have_isAssessed()
        {
            // Given
            const bool isAssessed = true;
            var        expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                isAssessed: isAssessed
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.IsAssessed.Should().Be(isAssessed);
        }
        public void CourseCompletion_should_show_DiagnosticScore_when_attempts_are_not_0()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                diagnosticScore: 10,
                diagnosticAttempts: 1
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.ShowDiagnosticScore.Should().BeTrue();
        }
        public void CourseCompletion_should_have_sectionCount()
        {
            // Given
            const int sectionCount             = 62;
            var       expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                sectionCount: sectionCount
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.SectionCount.Should().Be(sectionCount);
        }
        public void CourseCompletion_FinaliseAriaLabel_should_be_certificate_when_course_is_assessed_and_evaluated()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                completed: DateTime.UtcNow.AddDays(-1),
                evaluated: DateTime.UtcNow,
                isAssessed: true
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.FinaliseAriaLabel.Should().Be("View or print certificate");
        }
        public void CourseCompletion_FinaliseAriaLabel_should_be_null_when_course_is_not_assessed_and_already_evaluated()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                completed: DateTime.UtcNow.AddDays(-1),
                evaluated: DateTime.UtcNow,
                isAssessed: false
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.FinaliseAriaLabel.Should().BeNull();
        }
        public void CourseCompletion_FinaliseText_should_be_evaluate_when_course_is_not_assessed_and_not_evaluated()
        {
            // Given
            var expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                completed: DateTime.UtcNow,
                evaluated: null,
                isAssessed: false
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            courseCompletionViewModel.FinaliseText.Should().Be("Evaluate");
        }
        public void CourseCompletion_should_have_courseTitle()
        {
            // Given
            const string applicationName          = "Application Name";
            const string customisationName        = "Customisation Name";
            var          expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(
                applicationName: applicationName,
                customisationName: customisationName
                );

            // When
            var courseCompletionViewModel = new CourseCompletionViewModel(config, expectedCourseCompletion, ProgressId);

            // Then
            var courseTitle = $"{applicationName} - {customisationName}";

            courseCompletionViewModel.CourseTitle.Should().BeEquivalentTo(courseTitle);
        }
        public void CourseCompletion_should_render_view()
        {
            // Given
            var       expectedCourseCompletion = CourseCompletionHelper.CreateDefaultCourseCompletion(CustomisationId);
            const int progressId = 101;

            A.CallTo(() => courseCompletionService.GetCourseCompletion(CandidateId, CustomisationId))
            .Returns(expectedCourseCompletion);
            A.CallTo(() => courseContentService.GetOrCreateProgressId(CandidateId, CustomisationId, CentreId))
            .Returns(progressId);

            // When
            var result = controller.CompletionSummary(CustomisationId);

            // Then
            var expectedModel = new CourseCompletionViewModel(config, expectedCourseCompletion, progressId);

            result.Should().BeViewResult()
            .Model.Should().BeEquivalentTo(expectedModel);
        }