|  | 
| 5 | 5 |     using System.Collections.ObjectModel; | 
| 6 | 6 |     using System.Linq; | 
| 7 | 7 |     using DigitalLearningSolutions.Data.Models.SelfAssessments; | 
| 8 |  | -    using DigitalLearningSolutions.Data.Models.Supervisor; | 
| 9 |  | -    using DigitalLearningSolutions.Data.Models.User; | 
| 10 | 8 |     using DigitalLearningSolutions.Web.Tests.TestHelpers; | 
| 11 | 9 |     using DigitalLearningSolutions.Web.ViewModels.Common.SearchablePage; | 
| 12 | 10 |     using DigitalLearningSolutions.Web.ViewModels.LearningPortal.Current; | 
| @@ -274,7 +272,7 @@ public void SelfAssessmentCompetency_Post_Redirects_To_Next_Question() | 
| 274 | 272 |         [Test] | 
| 275 | 273 |         public void SelfAssessmentCompetency_Post_without_self_assessment_should_return_403() | 
| 276 | 274 |         { | 
| 277 |  | -        var assessmentQuestion =    new List<AssessmentQuestion>(); | 
|  | 275 | +            var assessmentQuestion = new List<AssessmentQuestion>(); | 
| 278 | 276 |             // Given | 
| 279 | 277 |             A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId)) | 
| 280 | 278 |                 .Returns(null); | 
| @@ -423,6 +421,44 @@ public void SelfAssessmentOverview_Should_Return_View() | 
| 423 | 421 |                 .Model.Should().BeEquivalentTo(expectedModel); | 
| 424 | 422 |         } | 
| 425 | 423 | 
 | 
