예제 #1
0
        public async Task AndIsANonLevyEmployer_ThenContinuesToAction(
            [Frozen] ServiceParameters serviceParameters,
            [Frozen] Mock <IMediator> mockMediator,
            GetLegalEntitiesResponse legalEntitiesResponse,
            IEnumerable <AccountLegalEntity> legalEntities,
            string employerAccountId,
            long decodedId,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [ArrangeActionContext] ActionExecutingContext context,
            [Frozen] Mock <ActionExecutionDelegate> nextMethod,
            LevyNotPermittedFilter filter)
        {
            //Arrange
            serviceParameters.AuthenticationType       = AuthenticationType.Employer;
            legalEntitiesResponse.AccountLegalEntities = legalEntities;
            context.RouteData.Values.Add("employerAccountId", employerAccountId);
            foreach (var legalEntity in legalEntitiesResponse.AccountLegalEntities)
            {
                legalEntity.IsLevy = false;
            }
            mockEncodingService
            .Setup(x => x.TryDecode(employerAccountId, EncodingType.AccountId, out decodedId))
            .Returns(true);
            mockMediator
            .Setup(x => x.Send(It.Is <GetLegalEntitiesQuery>(y => y.AccountId == decodedId), It.IsAny <CancellationToken>()))
            .ReturnsAsync(legalEntitiesResponse);

            //Act
            await filter.OnActionExecutionAsync(context, nextMethod.Object);

            //Assert
            Assert.Null(context.Result);
            nextMethod.Verify(x => x(), Times.Once);
        }
        public async Task Then_Updates_Existing_Reservation_If_Supplied(ReservationsRouteModel routeModel,
                                                                        ConfirmLegalEntityViewModel viewModel,
                                                                        GetLegalEntitiesResponse getLegalEntitiesResponse,
                                                                        long decodedAccountId,
                                                                        [Frozen] Mock <IMediator> mockMediator,
                                                                        [Frozen] Mock <IEncodingService> mockEncodingService,
                                                                        EmployerReservationsController controller)
        {
            var firstLegalEntity = getLegalEntitiesResponse.AccountLegalEntities.First();

            firstLegalEntity.AgreementSigned = true;
            viewModel.LegalEntity            = firstLegalEntity.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetLegalEntitiesQuery>(query => query.AccountId == decodedAccountId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockEncodingService
            .Setup(service => service.Decode(routeModel.EmployerAccountId, EncodingType.AccountId))
            .Returns(decodedAccountId);

            await controller.PostSelectLegalEntity(routeModel, viewModel);

            mockMediator.Verify(mediator => mediator.Send(
                                    It.Is <CacheReservationEmployerCommand>(command =>
                                                                            command.Id == routeModel.Id),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
        public async Task And_GlobalRule_Is_In_Place_Then_The_Funding_Paused_View_Is_Shown_For_Employer(
            ReservationsRouteModel routeModel,
            SelectReservationViewModel viewModel,
            GetLegalEntitiesResponse employersResponse,
            string cohortDetailsUrl,
            long expectedAccountId,
            [Frozen] Mock <IExternalUrlHelper> mockUrlHelper,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IEncodingService> encodingService,
            SelectReservationsController controller)
        {
            routeModel.UkPrn = null;
            viewModel.SelectedReservationId = Guid.Parse(Guid.Empty.ToString().Replace("0", "9"));
            routeModel.Id = Guid.Empty;
            encodingService.Setup(x => x.Decode(routeModel.EmployerAccountId, EncodingType.AccountId)).Returns(expectedAccountId);
            var matchedEmployer = employersResponse.AccountLegalEntities.First();

            routeModel.AccountLegalEntityPublicHashedId = matchedEmployer.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetLegalEntitiesQuery>(c => c.AccountId.Equals(expectedAccountId)),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(employersResponse);
            mockMediator.Setup(x => x.Send(It.IsAny <CacheReservationEmployerCommand>(), It.IsAny <CancellationToken>()))
            .ThrowsAsync(new GlobalReservationRuleException(viewModel.AccountId));

            //Act
            var result = await controller.PostSelectReservation(routeModel, viewModel) as ViewResult;

            //Assert
            result.ViewName.Should().Be("EmployerFundingPaused");
        }
        public async Task And_ValidationException_Then_Redirects_To_SelectLegalEntity(
            ReservationsRouteModel routeModel,
            ConfirmLegalEntityViewModel viewModel,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            EmployerReservationsController controller)
        {
            var firstLegalEntity = getLegalEntitiesResponse.AccountLegalEntities.First();

            firstLegalEntity.AgreementSigned = true;
            viewModel.LegalEntity            = firstLegalEntity.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockMediator.Setup(x => x.Send(It.IsAny <CacheReservationEmployerCommand>(), It.IsAny <CancellationToken>()))
            .ThrowsAsync(new ValidationException(
                             new ValidationResult("Failed",
                                                  new List <string> {
                "AccountId| Account reservation limit has been reached."
            }), null, null));

            var actual = await controller.PostSelectLegalEntity(routeModel, viewModel);

            actual.Should().NotBeNull();
            var actualViewResult = actual as ViewResult;

            actualViewResult.Should().NotBeNull();
            actualViewResult?.ViewName.Should().Be("SelectLegalEntity");
            controller.ModelState.IsValid.Should().BeFalse();
            controller.ModelState.Should().Contain(pair => pair.Key == "AccountId");
        }
        And_User_Has_Transactor_Role_And_Chosen_Legal_Entity_Has_Not_Signed_Agreement_Then_Redirect_To_Transactor_Sign_Route(
            ReservationsRouteModel routeModel,
            ConfirmLegalEntityViewModel viewModel,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IUserClaimsService> mockClaimsService,
            EmployerReservationsController controller)
        {
            var firstLegalEntity = getLegalEntitiesResponse.AccountLegalEntities.First();

            firstLegalEntity.AgreementSigned = false;
            viewModel.LegalEntity            = firstLegalEntity.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockClaimsService
            .Setup(service => service.UserIsInRole(
                       routeModel.EmployerAccountId,
                       EmployerUserRole.Owner,
                       It.IsAny <IEnumerable <Claim> >()))
            .Returns(false);

            var result = await controller.PostSelectLegalEntity(routeModel, viewModel) as RedirectToRouteResult;

            result.RouteName.Should().Be(RouteNames.EmployerTransactorSignAgreement);
            result.RouteValues[nameof(ReservationsRouteModel.PreviousPage)].Should().Be(RouteNames.EmployerSelectLegalEntity);
        }
예제 #6
0
        public async Task And_Only_One_Legal_Entity_Then_Adds_Legal_Entity_To_Reservation_And_Redirects_To_Course_Selection(
            ReservationsRouteModel routeModel,
            AccountLegalEntity accountLegalEntity,
            [Frozen] Mock <IMediator> mockMediator,
            EmployerReservationsController controller)
        {
            routeModel.Id = null;
            var getLegalEntitiesResponse = new GetLegalEntitiesResponse
            {
                AccountLegalEntities = new List <AccountLegalEntity> {
                    accountLegalEntity
                }
            };

            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetLegalEntitiesQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);

            var result = await controller.SelectLegalEntity(routeModel) as RedirectToRouteResult;

            result.RouteName.Should().Be(RouteNames.EmployerSelectCourse);

            mockMediator.Verify(mediator => mediator.Send(
                                    It.Is <CacheReservationEmployerCommand>(command =>
                                                                            command.Id != Guid.Empty &&
                                                                            command.AccountId == accountLegalEntity.AccountId &&
                                                                            command.AccountLegalEntityId == accountLegalEntity.AccountLegalEntityId &&
                                                                            command.AccountLegalEntityName == accountLegalEntity.AccountLegalEntityName &&
                                                                            command.AccountLegalEntityPublicHashedId == accountLegalEntity.AccountLegalEntityPublicHashedId &&
                                                                            command.EmployerHasSingleLegalEntity),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
예제 #7
0
        And_User_Has_Owner_Role_And_Chosen_Legal_Entity_Has_Not_Signed_Agreement_Then_Redirect_To_Owner_Sign_Route(
            ReservationsRouteModel routeModel,
            AccountLegalEntity accountLegalEntity,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IUserClaimsService> mockClaimsService,
            EmployerReservationsController controller)
        {
            getLegalEntitiesResponse.AccountLegalEntities =
                new List <AccountLegalEntity>
            {
                accountLegalEntity
            };
            accountLegalEntity.AgreementSigned = false;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockClaimsService
            .Setup(service => service.UserIsInRole(
                       routeModel.EmployerAccountId,
                       EmployerUserRole.Owner,
                       It.IsAny <IEnumerable <Claim> >()))
            .Returns(true);

            var result = await controller.SelectLegalEntity(routeModel) as RedirectToRouteResult;

            result.RouteName.Should().Be(RouteNames.EmployerOwnerSignAgreement);
            result.RouteValues[nameof(ReservationsRouteModel.PreviousPage)].Should().Be(RouteNames.EmployerIndex);
        }
예제 #8
0
        public async Task Then_It_Filters_NonLevy_NonEoi_Employers(
            ReservationsRouteModel routeModel,
            List <Employer> expectedEmployers,
            [Frozen] Mock <IMediator> mockMediator,
            ProviderReservationsController controller)
        {
            var getLegalEntitiesResponse = new GetLegalEntitiesResponse
            {
                AccountLegalEntities = expectedEmployers.Select(arg => new AccountLegalEntity
                {
                    AccountLegalEntityPublicHashedId = arg.AccountLegalEntityPublicHashedId,
                    AccountId     = arg.AccountId,
                    IsLevy        = false,
                    AgreementType = AgreementType.Levy
                })
            };

            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockMediator
            .Setup(service => service.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GetTrustedEmployersResponse {
                Employers = expectedEmployers
            });

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

            var viewModel = result.Model as ChooseEmployerViewModel;

            viewModel.Employers.Count().Should().Be(0);
        }
예제 #9
0
        public async Task Then_Caches_New_Reservation(
            ReservationsRouteModel routeModel,
            ConfirmLegalEntityViewModel viewModel,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            long decodedAccountId,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            EmployerReservationsController controller)
        {
            var firstLegalEntity = getLegalEntitiesResponse.AccountLegalEntities.First();

            viewModel.LegalEntity = firstLegalEntity.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetLegalEntitiesQuery>(query => query.AccountId == decodedAccountId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockEncodingService
            .Setup(service => service.Decode(routeModel.EmployerAccountId, EncodingType.AccountId))
            .Returns(decodedAccountId);

            await controller.PostSelectLegalEntity(routeModel, viewModel);

            mockMediator.Verify(mediator => mediator.Send(
                                    It.Is <CacheReservationEmployerCommand>(command =>
                                                                            command.Id != Guid.Empty &&
                                                                            command.AccountId == firstLegalEntity.AccountId &&
                                                                            command.AccountLegalEntityId == firstLegalEntity.AccountLegalEntityId &&
                                                                            command.AccountLegalEntityName == firstLegalEntity.AccountLegalEntityName &&
                                                                            command.AccountLegalEntityPublicHashedId == firstLegalEntity.AccountLegalEntityPublicHashedId &&
                                                                            !command.EmployerHasSingleLegalEntity),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
예제 #10
0
        public async Task Then_error_returned_for_non_existing_account()
        {
            // Arrange
            const long accountId = 7;
            var        expected  = new GetLegalEntitiesResponse();

            _queryDispatcherMock.Setup(x => x.Send <GetLegalEntitiesRequest, GetLegalEntitiesResponse>(
                                           It.Is <GetLegalEntitiesRequest>(r => r.AccountId == accountId)))
            .ReturnsAsync(expected);

            // Act
            var actual = await _sut.GetLegalEntities(accountId) as NotFoundResult;

            // Assert
            actual.Should().NotBeNull();
        }
예제 #11
0
        public async Task And_Employer_Is_Non_Levy_And_Not_EOI_Then_Show_EOI_Holding_View(
            [ArrangeActionContext] ActionExecutingContext context,
            string employerAccountId,
            long decodedEmployerAccountId,
            string homeUrl,
            GetLegalEntitiesResponse legalEntitiesResponse,
            Mock <ActionExecutionDelegate> mockNext,
            [Frozen] ServiceParameters serviceParameters,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IExternalUrlHelper> mockUrlHelper,
            NonEoiNotPermittedFilterAttribute filter)
        {
            serviceParameters.AuthenticationType = AuthenticationType.Employer;
            context.HttpContext = new DefaultHttpContext();
            context.RouteData.Values.Add("employerAccountId", employerAccountId);
            foreach (var accountLegalEntity in legalEntitiesResponse.AccountLegalEntities)
            {
                accountLegalEntity.IsLevy        = false;
                accountLegalEntity.AgreementType = AgreementType.Levy;
            }
            mockEncodingService
            .Setup(service => service.Decode(
                       context.RouteData.Values["employerAccountId"].ToString(),
                       EncodingType.AccountId))
            .Returns(decodedEmployerAccountId);
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetLegalEntitiesQuery>(query => query.AccountId == decodedEmployerAccountId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(legalEntitiesResponse);
            mockUrlHelper
            .Setup(helper => helper.GenerateDashboardUrl(employerAccountId))
            .Returns(homeUrl);

            await filter.OnActionExecutionAsync(context, mockNext.Object);

            mockNext.Verify(next => next(), Times.Never());
            var result = context.Result as ViewResult;

            result.ViewName.Should().Be("NonEoiHolding");
            var model = result.Model as NonEoiHoldingViewModel;

            model.HomeLink.Should().Be(homeUrl);
        }
        public async Task Then_data_is_fetched_via_data_repository()
        {
            //Arrange
            var query    = _fixture.Create <GetLegalEntitiesRequest>();
            var data     = _fixture.CreateMany <LegalEntityDto>().ToList();
            var expected = new GetLegalEntitiesResponse
            {
                LegalEntities = data
            };

            _repositoryMock.Setup(x => x.GetList(dto => dto.AccountId == query.AccountId)).ReturnsAsync(data);

            //Act
            var result = await _sut.Handle(query, CancellationToken.None);

            //Assert
            result.Should().BeEquivalentTo(expected);
        }
예제 #13
0
        public async Task Then_If_There_Is_A_Reservation_Created_The_Entity_Is_Taken_From_The_Cache(
            ReservationsRouteModel routeModel,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            EmployerReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetLegalEntitiesQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);

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

            result.Should().NotBeNull();
            mockMediator.Verify(x => x.Send(It.Is <GetCachedReservationQuery>(c => c.Id.Equals(routeModel.Id)), It.IsAny <CancellationToken>()), Times.Once);
            var viewModel = result?.Model.Should().BeOfType <SelectLegalEntityViewModel>().Subject;

            viewModel.Should().NotBeNull();
        }
예제 #14
0
        public async Task Then_data_is_returned_for_existing_account()
        {
            // Arrange
            const long accountId = 7;
            var        expected  = new GetLegalEntitiesResponse {
                LegalEntities = _fixture.CreateMany <LegalEntityDto>()
            };

            _queryDispatcherMock.Setup(x => x.Send <GetLegalEntitiesRequest, GetLegalEntitiesResponse>(
                                           It.Is <GetLegalEntitiesRequest>(r => r.AccountId == accountId)))
            .ReturnsAsync(expected);

            // Act
            var actual = await _sut.GetLegalEntities(accountId) as OkObjectResult;

            // Assert
            actual.Should().NotBeNull();
            actual.Value.Should().Be(expected.LegalEntities);
        }
예제 #15
0
        public async Task Then_Returns_Populated_View_Model(
            ReservationsRouteModel routeModel,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            EmployerReservationsController controller)
        {
            routeModel.Id = null;

            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetLegalEntitiesQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);

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

            result.Should().NotBeNull();
            var viewModel = result?.Model.Should().BeOfType <SelectLegalEntityViewModel>().Subject;

            viewModel.Should().NotBeNull();
            viewModel?.RouteModel.Should().BeEquivalentTo(routeModel);
            viewModel?.LegalEntities.Should().BeEquivalentTo(getLegalEntitiesResponse.AccountLegalEntities, options => options.ExcludingMissingMembers());
        }
        public async Task And_Is_An_Employer_And_New_Reservation_Then_Redirects_To_EmployerApprenticeshipTraining_And_The_Cached_Reservation_Is_Created(
            ReservationsRouteModel routeModel,
            SelectReservationViewModel viewModel,
            long expectedAccountId,
            GetLegalEntitiesResponse employersResponse,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IEncodingService> encodingService,
            SelectReservationsController controller)
        {
            viewModel.SelectedReservationId = Guid.Parse(Guid.Empty.ToString().Replace("0", "9"));
            routeModel.Id    = Guid.Empty;
            routeModel.UkPrn = null;

            encodingService.Setup(x => x.Decode(routeModel.EmployerAccountId, EncodingType.AccountId)).Returns(expectedAccountId);
            var matchedEmployer = employersResponse.AccountLegalEntities.First();

            routeModel.AccountLegalEntityPublicHashedId = matchedEmployer.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetLegalEntitiesQuery>(c => c.AccountId.Equals(expectedAccountId)),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(employersResponse);

            var result = await controller.PostSelectReservation(routeModel, viewModel) as RedirectToRouteResult;

            result?.RouteName.Should().NotBeNull();
            result.RouteName.Should().Be(RouteNames.EmployerSelectCourseRuleCheck);
            result.RouteValues["EmployerAccountId"].Should().Be(routeModel.EmployerAccountId);
            result.RouteValues["id"].Should().NotBe(Guid.Empty);
            mockMediator.Verify(x =>
                                x.Send(It.Is <CacheReservationEmployerCommand>(
                                           c =>
                                           c.CohortRef.Equals(viewModel.CohortReference) &&
                                           c.AccountId.Equals(expectedAccountId) &&
                                           c.AccountLegalEntityName.Equals(matchedEmployer.AccountLegalEntityName) &&
                                           c.AccountLegalEntityPublicHashedId.Equals(matchedEmployer.AccountLegalEntityPublicHashedId) &&
                                           !c.Id.Equals(Guid.Empty) &&
                                           c.AccountLegalEntityId.Equals(matchedEmployer.AccountLegalEntityId))
                                       , It.IsAny <CancellationToken>()), Times.Once);
        }
        public async Task And_NonLevy_And_Not_Eoi_Then_Not_Valid(
            CacheReservationEmployerCommand command,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IFundingRulesService> rulesService,
            [Frozen] Mock <IMediator> mockMediator,
            CacheReservationEmployerCommandValidator validator)
        {
            ConfigureRulesServiceWithNoGlobalRules(rulesService);
            foreach (var accountLegalEntity in getLegalEntitiesResponse.AccountLegalEntities)
            {
                accountLegalEntity.IsLevy        = false;
                accountLegalEntity.AgreementType = AgreementType.Levy;
            }
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetLegalEntitiesQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);

            var result = await validator.ValidateAsync(command);

            result.IsValid().Should().BeTrue();
            result.FailedEoiCheck.Should().BeTrue();
        }
        public async Task Then_Redirects_To_Select_Course(
            ReservationsRouteModel routeModel,
            ConfirmLegalEntityViewModel viewModel,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            EmployerReservationsController controller)
        {
            var firstLegalEntity = getLegalEntitiesResponse.AccountLegalEntities.First();

            firstLegalEntity.AgreementSigned = true;
            viewModel.LegalEntity            = firstLegalEntity.AccountLegalEntityPublicHashedId;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);

            var result = await controller.PostSelectLegalEntity(routeModel, viewModel) as RedirectToRouteResult;

            result.Should().NotBeNull();
            result.RouteName.Should().Be(RouteNames.EmployerSelectCourse);
        }
        public async Task Then_It_Calls_ProviderPermissions_Service_To_Get_Employers(
            ReservationsRouteModel routeModel,
            IEnumerable <AccountLegalEntity> expectedEmployers,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            ProviderReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockMediator
            .Setup(m => m.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GetTrustedEmployersResponse {
                Employers = expectedEmployers
            });

            await controller.ChooseEmployer(routeModel);

            mockMediator.Verify(m => m.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()), Times.Once);
        }
예제 #20
0
        public async Task Then_Gets_Legal_Entities(
            ReservationsRouteModel routeModel,
            long decodedAccountId,
            GetLegalEntitiesResponse getLegalEntitiesResponse,
            [Frozen] Mock <IMediator> mockMediator,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            EmployerReservationsController controller)
        {
            routeModel.Id = null;
            mockEncodingService
            .Setup(service => service.Decode(routeModel.EmployerAccountId, EncodingType.AccountId))
            .Returns(decodedAccountId);
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetLegalEntitiesQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);

            await controller.SelectLegalEntity(routeModel);

            mockMediator.Verify(mediator => mediator.Send(
                                    It.Is <GetLegalEntitiesQuery>(query => query.AccountId == decodedAccountId),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
예제 #21
0
        public async Task And_Employer_Is_Non_Levy_And_Is_EOI_Then_Executes_Action(
            [ArrangeActionContext] ActionExecutingContext context,
            string employerAccountId,
            long decodedEmployerAccountId,
            GetLegalEntitiesResponse legalEntitiesResponse,
            Mock <ActionExecutionDelegate> mockNext,
            [Frozen] ServiceParameters serviceParameters,
            [Frozen] Mock <IEncodingService> mockEncodingService,
            [Frozen] Mock <IMediator> mockMediator,
            NonEoiNotPermittedFilterAttribute filter)
        {
            context.Result      = null;
            context.HttpContext = new DefaultHttpContext();

            serviceParameters.AuthenticationType = AuthenticationType.Employer;
            context.RouteData.Values.Add("employerAccountId", employerAccountId);
            foreach (var accountLegalEntity in legalEntitiesResponse.AccountLegalEntities)
            {
                accountLegalEntity.IsLevy        = false;
                accountLegalEntity.AgreementType = AgreementType.NonLevyExpressionOfInterest;
            }
            mockEncodingService
            .Setup(service => service.Decode(
                       context.RouteData.Values["employerAccountId"].ToString(),
                       EncodingType.AccountId))
            .Returns(decodedEmployerAccountId);
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetLegalEntitiesQuery>(query => query.AccountId == decodedEmployerAccountId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(legalEntitiesResponse);

            await filter.OnActionExecutionAsync(context, mockNext.Object);

            mockNext.Verify(next => next(), Times.Once);
            context.Result.Should().Be(null);
        }
예제 #22
0
        public async Task Then_It_Returns_The_Trusted_Employers(
            ReservationsRouteModel routeModel,
            IEnumerable <Employer> expectedEmployers,
            [Frozen] Mock <IMediator> mockMediator,
            ProviderReservationsController controller)
        {
            var getLegalEntitiesResponse = new GetLegalEntitiesResponse
            {
                AccountLegalEntities = expectedEmployers.Select(arg => new AccountLegalEntity
                {
                    AccountLegalEntityPublicHashedId = arg.AccountLegalEntityPublicHashedId,
                    AccountId     = arg.AccountId,
                    IsLevy        = false,
                    AgreementType = AgreementType.NonLevyExpressionOfInterest
                })
            };

            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <GetLegalEntitiesQuery>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(getLegalEntitiesResponse);
            mockMediator
            .Setup(service => service.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GetTrustedEmployersResponse {
                Employers = expectedEmployers
            });

            var result = await controller.ChooseEmployer(routeModel);

            var viewModel = result.Should().BeOfType <ViewResult>()
                            .Which.Model.Should().BeOfType <ChooseEmployerViewModel>()
                            .Subject;

            viewModel.Employers.Should().BeEquivalentTo(expectedEmployers);
        }