public async Task GivenApprovedVacancyReviewCommand_AndVacancyHasBeenTransferredSinceReviewWasCreated_ThenDoNotRaiseVacancyApprovedEventAndCloseVacancy(TransferReason transferReason, ClosureReason expectedClosureReason) { var transferInfo = new TransferInfo { Reason = transferReason }; var existingVacancy = _autoFixture.Build <Vacancy>() .With(x => x.TransferInfo, transferInfo) .Create(); _mockVacancyRepository.Setup(x => x.GetVacancyAsync(existingVacancy.VacancyReference.Value)).ReturnsAsync(existingVacancy); _mockVacancyReviewRepository.Setup(x => x.GetAsync(_existingReviewId)).ReturnsAsync(new VacancyReview { Id = _existingReviewId, CreatedDate = _mockTimeProvider.Object.Now.AddHours(-5), Status = ReviewStatus.UnderReview, VacancyReference = existingVacancy.VacancyReference.Value, VacancySnapshot = new Vacancy() }); var command = new ApproveVacancyReviewCommand(_existingReviewId, "comment", new List <ManualQaFieldIndicator>(), new List <Guid>()); await _sut.Handle(command, CancellationToken.None); _mockVacancyReviewRepository.Verify(x => x.UpdateAsync(It.Is <VacancyReview>(r => r.Id == _existingReviewId)), Times.Once); _mockMessaging.Verify(x => x.PublishEvent(It.IsAny <VacancyReviewApprovedEvent>()), Times.Never); existingVacancy.Status.Should().Be(VacancyStatus.Closed); existingVacancy.ClosureReason.Should().Be(expectedClosureReason); _mockVacancyRepository.Verify(x => x.UpdateAsync(existingVacancy), Times.Once); _mockCommunicationQueueService.Verify(c => c.AddMessageAsync(It.Is <CommunicationRequest>(r => r.RequestType == CommunicationConstants.RequestType.ProviderBlockedEmployerNotificationForLiveVacancies))); }
public async Task GivenApprovedVacancyReviewCommand_AndProviderHasBeenBlockedSinceReviewWasCreated_ThenRaiseUpdateEmployerDashboardEvent() { var existingVacancy = _autoFixture.Build <Vacancy>() .With(x => x.EmployerAccountId, EmployerAccountId) .Without(x => x.TransferInfo) .With(x => x.TrainingProvider, new TrainingProvider { Ukprn = BlockedProviderUkprn }) .Create(); _mockVacancyRepository.Setup(x => x.GetVacancyAsync(existingVacancy.VacancyReference.Value)).ReturnsAsync(existingVacancy); _mockVacancyReviewRepository.Setup(x => x.GetAsync(_existingReviewId)).ReturnsAsync(new VacancyReview { Id = _existingReviewId, CreatedDate = _mockTimeProvider.Object.Now.AddHours(-5), Status = ReviewStatus.UnderReview, VacancyReference = existingVacancy.VacancyReference.Value, VacancySnapshot = new Vacancy() }); _mockBlockedOrganisationQuery.Setup(b => b.GetByOrganisationIdAsync(BlockedProviderUkprn.ToString())) .ReturnsAsync(new BlockedOrganisation { BlockedStatus = BlockedStatus.Blocked }); var command = new ApproveVacancyReviewCommand(_existingReviewId, "comment", new List <ManualQaFieldIndicator>(), new List <Guid>()); await _sut.Handle(command, CancellationToken.None); _dashboardService.Verify(x => x.ReBuildDashboardAsync(EmployerAccountId), Times.Once); }
public async Task GivenApprovedVacancyReviewCommand_AndVacancyReviewIsNotUnderReview_ThenDoNotProcessApprovingReview(ReviewStatus reviewStatus) { _mockVacancyReviewRepository.Setup(x => x.GetAsync(_existingReviewId)).ReturnsAsync(new VacancyReview { Status = reviewStatus }); var command = new ApproveVacancyReviewCommand(_existingReviewId, "comment", new List <ManualQaFieldIndicator>(), new List <Guid>()); await _sut.Handle(command, CancellationToken.None); _mockVacancyReviewRepository.Verify(x => x.UpdateAsync(It.IsAny <VacancyReview>()), Times.Never); _mockMessaging.Verify(x => x.PublishEvent(It.IsAny <VacancyReviewApprovedEvent>()), Times.Never); }