private Task <SearchApprenticeshipVacanciesResponse> InternalSearchApprenticeshipVacanciesAsync( VacancySearchParameters parameters) { _logger.Info($"Searching apprenticeships with following parameters: {parameters}"); var searchClientParameters = GetSearchClientParameters(parameters); ApprenticeshipSearchResponse searchClientResponse; try { searchClientResponse = _apprenticeshipSearchClient.Search(searchClientParameters); } catch (Exception e) { throw new InfrastructureException(e); } var searchResponse = new SearchApprenticeshipVacanciesResponse() { TotalMatched = searchClientResponse.Total, TotalReturned = searchClientResponse.Results.Count(), TotalPages = searchClientResponse.TotalPages, CurrentPage = parameters.PageNumber, SortBy = parameters.SortBy, ApprenticeshipSummaries = searchClientResponse.Results.Select(GetApprenticeshipSummary) }; return(Task.FromResult(searchResponse)); }
public async Task Setup() { var fixture = new Fixture().Customize(new AutoMoqCustomization()); var pageSize = fixture.Create <int>(); _expectedTotal = fixture.Create <int>(); _expectedCurrentPage = fixture.Create <int>(); _expectedSortBy = SortBy.Distance; _vacancySearchParameters = new VacancySearchParameters { PageSize = pageSize, PageNumber = _expectedCurrentPage, SortBy = _expectedSortBy, Latitude = 32, Longitude = 2, DistanceInMiles = 342 }; _expectedTotalPages = Math.Ceiling((double)_expectedTotal / pageSize); _apprenticeshipResults = fixture.Create <List <ApprenticeshipSearchResult> >(); _mockSearchClient = fixture.Freeze <Mock <IApprenticeshipSearchClient> >(); _mockSearchClient.Setup(c => c.Search(It.IsAny <ApprenticeshipSearchRequestParameters>())) .Returns((ApprenticeshipSearchRequestParameters r) => new ApprenticeshipSearchResponse( _expectedTotal, _apprenticeshipResults, Enumerable.Empty <AggregationResult>(), r)); _apprenticeshipSearchService = fixture.Create <ApprenticeshipSearchService>(); _actualResponse = await _apprenticeshipSearchService.SearchApprenticeshipVacanciesAsync(_vacancySearchParameters); }
public async Task Setup() { var fixture = new Fixture().Customize(new AutoMoqCustomization()); _expectedResponse = new SearchApprenticeshipVacanciesResponse(); _validRequest = new SearchApprenticeshipVacanciesRequest(); _expectedParameters = new VacancySearchParameters(); _validatorMock = fixture.Freeze <Mock <IValidator <SearchApprenticeshipVacanciesRequest> > >(); _validatorMock .Setup(validator => validator.ValidateAsync(_validRequest, It.IsAny <CancellationToken>())) .ReturnsAsync(new ValidationResult()); _mockMapper = fixture.Freeze <Mock <IVacancySearchParametersMapper> >(); _mockMapper .Setup(mapper => mapper.Convert(It.IsAny <SearchApprenticeshipVacanciesRequest>())) .Returns(_expectedParameters); _mockSearchService = fixture.Freeze <Mock <IApprenticeshipSearchService> >(); _mockSearchService .Setup(service => service.SearchApprenticeshipVacanciesAsync(It.IsAny <VacancySearchParameters>())) .ReturnsAsync(_expectedResponse); _handler = fixture.Create <SearchApprenticeshipVacanciesQueryHandler>(); _response = await _handler.Handle(_validRequest); }
public void AndALocationFieldIsNull_ThenReturnsFalse() { var parameters = new VacancySearchParameters { Longitude = 23.423, DistanceInMiles = 43 }; parameters.HasGeoSearchFields.Should().BeFalse(); }
public Task <SearchApprenticeshipVacanciesResponse> SearchApprenticeshipVacanciesAsync( VacancySearchParameters parameters) { var retry = PollyRetryPolicies.GetFixedIntervalPolicy((exception, time, retryCount, context) => { _logger.Warn($"Error searching for apprenticeships in search index: ({exception.Message}). Retrying... attempt {retryCount}"); }); return(retry.ExecuteAsync(() => InternalSearchApprenticeshipVacanciesAsync(parameters))); }
public void AndAllLocationFieldsNotNull_ThenReturnsTrue() { var parameters = new VacancySearchParameters { Latitude = -34, Longitude = 23.423, DistanceInMiles = 43 }; parameters.HasGeoSearchFields.Should().BeTrue(); }
public void AndProviderUkprnIsNotNull_ThenProviderUkprnWritten() { var ukprn = 88888888; var parameters = new VacancySearchParameters { Ukprn = ukprn }; var formattedParams = parameters.ToString(); formattedParams.Should().Contain($"{nameof(parameters.Ukprn)}: {ukprn}{Environment.NewLine}"); }
public void AndDistanceInMilesIsNotNull_ThenDistanceInMilesWritten() { var distanceInMiles = 234; var parameters = new VacancySearchParameters { DistanceInMiles = distanceInMiles }; var formattedParams = parameters.ToString(); formattedParams.Should().Contain($"{nameof(parameters.DistanceInMiles)}: {distanceInMiles}{Environment.NewLine}"); }
public void AndDistanceInMilesIsNull_ThenDistanceInMilesNotWritten() { var distanceInMiles = (int?)null; var parameters = new VacancySearchParameters { DistanceInMiles = distanceInMiles }; var formattedParams = parameters.ToString(); formattedParams.Should().NotContain($"{nameof(parameters.DistanceInMiles)}: {distanceInMiles}"); }
public void AndLongitudeIsNotNull_ThenLongitudeWritten() { var longitude = 23.234; var parameters = new VacancySearchParameters { Longitude = longitude }; var formattedParams = parameters.ToString(); formattedParams.Should().Contain($"{nameof(parameters.Longitude)}: {longitude}{Environment.NewLine}"); }
public void AndLongitudeIsNull_ThenLongitudeNotWritten() { var longitude = (double?)null; var parameters = new VacancySearchParameters { Longitude = longitude }; var formattedParams = parameters.ToString(); formattedParams.Should().NotContain($"{nameof(parameters.Longitude)}: {longitude}"); }
private ApprenticeshipSearchRequestParameters GetSearchClientParameters(VacancySearchParameters parameters) { var searchClientParameters = new ApprenticeshipSearchRequestParameters { FrameworkLarsCodes = parameters.FrameworkLarsCodes, StandardLarsCodes = parameters.StandardLarsCodes, PageSize = parameters.PageSize, PageNumber = parameters.PageNumber, FromDate = parameters.FromDate, VacancyLocationType = string.IsNullOrEmpty(parameters.LocationType) ? VacancyLocationType.Unknown : (VacancyLocationType)Enum.Parse(typeof(VacancyLocationType), parameters.LocationType), Longitude = parameters.Longitude, Latitude = parameters.Latitude, SearchRadius = parameters.DistanceInMiles, CalculateSubCategoryAggregations = false, Ukprn = parameters.Ukprn }; switch (parameters.SortBy) { case SortBy.Age: searchClientParameters.SortType = VacancySearchSortType.RecentlyAdded; break; case SortBy.ExpectedStartDate: searchClientParameters.SortType = VacancySearchSortType.ExpectedStartDate; break; case SortBy.Distance: searchClientParameters.SortType = VacancySearchSortType.Distance; break; default: searchClientParameters.SortType = VacancySearchSortType.Relevancy; break; } return(searchClientParameters); }
public IHttpActionResult Get([FromBody] VacancySearchParameters vacancyParams) { if (ModelState.IsValid) { var tupleResult = service.Get( vacancyParams.UserId, vacancyParams.IndustryId, vacancyParams.Title, vacancyParams.VacancyState, vacancyParams.TypeOfEmployment, vacancyParams.LevelIds, vacancyParams.CityIds, vacancyParams.Current, vacancyParams.Size ); var vacanciesViewModel = tupleResult.Item1; var total = tupleResult.Item2; var ret = new { Vacancies = vacanciesViewModel, Current = vacancyParams.Current, Size = vacancyParams.Size, Total = total }; return(Json(ret, BOT_SERIALIZER_SETTINGS)); } return(BadRequest(ModelState)); }