Skip to content

Commit 6118620

Browse files
committed
Merge branch 'release-v1.0.0' into DLS-Release-v1.1.0
2 parents d0f7bfa + 3098eaa commit 6118620

File tree

5 files changed

+203
-108
lines changed

5 files changed

+203
-108
lines changed

DigitalLearningSolutions.Data/DataServices/CourseDataService.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,9 @@ LEFT OUTER JOIN UserCentreDetails AS UCD ON
541541
new { candidateAssessmentId, enrolmentMethodId, completeByDateDynamic }
542542
);
543543
}
544-
if (candidateAssessmentId > 1 && supervisorDelegateId !=0)
544+
545+
if (candidateAssessmentId > 1 && supervisorDelegateId !=0)
546+
545547
{
546548
string sqlQuery = $@"
547549
BEGIN TRANSACTION
@@ -558,6 +560,23 @@ BEGIN TRANSACTION
558560
, new { candidateAssessmentId, selfAssessmentSupervisorRoleId, enrolmentMethodId, completeByDateDynamic });
559561
}
560562

563+
if (supervisorId > 0)
564+
{
565+
566+
var adminUserId = Convert.ToInt32(connection.ExecuteScalar(@"SELECT UserID FROM AdminAccounts WHERE (AdminAccounts.ID = @supervisorId)",
567+
new { supervisorId })
568+
);
569+
570+
if (delegateUserId == adminUserId)
571+
{
572+
connection.Execute(
573+
@"UPDATE CandidateAssessments SET NonReportable = 1 WHERE ID = @candidateAssessmentId",
574+
new { candidateAssessmentId }
575+
);
576+
577+
}
578+
}
579+
561580
if (candidateAssessmentId < 1)
562581
{
563582
logger.LogWarning(

DigitalLearningSolutions.Web.Tests/Controllers/LearningPortal/SelfAssessmentTests.cs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -774,5 +774,101 @@ public void ManageOptionalCompetencies_Should_Return_View_With_Flag()
774774

775775
result.Should().BeViewResult().ModelAs<ManageOptionalCompetenciesViewModel>().CompetencyGroups?.ToList()[0].ToList()[1].CompetencyFlags.Count().Should().Be(0);
776776
}
777+
778+
779+
[Test]
780+
public void SelfAssessmentOverview_Should_Return_View_With_All_Competencies()
781+
{
782+
// Given
783+
var selfAssessment = SelfAssessmentTestHelper.CreateDefaultSelfAssessment();
784+
var appliedFilterViewModel = new List<AppliedFilterViewModel>();
785+
var competencies = new List<Competency>
786+
{
787+
new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true },
788+
new Competency { CompetencyGroup = "A", Id = 2, CompetencyGroupID = 1,SelfAssessmentStructureId=2, Optional = false },
789+
new Competency { CompetencyGroup = "A", Id = 3, CompetencyGroupID = 1,SelfAssessmentStructureId=3, Optional = false },
790+
};
791+
var supervisorSignOffs = new List<SupervisorSignOff>();
792+
var expectedModel = new SelfAssessmentOverviewViewModel
793+
{
794+
SelfAssessment = selfAssessment,
795+
CompetencyGroups = competencies.GroupBy(competency => competency.CompetencyGroup),
796+
PreviousCompetencyNumber = 3,
797+
SupervisorSignOffs = supervisorSignOffs,
798+
SearchViewModel = new SearchSelfAssessmentOverviewViewModel("", SelfAssessmentId, selfAssessment.Vocabulary!, false, false, appliedFilterViewModel),
799+
AllQuestionsVerifiedOrNotRequired = true
800+
};
801+
A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId))
802+
.Returns(selfAssessment);
803+
A.CallTo(() => selfAssessmentService.GetMostRecentResults(selfAssessment.Id, DelegateUserId))
804+
.Returns(competencies);
805+
806+
// When
807+
var result = controller.SelfAssessmentOverview(SelfAssessmentId, selfAssessment.Vocabulary!);
808+
809+
// Then
810+
result.Should().BeViewResult()
811+
.WithViewName("SelfAssessments/SelfAssessmentOverview")
812+
.Model.Should().BeEquivalentTo(expectedModel);
813+
814+
result.Should().BeViewResult().ModelAs<SelfAssessmentOverviewViewModel>().CompetencyGroups.ToList()[0].Count().Should().Be(3);
815+
}
816+
817+
[Test]
818+
public void SelfAssessmentOverview_Should_Return_View_With_Optional_Filter_Applied()
819+
{
820+
// Given
821+
var selfAssessment = SelfAssessmentTestHelper.CreateDefaultSelfAssessment();
822+
var appliedFilterViewModel = new List<AppliedFilterViewModel>
823+
{
824+
new AppliedFilterViewModel{DisplayText = "Optional", FilterCategory = null!, FilterValue ="-4", TagClass = ""},
825+
};
826+
var search = new SearchSelfAssessmentOverviewViewModel
827+
{
828+
AppliedFilters = appliedFilterViewModel,
829+
SelfAssessmentId = SelfAssessmentId,
830+
Vocabulary = selfAssessment.Vocabulary!,
831+
SearchText = "",
832+
CompetencyFlags = null!,
833+
834+
};
835+
var competencies = new List<Competency>
836+
{
837+
new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true },
838+
new Competency { CompetencyGroup = "A", Id = 2, CompetencyGroupID = 1,SelfAssessmentStructureId=2, Optional = false },
839+
new Competency { CompetencyGroup = "A", Id = 3, CompetencyGroupID = 1,SelfAssessmentStructureId=3, Optional = false },
840+
};
841+
var optionalCompetencies = new List<Competency>
842+
{
843+
new Competency { CompetencyGroup = "A", Id = 1, CompetencyGroupID = 1,SelfAssessmentStructureId=1, Optional = true },
844+
};
845+
var supervisorSignOffs = new List<SupervisorSignOff>();
846+
var expectedModel = new SelfAssessmentOverviewViewModel
847+
{
848+
SelfAssessment = selfAssessment,
849+
CompetencyGroups = optionalCompetencies.GroupBy(competency => competency.CompetencyGroup),
850+
PreviousCompetencyNumber = 1,
851+
SupervisorSignOffs = supervisorSignOffs,
852+
SearchViewModel = search,
853+
AllQuestionsVerifiedOrNotRequired = true,
854+
NumberOfOptionalCompetencies = 1,
855+
};
856+
A.CallTo(() => selfAssessmentService.GetSelfAssessmentForCandidateById(DelegateUserId, SelfAssessmentId))
857+
.Returns(selfAssessment);
858+
A.CallTo(() => selfAssessmentService.GetMostRecentResults(selfAssessment.Id, DelegateUserId))
859+
.Returns(competencies);
860+
A.CallTo(() => selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessment.Id, DelegateUserId))
861+
.Returns(optionalCompetencies);
862+
863+
// When
864+
var result = controller.SelfAssessmentOverview(SelfAssessmentId, selfAssessment.Vocabulary!, searchModel: search);
865+
866+
// Then
867+
result.Should().BeViewResult()
868+
.WithViewName("SelfAssessments/SelfAssessmentOverview")
869+
.Model.Should().BeEquivalentTo(expectedModel);
870+
871+
result.Should().BeViewResult().ModelAs<SelfAssessmentOverviewViewModel>().CompetencyGroups.ToList()[0].Count().Should().Be(1);
872+
}
777873
}
778874
}

