Exemple #1
0
        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));
        }
Exemple #2
0
        public async Task LaunchLearningResource_updates_action_plan_if_present_for_delegate()
        {
            // When
            await controller.LaunchLearningResource(ResourceReferenceId);

            // Then
            A.CallTo(
                () => actionPlanService.UpdateActionPlanResourcesLastAccessedDateIfPresent(
                    ResourceReferenceId,
                    DelegateId
                    )
                )
            .MustHaveHappenedOnceExactly();
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
            }
        }