public async Task <SearchApprenticeshipsResult> SearchApprenticeships(SearchApprenticeshipsRequest request, CancellationToken token) { try { CommitmentsV2.Types.ApprenticeshipStatus?status = null; if (int.TryParse(request.ApprenticeshipStatus, out var statusInt)) { status = (CommitmentsV2.Types.ApprenticeshipStatus)statusInt; } var result = await _commitmentApi.GetApprenticeships(new GetApprenticeshipsRequest { CourseName = request.CourseName, EmployerName = request.EmployerName, ProviderName = request.ProviderName, ProviderId = request.Ukprn, SearchTerm = request.SearchTerm, StartDate = request.StartDate, EndDate = request.EndDate, Status = status, PageNumber = 1, PageItemCount = 99_999 //HACK: The CommitmentsV2 API has a "DownLoad" limit applied to it when you ask for page 0 that returns only apprenticeships with an EndDate within the last 12 months. This hack circumvents having that limit applied }, token); return(new SearchApprenticeshipsResult { Apprenticeships = _mapper.Map <IEnumerable <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse>, List <ApprenticeshipDto> >(result.Apprenticeships), ResultCount = result.TotalApprenticeshipsFound }); }
public async Task SearchApprenticeships_ReturnsSearchResults_WhenApiCallSucceeds([Frozen] Mock <ICommitmentsApiClient> apiClient, EmployerCommitmentsService sut, SearchApprenticeshipsRequest request, GetApprenticeshipsResponse response) { //Given apiClient.Setup(s => s.GetApprenticeships(It.Is <GetApprenticeshipsRequest>(s => s.CourseName == request.CourseName && s.EmployerName == request.EmployerName && s.ProviderName == request.ProviderName && s.ProviderId == request.Ukprn && s.SearchTerm == request.SearchTerm && s.StartDate == request.StartDate && s.EndDate == request.EndDate) , It.IsAny <CancellationToken>())).ReturnsAsync(response); //When var result = await sut.SearchApprenticeships(request, new CancellationToken()); //Then result.HasError.Should().BeFalse(); result.Apprenticeships.Count.Should().Be(response.Apprenticeships.Count()); result.Apprenticeships.Should().BeEquivalentTo(response.Apprenticeships. Select(s => new { s.ApprenticeshipStatus, s.EndDate, s.StartDate, s.CourseName, s.ProviderName, Ukprn = s.ProviderId, s.EmployerName, s.Uln, s.LastName, s.FirstName, s.Id, s.AccountLegalEntityId, s.ProviderRef, s.EmployerRef, s.DateOfBirth, s.PauseDate, s.CohortReference })); }
public async Task SearchApprenticeships_ReturnsErrorMessage_WhenApiCallFails([Frozen] Mock <ICommitmentsApiClient> apiClient, EmployerCommitmentsService sut, SearchApprenticeshipsRequest request, List <ErrorDetail> errors) { //Given apiClient.Setup(s => s.GetApprenticeships(It.Is <GetApprenticeshipsRequest>(s => s.CourseName == request.CourseName && s.EmployerName == request.EmployerName && s.ProviderName == request.ProviderName && s.ProviderId == request.Ukprn && s.SearchTerm == request.SearchTerm && s.StartDate == request.StartDate && s.EndDate == request.EndDate) , It.IsAny <CancellationToken>())).Throws(new CommitmentsApiModelException(errors)); //When var result = await sut.SearchApprenticeships(request, new CancellationToken()); //Then var errorMessage = GetErrorMessages(errors); result.ErrorMessage.Should().Be(errorMessage); }