Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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));
        }
Example #8
0
        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);
        }
Example #9
0
        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
            }));
        }