Exemplo n.º 1
0
        public async Task And_No_Ukprn_Then_Gets_List_Of_Reservations_For_Single_Employer_Account(
            ReservationsRouteModel routeModel,
            GetReservationsResult getReservationsResult,
            long decodedAccountId,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [Frozen] Mock <IMediator> mockMediator,
            ManageReservationsController controller)
        {
            routeModel.UkPrn = null;
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getReservationsResult);
            mockEncodingService
            .Setup(service => service.Decode(routeModel.EmployerAccountId, EncodingType.AccountId))
            .Returns(decodedAccountId);

            await controller.Manage(routeModel);

            mockMediator.Verify(mediator =>
                                mediator.Send(
                                    It.IsAny <GetTrustedEmployersQuery>(),
                                    It.IsAny <CancellationToken>()),
                                Times.Never);

            mockMediator.Verify(mediator =>
                                mediator.Send(
                                    It.Is <GetReservationsQuery>(query => query.AccountId == decodedAccountId),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
Exemplo n.º 2
0
        public async Task And_Has_Ukprn_Then_Gets_List_Of_Reservations_For_All_Trusted_Employer_Accounts(
            ReservationsRouteModel routeModel,
            GetTrustedEmployersResponse getTrustedEmployersResponse,
            GetReservationsResult getReservationsResult,
            [Frozen] Mock <IMediator> mockMediator,
            ManageReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getTrustedEmployersResponse);
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getReservationsResult);

            await controller.Manage(routeModel);

            mockMediator.Verify(mediator =>
                                mediator.Send(
                                    It.Is <GetTrustedEmployersQuery>(query => query.UkPrn == routeModel.UkPrn),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);

            foreach (var employer in getTrustedEmployersResponse.Employers)
            {
                mockMediator.Verify(mediator =>
                                    mediator.Send(
                                        It.Is <GetReservationsQuery>(query => query.AccountId == employer.AccountId),
                                        It.IsAny <CancellationToken>()),
                                    Times.Once);
            }
        }
        public async Task Then_Returns_List_Of_Reservations_For_Single_Employer_Account(
            ReservationsRouteModel routeModel,
            GetReservationsResult getReservationsResult,
            string hashedId,
            string expectedUrl,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IExternalUrlHelper> mockExternalUrlHelper,
            ManageReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getReservationsResult);

            mockEncodingService
            .Setup(service => service.Encode(It.IsAny <long>(), EncodingType.PublicAccountLegalEntityId))
            .Returns(hashedId);

            mockExternalUrlHelper
            .Setup(h => h.GenerateAddApprenticeUrl(
                       It.IsAny <Guid>(),
                       It.IsAny <string>(),
                       It.IsAny <string>(),
                       It.IsAny <uint?>(),
                       It.IsAny <DateTime>(),
                       It.IsAny <string>(),
                       It.IsAny <string>(),
                       It.IsAny <bool>(),
                       It.IsAny <string>(),
                       It.IsAny <string>()))
            .Returns(expectedUrl);

            getReservationsResult.Reservations.ToList().ForEach(c =>
            {
                c.Status    = ReservationStatus.Pending;
                c.IsExpired = false;
            });

            var expectedReservations = new List <ReservationViewModel>();

            expectedReservations.AddRange(
                getReservationsResult.Reservations.Select(
                    reservation => new ReservationViewModel(reservation, expectedUrl, routeModel.UkPrn)));

            var result = await controller.EmployerManage(routeModel) as ViewResult;

            result.Should().NotBeNull();
            result.ViewName.Should().Be(ViewNames.EmployerManage);
            var viewModel = result.Model as ManageViewModel;

            viewModel.Should().NotBeNull();
            viewModel.Reservations.Should().BeEquivalentTo(expectedReservations,
                                                           options => options.ExcludingMissingMembers());
        }
