public async Task And_No_Ukprn_Then_Gets_List_Of_Reservations_For_Single_Employer_Account( ReservationsRouteModel routeModel, GetReservationsResult getReservationsResult, long decodedAccountId, [Frozen] Mock <IEncodingService> mockEncodingService, [Frozen] Mock <IMediator> mockMediator, ManageReservationsController controller) { routeModel.UkPrn = null; mockMediator .Setup(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getReservationsResult); mockEncodingService .Setup(service => service.Decode(routeModel.EmployerAccountId, EncodingType.AccountId)) .Returns(decodedAccountId); await controller.Manage(routeModel); mockMediator.Verify(mediator => mediator.Send( It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>()), Times.Never); mockMediator.Verify(mediator => mediator.Send( It.Is <GetReservationsQuery>(query => query.AccountId == decodedAccountId), It.IsAny <CancellationToken>()), Times.Once); }
public async Task And_Has_Ukprn_Then_Gets_List_Of_Reservations_For_All_Trusted_Employer_Accounts( ReservationsRouteModel routeModel, GetTrustedEmployersResponse getTrustedEmployersResponse, GetReservationsResult getReservationsResult, [Frozen] Mock <IMediator> mockMediator, ManageReservationsController controller) { mockMediator .Setup(mediator => mediator.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getTrustedEmployersResponse); mockMediator .Setup(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getReservationsResult); await controller.Manage(routeModel); mockMediator.Verify(mediator => mediator.Send( It.Is <GetTrustedEmployersQuery>(query => query.UkPrn == routeModel.UkPrn), It.IsAny <CancellationToken>()), Times.Once); foreach (var employer in getTrustedEmployersResponse.Employers) { mockMediator.Verify(mediator => mediator.Send( It.Is <GetReservationsQuery>(query => query.AccountId == employer.AccountId), It.IsAny <CancellationToken>()), Times.Once); } }
public async Task Then_Returns_List_Of_Reservations_For_Single_Employer_Account( ReservationsRouteModel routeModel, GetReservationsResult getReservationsResult, string hashedId, string expectedUrl, [Frozen] Mock <IEncodingService> mockEncodingService, [Frozen] Mock <IMediator> mockMediator, [Frozen] Mock <IExternalUrlHelper> mockExternalUrlHelper, ManageReservationsController controller) { mockMediator .Setup(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getReservationsResult); mockEncodingService .Setup(service => service.Encode(It.IsAny <long>(), EncodingType.PublicAccountLegalEntityId)) .Returns(hashedId); mockExternalUrlHelper .Setup(h => h.GenerateAddApprenticeUrl( It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <uint?>(), It.IsAny <DateTime>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(expectedUrl); getReservationsResult.Reservations.ToList().ForEach(c => { c.Status = ReservationStatus.Pending; c.IsExpired = false; }); var expectedReservations = new List <ReservationViewModel>(); expectedReservations.AddRange( getReservationsResult.Reservations.Select( reservation => new ReservationViewModel(reservation, expectedUrl, routeModel.UkPrn))); var result = await controller.EmployerManage(routeModel) as ViewResult; result.Should().NotBeNull(); result.ViewName.Should().Be(ViewNames.EmployerManage); var viewModel = result.Model as ManageViewModel; viewModel.Should().NotBeNull(); viewModel.Reservations.Should().BeEquivalentTo(expectedReservations, options => options.ExcludingMissingMembers()); }
public async Task And_Has_Ukprn_Then_Returns_List_Of_Reservations_For_All_Trusted_Employer_Accounts( [Frozen] ReservationsRouteModel routeModel, GetTrustedEmployersResponse getTrustedEmployersResponse, [ReservationsFromThisProvider] GetReservationsResult getReservationsResult1, [ReservationsFromThisProvider] GetReservationsResult getReservationsResult2, [ReservationsFromThisProvider] GetReservationsResult getReservationsResult3, string hashedId, string homeLink, [Frozen] ReservationsWebConfiguration config, [Frozen] Mock <IExternalUrlHelper> externalUrlHelper, [Frozen] Mock <IEncodingService> mockEncodingService, [Frozen] Mock <IMediator> mockMediator, ManageReservationsController controller) { mockMediator .Setup(mediator => mediator.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getTrustedEmployersResponse); mockMediator .SetupSequence(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getReservationsResult1) .ReturnsAsync(getReservationsResult2) .ReturnsAsync(getReservationsResult3); mockEncodingService .Setup(service => service.Encode(It.IsAny <long>(), EncodingType.PublicAccountLegalEntityId)) .Returns(hashedId); externalUrlHelper .Setup(x => x.GenerateDashboardUrl(routeModel.EmployerAccountId)).Returns(homeLink); var expectedReservations = new List <ReservationViewModel>(); expectedReservations.AddRange(getReservationsResult1.Reservations.Select(reservation => new ReservationViewModel(reservation, config.ApprenticeUrl, routeModel.UkPrn))); expectedReservations.AddRange(getReservationsResult2.Reservations.Select(reservation => new ReservationViewModel(reservation, config.ApprenticeUrl, routeModel.UkPrn))); expectedReservations.AddRange(getReservationsResult3.Reservations.Select(reservation => new ReservationViewModel(reservation, config.ApprenticeUrl, routeModel.UkPrn))); var result = await controller.Manage(routeModel) as ViewResult; result.Should().NotBeNull(); result.ViewName.Should().Be(ViewNames.ProviderManage); var viewModel = result.Model as ManageViewModel; viewModel.Should().NotBeNull(); viewModel.BackLink.Should().Be(homeLink); viewModel.Reservations.Should().BeEquivalentTo(expectedReservations, options => options.ExcludingMissingMembers().ExcludingFields().Excluding(c => c.ApprenticeUrl)); }
public async Task And_Has_Ukprn_And_Reservation_From_Different_Provider_Then_Not_Deletable( [Frozen] ReservationsRouteModel routeModel, GetTrustedEmployersResponse getTrustedEmployersResponse, GetReservationsResult getReservationResultDifferentProvider, [ReservationsFromThisProvider] GetReservationsResult getReservationsResult1, [ReservationsFromThisProvider] GetReservationsResult getReservationsResult2, string hashedId, [Frozen] Mock <IEncodingService> mockEncodingService, [Frozen] Mock <IMediator> mockMediator, ManageReservationsController controller) { mockMediator .Setup(mediator => mediator.Send(It.IsAny <GetTrustedEmployersQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getTrustedEmployersResponse); mockMediator .SetupSequence(mediator => mediator.Send(It.IsAny <GetReservationsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(getReservationsResult1) .ReturnsAsync(getReservationsResult2) .ReturnsAsync(getReservationResultDifferentProvider); mockEncodingService .Setup(service => service.Encode(It.IsAny <long>(), EncodingType.PublicAccountLegalEntityId)) .Returns(hashedId); var result = await controller.Manage(routeModel) as ViewResult; var viewModel = result.Model as ManageViewModel; var nonDeletableReservationIds = getReservationResultDifferentProvider.Reservations .Select(reservation => reservation.Id); viewModel.Reservations .Where(model => nonDeletableReservationIds.Contains(model.Id)) .Select(model => model.CanProviderDeleteReservation) .Should().AllBeEquivalentTo(false); viewModel.Reservations .Where(model => !nonDeletableReservationIds.Contains(model.Id)) .Select(model => model.CanProviderDeleteReservation) .Should().AllBeEquivalentTo(true); }