public async Task Then_Gets_Filter_Values_From_Api( IndexRequest webRequest, long decodedAccountId, [Frozen] Mock <IEncodingService> mockEncodingService, GetApprenticeshipsResponse clientResponse, [Frozen] Mock <ICommitmentsApiClient> mockApiClient, IndexViewModelMapper mapper) { clientResponse.TotalApprenticeships = Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch + 1; mockApiClient .Setup(client => client.GetApprenticeships( It.IsAny <ApiRequests.GetApprenticeshipsRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(clientResponse); mockEncodingService .Setup(service => service.Decode(webRequest.AccountHashedId, EncodingType.AccountId)) .Returns(decodedAccountId); await mapper.Map(webRequest); mockApiClient.Verify(client => client.GetApprenticeshipsFilterValues( It.Is <ApiRequests.GetApprenticeshipFiltersRequest>(request => request.EmployerAccountId == decodedAccountId), It.IsAny <CancellationToken>()), Times.Once); }
private void SetUpApiReturn(long changeableUkprn) { _providerApiClientReturn = new[] { new ProviderRegistration { Ukprn = 1, LegalName = "Test Academy" }, new ProviderRegistration { Ukprn = changeableUkprn, LegalName = "Worst School" }, }; _commitmentGetApprenticeshipsReturn = new GetApprenticeshipsResponse { TotalApprenticeships = 3, Apprenticeships = new List <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse> { new GetApprenticeshipsResponse.ApprenticeshipDetailsResponse { PaymentStatus = PaymentStatus.Active, Uln = "1", AccountLegalEntityId = 1, ProviderId = 1, ProviderName = "Test Academy" }, new GetApprenticeshipsResponse.ApprenticeshipDetailsResponse { PaymentStatus = PaymentStatus.Active, Uln = "2", AccountLegalEntityId = 1, ProviderId = 1, ProviderName = "Test Academy" }, new GetApprenticeshipsResponse.ApprenticeshipDetailsResponse { PaymentStatus = PaymentStatus.Active, Uln = "3", AccountLegalEntityId = 1, ProviderId = changeableUkprn, ProviderName = "Worst School" } } }; _accountApiClientReturn = new List <TeamMemberViewModel> { new TeamMemberViewModel { Email = "*****@*****.**", Name = "Master Chef", UserRef = _user1Guid.ToString(), CanReceiveNotifications = true }, new TeamMemberViewModel { Email = "*****@*****.**", Name = "Flash Ketchup", UserRef = _user2Guid.ToString(), CanReceiveNotifications = true } }; }
public async Task ShouldMapApiValues( IndexRequest request, GetApprenticeshipsResponse apprenticeshipsResponse, GetApprenticeshipsFilterValuesResponse filtersResponse, ApprenticeshipDetailsViewModel expectedViewModel, [Frozen] Mock <IModelMapper> modelMapper, [Frozen] Mock <ICommitmentsApiClient> mockApiClient, IndexViewModelMapper mapper) { //Arrange apprenticeshipsResponse.TotalApprenticeships = Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch + 1; mockApiClient .Setup(x => x.GetApprenticeships( It.IsAny <ApiRequests.GetApprenticeshipsRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(apprenticeshipsResponse); mockApiClient .Setup(client => client.GetApprenticeshipsFilterValues( It.IsAny <ApiRequests.GetApprenticeshipFiltersRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(filtersResponse); modelMapper .Setup(x => x.Map <ApprenticeshipDetailsViewModel>(It.IsAny <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse>())) .ReturnsAsync(expectedViewModel); //Act var viewModel = await mapper.Map(request); //Assert Assert.IsNotNull(viewModel); Assert.AreEqual(request.ProviderId, viewModel.ProviderId); viewModel.Apprenticeships.Should().AllBeEquivalentTo(expectedViewModel); Assert.AreEqual(apprenticeshipsResponse.TotalApprenticeshipsFound, viewModel.FilterModel.TotalNumberOfApprenticeshipsFound); Assert.AreEqual(apprenticeshipsResponse.TotalApprenticeshipsWithAlertsFound, viewModel.FilterModel.TotalNumberOfApprenticeshipsWithAlertsFound); Assert.AreEqual(apprenticeshipsResponse.TotalApprenticeships, viewModel.FilterModel.TotalNumberOfApprenticeships); Assert.AreEqual(apprenticeshipsResponse.PageNumber, viewModel.FilterModel.PageNumber); Assert.AreEqual(request.ReverseSort, viewModel.FilterModel.ReverseSort); Assert.AreEqual(request.SortField, viewModel.FilterModel.SortField); Assert.AreEqual(filtersResponse.EmployerNames, viewModel.FilterModel.EmployerFilters); Assert.AreEqual(filtersResponse.CourseNames, viewModel.FilterModel.CourseFilters); Assert.AreEqual(filtersResponse.StartDates, viewModel.FilterModel.StartDateFilters); Assert.AreEqual(filtersResponse.EndDates, viewModel.FilterModel.EndDateFilters); Assert.AreEqual(request.SearchTerm, viewModel.FilterModel.SearchTerm); Assert.AreEqual(request.SelectedEmployer, viewModel.FilterModel.SelectedEmployer); Assert.AreEqual(request.SelectedCourse, viewModel.FilterModel.SelectedCourse); Assert.AreEqual(request.SelectedStatus, viewModel.FilterModel.SelectedStatus); Assert.AreEqual(request.SelectedStartDate, viewModel.FilterModel.SelectedStartDate); Assert.AreEqual(request.SelectedEndDate, viewModel.FilterModel.SelectedEndDate); Assert.AreEqual(request.SelectedApprenticeConfirmation, viewModel.FilterModel.SelectedApprenticeConfirmation); }
public void Setup() { _apiResponse = _fixture.Create <GetApprenticeshipsResponse>(); _apiClient = new Mock <ICommitmentsV2ApiClient <CommitmentsV2ApiConfiguration> >(); _apiClient.Setup(x => x.Get <GetApprenticeshipsResponse>(It.IsAny <GetApprenticeshipsRequest>())) .ReturnsAsync(_apiResponse); _courseList = _fixture.Create <List <Course> >(); _courseLookupService = new Mock <ICourseLookupService>(); _courseLookupService.Setup(x => x.GetAllCourses()).ReturnsAsync(_courseList); _apiResponse.Apprenticeships.ForEach(x => x.CourseCode = _courseList.First().Id); _handler = new GetApprenticeshipsQueryHandler(_apiClient.Object, _courseLookupService.Object); _query = _fixture.Create <GetApprenticeshipsQuery>(); }
public async Task WhenCommitmentDoNotExist_ThenReturnEmptyString() { var apiClientMock = new Mock <ICommitmentsApiClient>(); var invalidSearchTerm = "000"; var emptyResponse = new GetApprenticeshipsResponse { Apprenticeships = Enumerable.Empty <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse>() }; apiClientMock .Setup(a => a .GetApprenticeships(It.Is <GetApprenticeshipsRequest>(x => x.SearchTerm == invalidSearchTerm), It.IsAny <CancellationToken>())).ReturnsAsync(emptyResponse); var sut = new CommitmentsService(apiClientMock.Object); var result = await sut.GetApprenticesName(invalidSearchTerm, 123); Assert.IsEmpty(result); }
public async Task And_TotalApprentices_Less_Than_NumberOfApprenticesRequiredForSearch_Then_Not_Get_Filter_Values_From_Api( IndexRequest webRequest, GetApprenticeshipsResponse clientResponse, [Frozen] Mock <ICommitmentsApiClient> mockApiClient, IndexViewModelMapper mapper) { clientResponse.TotalApprenticeships = Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch - 1; mockApiClient .Setup(client => client.GetApprenticeships( It.IsAny <ApiRequests.GetApprenticeshipsRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(clientResponse); await mapper.Map(webRequest); mockApiClient.Verify(client => client.GetApprenticeshipsFilterValues( It.IsAny <ApiRequests.GetApprenticeshipFiltersRequest>(), It.IsAny <CancellationToken>()), Times.Never); }
public async Task ShouldMapStatusValues( IndexRequest request, GetApprenticeshipsResponse apprenticeshipsResponse, GetApprenticeshipsFilterValuesResponse filtersResponse, ApprenticeshipDetailsViewModel expectedViewModel, [Frozen] Mock <IMapper <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse, ApprenticeshipDetailsViewModel> > detailsViewModelMapper, [Frozen] Mock <ICommitmentsApiClient> mockApiClient, IndexViewModelMapper mapper) { //Arrange apprenticeshipsResponse.TotalApprenticeships = Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch + 1; mockApiClient .Setup(x => x.GetApprenticeships( It.IsAny <ApiRequests.GetApprenticeshipsRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(apprenticeshipsResponse); mockApiClient .Setup(client => client.GetApprenticeshipsFilterValues( It.IsAny <ApiRequests.GetApprenticeshipFiltersRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(filtersResponse); detailsViewModelMapper .Setup(x => x.Map(It.IsAny <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse>())) .ReturnsAsync(expectedViewModel); //Act var viewModel = await mapper.Map(request); Assert.IsTrue(viewModel.FilterModel.StatusFilters.Contains(ApprenticeshipStatus.Live)); Assert.IsTrue(viewModel.FilterModel.StatusFilters.Contains(ApprenticeshipStatus.Paused)); Assert.IsTrue(viewModel.FilterModel.StatusFilters.Contains(ApprenticeshipStatus.Stopped)); Assert.IsTrue(viewModel.FilterModel.StatusFilters.Contains(ApprenticeshipStatus.WaitingToStart)); Assert.IsTrue(viewModel.FilterModel.StatusFilters.Contains(ApprenticeshipStatus.Completed)); Assert.IsFalse(viewModel.FilterModel.StatusFilters.Contains(ApprenticeshipStatus.Unknown)); }
public async Task ThenWillSetPageNumberToLastOneIfRequestPageNumberIsTooHigh( IndexRequest request, GetApprenticeshipsResponse apprenticeshipsResponse, GetApprenticeshipsFilterValuesResponse filtersResponse, ApprenticeshipDetailsViewModel expectedViewModel, [Frozen] Mock <IMapper <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse, ApprenticeshipDetailsViewModel> > detailsViewModelMapper, [Frozen] Mock <ICommitmentsApiClient> mockApiClient, IndexViewModelMapper mapper) { //Arrange apprenticeshipsResponse.PageNumber = (int)Math.Ceiling((double)apprenticeshipsResponse.TotalApprenticeshipsFound / Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage); request.PageNumber = apprenticeshipsResponse.PageNumber + 10; apprenticeshipsResponse.TotalApprenticeships = Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch + 1; mockApiClient .Setup(x => x.GetApprenticeships( It.IsAny <ApiRequests.GetApprenticeshipsRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(apprenticeshipsResponse); mockApiClient .Setup(client => client.GetApprenticeshipsFilterValues( It.IsAny <ApiRequests.GetApprenticeshipFiltersRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(filtersResponse); detailsViewModelMapper .Setup(x => x.Map(It.IsAny <GetApprenticeshipsResponse.ApprenticeshipDetailsResponse>())) .ReturnsAsync(expectedViewModel); //Act var viewModel = await mapper.Map(request); //Assert Assert.AreEqual(1, viewModel.FilterModel.PageLinks.Count(x => x.IsCurrent.HasValue && x.IsCurrent.Value)); Assert.IsTrue(viewModel.FilterModel.PageLinks.Last().IsCurrent); }
public async Task ThenWillSetPageNumberToLastOneIfRequestPageNumberIsTooHigh( IndexRequest webRequest, GetApprenticeshipsResponse clientResponse, [Frozen] Mock <ICommitmentsApiClient> mockApiClient, IndexViewModelMapper mapper) { clientResponse.PageNumber = (int)Math.Ceiling((double)clientResponse.TotalApprenticeshipsFound / Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage); webRequest.PageNumber = clientResponse.PageNumber + 10; clientResponse.TotalApprenticeships = Constants.ApprenticesSearch.NumberOfApprenticesRequiredForSearch - 1; mockApiClient .Setup(client => client.GetApprenticeships( It.IsAny <ApiRequests.GetApprenticeshipsRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(clientResponse); var result = await mapper.Map(webRequest); Assert.AreEqual(1, result.FilterModel.PageLinks.Count(x => x.IsCurrent.HasValue && x.IsCurrent.Value)); Assert.IsTrue(result.FilterModel.PageLinks.Last().IsCurrent); }
public async Task WhenCommitmentExists_ThenReturnApprenticesName() { var firstName = "firstName"; var lastName = "lastName"; var validSearchTerm = "123"; var apiClientMock = new Mock <ICommitmentsApiClient>(); var populatedResponse = new GetApprenticeshipsResponse { Apprenticeships = new[] { new GetApprenticeshipsResponse.ApprenticeshipDetailsResponse() { FirstName = firstName, LastName = lastName } } }; apiClientMock .Setup(a => a .GetApprenticeships(It.Is <GetApprenticeshipsRequest>(x => x.SearchTerm == validSearchTerm), It.IsAny <CancellationToken>())).ReturnsAsync(populatedResponse); var sut = new CommitmentsService(apiClientMock.Object); var result = await sut.GetApprenticesName(validSearchTerm, 123); Assert.AreEqual($"{firstName} {lastName}", result); }
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 })); }