public void InsertCandidateAssessmentLearningLogItem_inserts_expected_record() { using var transaction = new TransactionScope(); try { // Given const int assessmentId = 1; const int learningLogId = 2; // When service.InsertCandidateAssessmentLearningLogItem(assessmentId, learningLogId); var result = learningLogItemsTestHelper.SelectCandidateAssessmentLearningLogItem(); // Then using (new AssertionScope()) { result.Should().NotBeNull(); result !.CandidateAssessmentId.Should().Be(assessmentId); result.LearningLogItemId.Should().Be(learningLogId); } } finally { transaction.Dispose(); } }
public async Task AddResourceToActionPlan(int learningResourceReferenceId, int delegateId, int selfAssessmentId) { var learningHubResourceReferenceId = learningResourceReferenceDataService.GetLearningHubResourceReferenceById(learningResourceReferenceId); var competenciesForResource = competencyLearningResourcesDataService.GetCompetencyIdsByLearningResourceReferenceId( learningResourceReferenceId ); var selfAssessmentCompetencies = selfAssessmentDataService.GetCompetencyIdsForSelfAssessment(selfAssessmentId); var learningLogCompetenciesToAdd = competenciesForResource.Where(id => selfAssessmentCompetencies.Contains(id)); var addedDate = clockService.UtcNow; var resource = await learningHubApiClient.GetResourceByReferenceId(learningHubResourceReferenceId); using var transaction = new TransactionScope(); var learningLogItemId = learningLogItemsDataService.InsertLearningLogItem( delegateId, addedDate, resource.Title, resource.Link, learningResourceReferenceId ); learningLogItemsDataService.InsertCandidateAssessmentLearningLogItem(selfAssessmentId, learningLogItemId); foreach (var competencyId in learningLogCompetenciesToAdd) { learningLogItemsDataService.InsertLearningLogItemCompetencies( learningLogItemId, competencyId, addedDate ); } transaction.Complete(); }
public void AddResourceToActionPlan_calls_expected_insert_data_service_methods() { // Given const int learningResourceReferenceId = 1; const int delegateId = 2; const int selfAssessmentId = 3; const int candidateAssessmentId = 4; const string resourceName = "Activity"; const string resourceLink = "www.test.com"; const int learningLogId = 4; const int learningHubResourceId = 6; var addedDate = new DateTime(2021, 11, 1); A.CallTo(() => clockService.UtcNow).Returns(addedDate); A.CallTo( () => learningResourceReferenceDataService.GetLearningHubResourceReferenceById( learningResourceReferenceId ) ).Returns(learningHubResourceId); var resource = new ResourceReferenceWithResourceDetails { Title = resourceName, Link = resourceLink }; A.CallTo(() => learningHubResourceService.GetResourceByReferenceId(learningHubResourceId)) .Returns((resource, true)); var resourceCompetencies = new[] { 1, 2, 3, 4, 5, 6, 7, 8 }; A.CallTo( () => competencyLearningResourcesDataService.GetCompetencyIdsLinkedToResource( learningResourceReferenceId ) ).Returns(resourceCompetencies); var assessmentCompetencies = new[] { 2, 3, 5, 6, 8, 9, 10 }; A.CallTo(() => selfAssessmentDataService.GetCompetencyIdsForSelfAssessment(selfAssessmentId)) .Returns(assessmentCompetencies); A.CallTo(() => selfAssessmentDataService.GetCandidateAssessments(delegateId, selfAssessmentId)) .Returns( new[] { Builder <CandidateAssessment> .CreateNew().With(ca => ca.Id = candidateAssessmentId).Build() } ); A.CallTo( () => learningLogItemsDataService.InsertLearningLogItem( A <int> ._, A <DateTime> ._, A <string> ._, A <string> ._, A <int> ._ ) ).Returns(learningLogId); var expectedMatchingCompetencies = new[] { 2, 3, 5, 6, 8 }; // When actionPlanService.AddResourceToActionPlan(learningResourceReferenceId, delegateId, selfAssessmentId); // Then A.CallTo( () => learningLogItemsDataService.InsertLearningLogItem( delegateId, addedDate, resourceName, resourceLink, learningResourceReferenceId ) ).MustHaveHappenedOnceExactly(); A.CallTo( () => learningLogItemsDataService.InsertCandidateAssessmentLearningLogItem( candidateAssessmentId, learningLogId ) ).MustHaveHappenedOnceExactly(); foreach (var competencyId in expectedMatchingCompetencies) { A.CallTo( () => learningLogItemsDataService.InsertLearningLogItemCompetencies( learningLogId, competencyId, addedDate ) ).MustHaveHappenedOnceExactly(); } A.CallTo( () => learningLogItemsDataService.InsertLearningLogItemCompetencies(learningLogId, A <int> ._, addedDate) ).MustHaveHappened(5, Times.Exactly); }