Exemplo n.º 4
0
        public async Task And_Has_Ukprn_Then_Returns_List_Of_Reservations_For_All_Trusted_Employer_Accounts(
            [Frozen] ReservationsRouteModel routeModel,
            GetTrustedEmployersResponse getTrustedEmployersResponse,
            [ReservationsFromThisProvider] GetReservationsResult getReservationsResult1,
            [ReservationsFromThisProvider] GetReservationsResult getReservationsResult2,
            [ReservationsFromThisProvider] GetReservationsResult getReservationsResult3,
            string hashedId,
            string homeLink,
            [Frozen] ReservationsWebConfiguration config,
            [Frozen] Mock <IExternalUrlHelper> externalUrlHelper,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [Frozen] Mock <IMediator> mockMediator,
            ManageReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getTrustedEmployersResponse);
            mockMediator
            .SetupSequence(mediator =>
                           mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getReservationsResult1)
            .ReturnsAsync(getReservationsResult2)
            .ReturnsAsync(getReservationsResult3);
            mockEncodingService
            .Setup(service => service.Encode(It.IsAny <long>(), EncodingType.PublicAccountLegalEntityId))
            .Returns(hashedId);
            externalUrlHelper
            .Setup(x => x.GenerateDashboardUrl(routeModel.EmployerAccountId)).Returns(homeLink);

            var expectedReservations = new List <ReservationViewModel>();

            expectedReservations.AddRange(getReservationsResult1.Reservations.Select(reservation =>
                                                                                     new ReservationViewModel(reservation, config.ApprenticeUrl, routeModel.UkPrn)));
            expectedReservations.AddRange(getReservationsResult2.Reservations.Select(reservation =>
                                                                                     new ReservationViewModel(reservation, config.ApprenticeUrl, routeModel.UkPrn)));
            expectedReservations.AddRange(getReservationsResult3.Reservations.Select(reservation =>
                                                                                     new ReservationViewModel(reservation, config.ApprenticeUrl, routeModel.UkPrn)));

            var result = await controller.Manage(routeModel) as ViewResult;

            result.Should().NotBeNull();
            result.ViewName.Should().Be(ViewNames.ProviderManage);
            var viewModel = result.Model as ManageViewModel;

            viewModel.Should().NotBeNull();
            viewModel.BackLink.Should().Be(homeLink);
            viewModel.Reservations.Should().BeEquivalentTo(expectedReservations,
                                                           options => options.ExcludingMissingMembers().ExcludingFields().Excluding(c => c.ApprenticeUrl));
        }
Exemplo n.º 5
0
        public async Task And_Has_Ukprn_And_Reservation_From_Different_Provider_Then_Not_Deletable(
            [Frozen] ReservationsRouteModel routeModel,
            GetTrustedEmployersResponse getTrustedEmployersResponse,
            GetReservationsResult getReservationResultDifferentProvider,
            [ReservationsFromThisProvider] GetReservationsResult getReservationsResult1,
            [ReservationsFromThisProvider] GetReservationsResult getReservationsResult2,
            string hashedId,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [Frozen] Mock <IMediator> mockMediator,
            ManageReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getTrustedEmployersResponse);
            mockMediator
            .SetupSequence(mediator =>
                           mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getReservationsResult1)
            .ReturnsAsync(getReservationsResult2)
            .ReturnsAsync(getReservationResultDifferentProvider);
            mockEncodingService
            .Setup(service => service.Encode(It.IsAny <long>(), EncodingType.PublicAccountLegalEntityId))
            .Returns(hashedId);

            var result = await controller.Manage(routeModel) as ViewResult;

            var viewModel = result.Model as ManageViewModel;
            var nonDeletableReservationIds = getReservationResultDifferentProvider.Reservations
                                             .Select(reservation => reservation.Id);

            viewModel.Reservations
            .Where(model => nonDeletableReservationIds.Contains(model.Id))
            .Select(model => model.CanProviderDeleteReservation)
            .Should().AllBeEquivalentTo(false);
            viewModel.Reservations
            .Where(model => !nonDeletableReservationIds.Contains(model.Id))
            .Select(model => model.CanProviderDeleteReservation)
            .Should().AllBeEquivalentTo(true);
        }