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);
        }