diff --git a/DigitalLearningSolutions.Web.Tests/Controllers/LearningPortal/SelfAssessmentTests.cs b/DigitalLearningSolutions.Web.Tests/Controllers/LearningPortal/SelfAssessmentTests.cs index b7857a8660..fd0e39a9b9 100644 --- a/DigitalLearningSolutions.Web.Tests/Controllers/LearningPortal/SelfAssessmentTests.cs +++ b/DigitalLearningSolutions.Web.Tests/Controllers/LearningPortal/SelfAssessmentTests.cs @@ -5,8 +5,6 @@ using System.Collections.ObjectModel; using System.Linq; using DigitalLearningSolutions.Data.Models.SelfAssessments; - using DigitalLearningSolutions.Data.Models.Supervisor; - using DigitalLearningSolutions.Data.Models.User; using DigitalLearningSolutions.Web.Tests.TestHelpers; using DigitalLearningSolutions.Web.ViewModels.Common.SearchablePage; using DigitalLearningSolutions.Web.ViewModels.LearningPortal.Current; @@ -274,7 +272,7 @@ public void SelfAssessmentCompetency_Post_Redirects_To_Next_Question() [Test] public void SelfAssessmentCompetency_Post_without_self_assessment_should_return_403() { - var assessmentQuestion = new List(); + var assessmentQuestion = new List(); // Given A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId)) .Returns(null); @@ -423,6 +421,44 @@ public void SelfAssessmentOverview_Should_Return_View() .Model.Should().BeEquivalentTo(expectedModel); } + [Test] + public void SelfAssessmentOverview_Should_Return_View_With_Optional_Competency() + { + // Given + var selfAssessment = SelfAssessmentTestHelper.CreateDefaultSelfAssessment(); + var appliedFilterViewModel = new List(); + var competencies = new List + { + new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true }, + new Competency { CompetencyGroup = "A", Id = 2, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = false }, + }; + var supervisorSignOffs = new List(); + var expectedModel = new SelfAssessmentOverviewViewModel + { + SelfAssessment = selfAssessment, + CompetencyGroups = competencies.GroupBy(competency => competency.CompetencyGroup), + PreviousCompetencyNumber = 2, + SupervisorSignOffs = supervisorSignOffs, + SearchViewModel = new SearchSelfAssessmentOverviewViewModel("", SelfAssessmentId, selfAssessment.Vocabulary!, false, false, appliedFilterViewModel), + AllQuestionsVerifiedOrNotRequired = true + }; + A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId)) + .Returns(selfAssessment); + A.CallTo(() => selfAssessmentService.GetMostRecentResults(selfAssessment.Id, DelegateUserId)) + .Returns(competencies); + + // When + var result = controller.SelfAssessmentOverview(SelfAssessmentId, selfAssessment.Vocabulary!); + + // Then + result.Should().BeViewResult() + .WithViewName("SelfAssessments/SelfAssessmentOverview") + .Model.Should().BeEquivalentTo(expectedModel); + + result.Should().BeViewResult().ModelAs().CompetencyGroups.ToList()[0].ToList()[0].Optional.Should().Be(true); + result.Should().BeViewResult().ModelAs().CompetencyGroups.ToList()[0].ToList()[1].Optional.Should().Be(false); + } + [Test] public void SelfAssessmentOverview_action_should_update_last_accessed() { @@ -692,5 +728,51 @@ public void WithdrawSupervisorSignOffRequest_calls_remove_sign_off_and_defaults_ .BeRedirectToActionResult() .WithActionName("SelfAssessmentOverview"); } + + [Test] + public void ManageOptionalCompetencies_Should_Return_View_With_Flag() + { + // Given + var selfAssessment = SelfAssessmentTestHelper.CreateDefaultSelfAssessment(); + var appliedFilterViewModel = new List(); + var CompetencyFlags = new List { new Data.Models.Frameworks.CompetencyFlag { CompetencyId = 1, FlagId = 1, FlagGroup = "Purple", FlagName = "Supernumerary", FlagTagClass = "nhsuk-tag--purple", FrameworkId = 1, Selected = true }, }; + + var optionalCompetencies = new List + { + new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true }, + new Competency { CompetencyGroup = "A", Id = 2, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true }, + }; + var competencyIds = optionalCompetencies.Select(c => c.Id).ToArray(); + var includedSelfAssessmentStructureIds = new List { 1, 2 }; + + A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId)) + .Returns(selfAssessment); + A.CallTo(() => selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessment.Id, DelegateUserId)) + .Returns(optionalCompetencies); + A.CallTo(() => frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(A.That.Matches(ids => ids.Length == 2 && ids[0] == 1 && ids[1] == 2))) + .Returns(CompetencyFlags); + A.CallTo(() => selfAssessmentService.GetCandidateAssessmentIncludedSelfAssessmentStructureIds(selfAssessment.Id, DelegateUserId)) + .Returns(includedSelfAssessmentStructureIds); + + var model = new ManageOptionalCompetenciesViewModel + { + SelfAssessment = selfAssessment, + CompetencyGroups = optionalCompetencies.GroupBy(competency => competency.CompetencyGroup), + IncludedSelfAssessmentStructureIds = includedSelfAssessmentStructureIds + }; + + // When + var result = controller.ManageOptionalCompetencies(SelfAssessmentId); + + // Then + result.Should().BeViewResult() + .WithViewName("SelfAssessments/ManageOptionalCompetencies") + .Model.Should().BeEquivalentTo(model); + + result.Should().BeViewResult().ModelAs().CompetencyGroups?.ToList()[0].ToList()[0].CompetencyFlags.Count().Should().Be(1); + result.Should().BeViewResult().ModelAs().CompetencyGroups?.ToList()[0].ToList()[0].CompetencyFlags.ToList()[0].FlagName.Should().Be("Supernumerary"); + + result.Should().BeViewResult().ModelAs().CompetencyGroups?.ToList()[0].ToList()[1].CompetencyFlags.Count().Should().Be(0); + } } }