|  | 424 | +        [Test] | 
|  | 425 | +        public void SelfAssessmentOverview_Should_Return_View_With_Optional_Competency() | 
|  | 426 | +        { | 
|  | 427 | +            // Given | 
|  | 428 | +            var selfAssessment = SelfAssessmentTestHelper.CreateDefaultSelfAssessment(); | 
|  | 429 | +            var appliedFilterViewModel = new List<AppliedFilterViewModel>(); | 
|  | 430 | +            var competencies = new List<Competency> | 
|  | 431 | +            { | 
|  | 432 | +                new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true }, | 
|  | 433 | +                new Competency { CompetencyGroup = "A", Id = 2, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = false }, | 
|  | 434 | +            }; | 
|  | 435 | +            var supervisorSignOffs = new List<SupervisorSignOff>(); | 
|  | 436 | +            var expectedModel = new SelfAssessmentOverviewViewModel | 
|  | 437 | +            { | 
|  | 438 | +                SelfAssessment = selfAssessment, | 
|  | 439 | +                CompetencyGroups = competencies.GroupBy(competency => competency.CompetencyGroup), | 
|  | 440 | +                PreviousCompetencyNumber = 2, | 
|  | 441 | +                SupervisorSignOffs = supervisorSignOffs, | 
|  | 442 | +                SearchViewModel = new SearchSelfAssessmentOverviewViewModel("", SelfAssessmentId, selfAssessment.Vocabulary!, false, false, appliedFilterViewModel), | 
|  | 443 | +                AllQuestionsVerifiedOrNotRequired = true | 
|  | 444 | +            }; | 
|  | 445 | +            A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId)) | 
|  | 446 | +                .Returns(selfAssessment); | 
|  | 447 | +            A.CallTo(() => selfAssessmentService.GetMostRecentResults(selfAssessment.Id, DelegateUserId)) | 
|  | 448 | +                .Returns(competencies); | 
|  | 449 | + | 
|  | 450 | +            // When | 
|  | 451 | +            var result = controller.SelfAssessmentOverview(SelfAssessmentId, selfAssessment.Vocabulary!); | 
|  | 452 | + | 
|  | 453 | +            // Then | 
|  | 454 | +            result.Should().BeViewResult() | 
|  | 455 | +                .WithViewName("SelfAssessments/SelfAssessmentOverview") | 
|  | 456 | +                .Model.Should().BeEquivalentTo(expectedModel); | 
|  | 457 | + | 
|  | 458 | +            result.Should().BeViewResult().ModelAs<SelfAssessmentOverviewViewModel>().CompetencyGroups.ToList()[0].ToList()[0].Optional.Should().Be(true); | 
|  | 459 | +            result.Should().BeViewResult().ModelAs<SelfAssessmentOverviewViewModel>().CompetencyGroups.ToList()[0].ToList()[1].Optional.Should().Be(false); | 
|  | 460 | +        } | 
|  | 461 | + | 
| 426 | 462 |         [Test] | 
| 427 | 463 |         public void SelfAssessmentOverview_action_should_update_last_accessed() | 
| 428 | 464 |         { | 
| @@ -692,5 +728,51 @@ public void WithdrawSupervisorSignOffRequest_calls_remove_sign_off_and_defaults_ | 
| 692 | 728 |                 .BeRedirectToActionResult() | 
| 693 | 729 |                 .WithActionName("SelfAssessmentOverview"); | 
| 694 | 730 |         } | 
|  | 731 | + | 
|  | 732 | +        [Test] | 
|  | 733 | +        public void ManageOptionalCompetencies_Should_Return_View_With_Flag() | 
|  | 734 | +        { | 
|  | 735 | +            // Given | 
|  | 736 | +            var selfAssessment = SelfAssessmentTestHelper.CreateDefaultSelfAssessment(); | 
|  | 737 | +            var appliedFilterViewModel = new List<AppliedFilterViewModel>(); | 
|  | 738 | +            var CompetencyFlags = new List<Data.Models.Frameworks.CompetencyFlag> { new Data.Models.Frameworks.CompetencyFlag { CompetencyId = 1, FlagId = 1, FlagGroup = "Purple", FlagName = "Supernumerary", FlagTagClass = "nhsuk-tag--purple", FrameworkId = 1, Selected = true }, }; | 
|  | 739 | + | 
|  | 740 | +            var optionalCompetencies = new List<Competency> | 
|  | 741 | +    { | 
|  | 742 | +        new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true }, | 
|  | 743 | +        new Competency { CompetencyGroup = "A", Id = 2, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true }, | 
|  | 744 | +    }; | 
|  | 745 | +            var competencyIds = optionalCompetencies.Select(c => c.Id).ToArray(); | 
|  | 746 | +            var includedSelfAssessmentStructureIds = new List<int> { 1, 2 }; | 
|  | 747 | + | 
|  | 748 | +            A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId)) | 
|  | 749 | +                .Returns(selfAssessment); | 
|  | 750 | +            A.CallTo(() => selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessment.Id, DelegateUserId)) | 
|  | 751 | +                .Returns(optionalCompetencies); | 
|  | 752 | +            A.CallTo(() => frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(A<int[]>.That.Matches(ids => ids.Length == 2 && ids[0] == 1 && ids[1] == 2))) | 
|  | 753 | +                .Returns(CompetencyFlags); | 
|  | 754 | +            A.CallTo(() => selfAssessmentService.GetCandidateAssessmentIncludedSelfAssessmentStructureIds(selfAssessment.Id, DelegateUserId)) | 
|  | 755 | +                .Returns(includedSelfAssessmentStructureIds); | 
|  | 756 | + | 
|  | 757 | +            var model = new ManageOptionalCompetenciesViewModel | 
|  | 758 | +            { | 
|  | 759 | +                SelfAssessment = selfAssessment, | 
|  | 760 | +                CompetencyGroups = optionalCompetencies.GroupBy(competency => competency.CompetencyGroup), | 
|  | 761 | +                IncludedSelfAssessmentStructureIds = includedSelfAssessmentStructureIds | 
|  | 762 | +            }; | 
|  | 763 | + | 
|  | 764 | +            // When | 
|  | 765 | +            var result = controller.ManageOptionalCompetencies(SelfAssessmentId); | 
|  | 766 | + | 
|  | 767 | +            // Then | 
|  | 768 | +            result.Should().BeViewResult() | 
|  | 769 | +                .WithViewName("SelfAssessments/ManageOptionalCompetencies") | 
|  | 770 | +                .Model.Should().BeEquivalentTo(model); | 
|  | 771 | + | 
|  | 772 | +            result.Should().BeViewResult().ModelAs<ManageOptionalCompetenciesViewModel>().CompetencyGroups?.ToList()[0].ToList()[0].CompetencyFlags.Count().Should().Be(1); | 
|  | 773 | +            result.Should().BeViewResult().ModelAs<ManageOptionalCompetenciesViewModel>().CompetencyGroups?.ToList()[0].ToList()[0].CompetencyFlags.ToList()[0].FlagName.Should().Be("Supernumerary"); | 
|  | 774 | + | 
|  | 775 | +            result.Should().BeViewResult().ModelAs<ManageOptionalCompetenciesViewModel>().CompetencyGroups?.ToList()[0].ToList()[1].CompetencyFlags.Count().Should().Be(0); | 
|  | 776 | +        } | 
| 695 | 777 |     } | 
| 696 | 778 | } | 
0 commit comments