public async Task <IActionResult> LaunchLearningResource(int resourceReferenceId) { var delegateId = User.GetCandidateIdKnownNotNull(); actionPlanService.UpdateActionPlanResourcesLastAccessedDateIfPresent(resourceReferenceId, delegateId); var delegateUser = userService.GetDelegateUserById(delegateId); var(resource, apiIsAccessible) = await learningHubResourceService.GetResourceByReferenceIdAndPopulateDeletedDetailsFromDatabase( resourceReferenceId ); if (resource == null || resource.AbsentInLearningHub) { return(NotFound()); } if (delegateUser !.HasDismissedLhLoginWarning) { return(RedirectToAction("ViewResource", "SignpostingSso", new { resourceReferenceId })); } var learningHubAccountIsLinked = userService.DelegateUserLearningHubAccountIsLinked(delegateId); var model = new LearningHubLoginWarningViewModel( resource, learningHubAccountIsLinked, apiIsAccessible ); return(View("LearningHubLoginWarning", model)); }
public async Task LaunchLearningResource_updates_action_plan_if_present_for_delegate() { // When await controller.LaunchLearningResource(ResourceReferenceId); // Then A.CallTo( () => actionPlanService.UpdateActionPlanResourcesLastAccessedDateIfPresent( ResourceReferenceId, DelegateId ) ) .MustHaveHappenedOnceExactly(); }
public void SetUp() { userService = A.Fake <IUserService>(); learningHubResourceService = A.Fake <ILearningHubResourceService>(); actionPlanService = A.Fake <IActionPlanService>(); A.CallTo(() => actionPlanService.UpdateActionPlanResourcesLastAccessedDateIfPresent(A <int> ._, A <int> ._)) .DoesNothing(); A.CallTo(() => userService.GetDelegateUserById(DelegateId)) .Returns(UserTestHelper.GetDefaultDelegateUser(DelegateId)); A.CallTo(() => userService.DelegateUserLearningHubAccountIsLinked(DelegateId)).Returns(false); A.CallTo(() => learningHubResourceService.GetResourceByReferenceId(ResourceReferenceId)) .Returns((new ResourceReferenceWithResourceDetails(), false)); controller = new SignpostingController( userService, learningHubResourceService, actionPlanService ).WithDefaultContext().WithMockUser(true, delegateId: DelegateId); }
UpdateActionPlanResourcesLastAccessedDateIfPresent_updates_last_accessed_date_of_appropriate_records() { // Given var testDate = new DateTime(2021, 12, 2); A.CallTo(() => clockService.UtcNow).Returns(testDate); const int delegateId = 2; const int resourceReferenceId = 3; var expectedLearningLogItemIdsToUpdate = new[] { 1, 4 }; var learningLogItems = Builder <LearningLogItem> .CreateListOfSize(4).All() .With(i => i.CompletedDate = null) .And(i => i.ArchivedDate = null) .And(i => i.LearningHubResourceReferenceId = resourceReferenceId) .And((i, index) => i.LearningLogItemId = index + 1) .TheFirst(1).With(i => i.CompletedDate = DateTime.UtcNow) .TheNext(1).With(i => i.ArchivedDate = DateTime.UtcNow) .TheNext(1).With(i => i.LearningHubResourceReferenceId = resourceReferenceId + 100) .Build(); A.CallTo(() => learningLogItemsDataService.GetLearningLogItems(delegateId)) .Returns(learningLogItems); // When actionPlanService.UpdateActionPlanResourcesLastAccessedDateIfPresent(resourceReferenceId, delegateId); // Then A.CallTo(() => learningLogItemsDataService.GetLearningLogItems(delegateId)) .MustHaveHappenedOnceExactly(); foreach (var id in expectedLearningLogItemIdsToUpdate) { A.CallTo( () => learningLogItemsDataService.UpdateLearningLogItemLastAccessedDate(id, testDate) ) .MustHaveHappenedOnceExactly(); } }