public void Get_diagnostic_assessment_should_return_diagnostic_assessment_from_data_service()
        {
            // Given
            var diagnosticAssessment = DiagnosticAssessmentTestHelper.CreateDefaultDiagnosticAssessment();

            A.CallTo(() => diagnosticAssessmentDataService.GetDiagnosticAssessment(CustomisationId, CandidateId, SectionId))
            .Returns(diagnosticAssessment);

            // When
            var result = diagnosticAssessmentService.GetDiagnosticAssessment(CustomisationId, CandidateId, SectionId);

            // Then
            result.Should().BeEquivalentTo(diagnosticAssessment);
        }
Ejemplo n.º 2
0
        public IActionResult Diagnostic(int customisationId, int sectionId)
        {
            var candidateId          = User.GetCandidateIdKnownNotNull();
            var centreId             = User.GetCentreId();
            var diagnosticAssessment =
                diagnosticAssessmentService.GetDiagnosticAssessment(customisationId, candidateId, sectionId);

            if (diagnosticAssessment == null)
            {
                logger.LogError(
                    "Redirecting to 404 as section/centre id was not found. " +
                    $"Candidate id: {candidateId}, customisation id: {customisationId}, " +
                    $"centre id: {centreId.ToString() ?? "null"}, section id: {sectionId}");
                return(RedirectToAction("StatusCode", "LearningSolutions", new { code = 404 }));
            }
            if (!String.IsNullOrEmpty(diagnosticAssessment.Password) && !diagnosticAssessment.PasswordSubmitted)
            {
                return(RedirectToAction("CoursePassword", "LearningMenu", new { customisationId }));
            }
            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 DiagnosticAssessmentViewModel(diagnosticAssessment, customisationId, sectionId);

            return(View("Diagnostic/Diagnostic", model));
        }