예제 #1
0
        public async Task And_The_AccountLegalEntityPublicHashedId_And_Ukprn_Is_Not_Null_And_AccountPublicHashedId_Is_Null_Then_Permission_Checked(
            GetVacanciesQuery query,
            GetVacanciesResponse apiResponse,
            AccountLegalEntityItem accountLegalEntityItem,
            GetStandardsListResponse courses,
            [Frozen] Mock <ICourseService> courseService,
            [Frozen] Mock <IAccountLegalEntityPermissionService> accountLegalEntityPermissionService,
            [Frozen] Mock <IFindApprenticeshipApiClient <FindApprenticeshipApiConfiguration> > apiClient,
            GetVacanciesQueryHandler handler)
        {
            query.Routes            = null;
            query.AccountIdentifier = new AccountIdentifier("Employer-ABC123-Product");
            var expectedGetRequest = new GetVacanciesRequest(query.PageNumber, query.PageSize,
                                                             query.AccountLegalEntityPublicHashedId, query.Ukprn, query.AccountPublicHashedId, query.StandardLarsCode,
                                                             query.NationWideOnly, query.Lat, query.Lon, query.DistanceInMiles, new List <string>(), query.PostedInLastNumberOfDays, query.Sort);

            courseService.Setup(x => x.MapRoutesToCategories(query.Routes)).Returns(new List <string>());
            apiClient.Setup(x =>
                            x.Get <GetVacanciesResponse>(It.Is <GetVacanciesRequest>(c =>
                                                                                     c.GetUrl.Equals(expectedGetRequest.GetUrl)))).ReturnsAsync(apiResponse);
            accountLegalEntityPermissionService
            .Setup(x => x.GetAccountLegalEntity(It.Is <AccountIdentifier>(c => c.Equals(query.AccountIdentifier)),
                                                query.AccountLegalEntityPublicHashedId)).ReturnsAsync(accountLegalEntityItem);
            courseService.Setup(x => x.GetActiveStandards <GetStandardsListResponse>(nameof(GetStandardsListResponse))).ReturnsAsync(courses);

            var actual = await handler.Handle(query, CancellationToken.None);

            actual.Vacancies.Should().BeEquivalentTo(apiResponse.ApprenticeshipVacancies);
        }
예제 #2
0
        public async Task Then_The_Command_Is_Handled_With_Account_Info_looked_Up_For_Provider_And_Api_Called_With_Response(
            int accountIdentifierId,
            string responseValue,
            CreateVacancyCommand command,
            AccountLegalEntityItem accountLegalEntityItem,
            [Frozen] Mock <IAccountLegalEntityPermissionService> accountLegalEntityPermissionService,
            [Frozen] Mock <IRecruitApiClient <RecruitApiConfiguration> > mockRecruitApiClient,
            CreateVacancyCommandHandler handler)
        {
            //Arrange
            command.AccountIdentifier = new AccountIdentifier($"Provider-{accountIdentifierId}-Product");
            command.IsSandbox         = false;
            var apiResponse = new ApiResponse <string>(responseValue, HttpStatusCode.Created, "");

            mockRecruitApiClient.Setup(x =>
                                       x.PostWithResponseCode <string>(
                                           It.Is <PostVacancyRequest>(c =>
                                                                      c.PostUrl.Contains($"{command.Id.ToString()}?ukprn={command.PostVacancyRequestData.User.Ukprn}&userEmail=") &&
                                                                      ((PostVacancyRequestData)c.Data).Title.Equals(command.PostVacancyRequestData.Title) &&
                                                                      ((PostVacancyRequestData)c.Data).LegalEntityName.Equals(accountLegalEntityItem.Name) &&
                                                                      ((PostVacancyRequestData)c.Data).EmployerAccountId.Equals(accountLegalEntityItem.AccountHashedId)
                                                                      )))
            .ReturnsAsync(apiResponse);
            accountLegalEntityPermissionService
            .Setup(x => x.GetAccountLegalEntity(It.Is <AccountIdentifier>(c => c.Equals(command.AccountIdentifier)),
                                                command.PostVacancyRequestData.AccountLegalEntityPublicHashedId))
            .ReturnsAsync(accountLegalEntityItem);

            //Act
            var result = await handler.Handle(command, CancellationToken.None);

            //Assert
            result.VacancyReference.Should().Be(apiResponse.Body);
            mockRecruitApiClient.Verify(client => client.PostWithResponseCode <string>(It.IsAny <PostValidateVacancyRequest>()),
                                        Times.Never);
        }