DigitalLearningSolutions.Web/Scripts/learningPortal/selfAssessment.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import * as Checkboxes from '../checkboxes';
2-
31
function onSliderUpdate(inputElement: HTMLInputElement) {
42
const selectedRatio = parseInt(inputElement.value, 10) / parseInt(inputElement.max, 10);
53
// eslint-disable-next-line no-param-reassign
@@ -15,5 +13,3 @@ inputs.forEach((e) => onSliderUpdate(e));
1513
inputs.forEach((e) => {
1614
e.addEventListener('change', () => onSliderUpdate(e));
1715
});
18-
19-
Checkboxes.default.setUpSelectAndDeselectInGroupButtons();

DigitalLearningSolutions.Web/Styles/learningPortal/selfAssessment.scss

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ details.nhsuk-details {
5454
}
5555
}
5656

57-
.nhsuk-details__summary-text {
58-
text-decoration: none;
59-
}
60-
6157
.score {
6258
margin-left: 48px;
6359
color: $color_nhsuk-black;
@@ -247,3 +243,7 @@ details.nhsuk-details {
247243
.text-area-edit-90 {
248244
height: 90px
249245
}
246+
247+
.heading-checkboxes__label {
248+
padding: 4px 12px 4px;
249+
}

0 commit comments

Comments
 (0)