public async Task ShouldNotChangeEmployerDescriptionIfNotSpecifiedInCommand() { var expectedDescription = "initial description"; var vacancy = new Vacancy { Id = Guid.NewGuid(), EmployerDescription = expectedDescription, IsDeleted = false, Status = VacancyStatus.Draft, VacancyReference = 1234567890, TrainingProvider = new TrainingProvider { Ukprn = 12345678 } }; vacancy.OwnerType = OwnerType.Provider; var user = new VacancyUser(); var now = DateTime.Now; var message = new ReviewVacancyCommand(vacancy.Id, user, OwnerType.Provider); var sut = GetSut(vacancy.Id, vacancy, now); await sut.Handle(message, new CancellationToken()); vacancy.Status.Should().Be(VacancyStatus.Review); vacancy.ReviewDate.Should().Be(now); vacancy.ReviewByUser.Should().Be(user); vacancy.ReviewCount.Should().Be(1); vacancy.LastUpdatedDate.Should().Be(now); vacancy.LastUpdatedByUser.Should().Be(user); vacancy.EmployerDescription.Should().Be(expectedDescription); }
public async Task WhenVacancyNotFound_ShouldRaiseException() { var id = Guid.NewGuid(); var user = new VacancyUser(); var now = DateTime.Now; var expectedExceptionMessage = string.Format(ReviewVacancyCommandHandler.VacancyNotFoundExceptionMessageFormat, id); var message = new ReviewVacancyCommand(id, user, OwnerType.Provider); var sut = GetSut(id, null, now); var exception = await Assert.ThrowsAsync <ArgumentException>(async() => await sut.Handle(message, new CancellationToken())); exception.Message.Should().Be(expectedExceptionMessage); }
public async Task WhenOwnerHasChanged_ShouldRaiseException() { var vacancy = new Vacancy { Id = Guid.NewGuid(), EmployerDescription = "initial description", IsDeleted = false, Status = VacancyStatus.Draft, VacancyReference = 1234567890 }; vacancy.OwnerType = OwnerType.Employer; var user = new VacancyUser(); var now = DateTime.Now; var message = new ReviewVacancyCommand(vacancy.Id, user, OwnerType.Provider); var expectedExceptionMessage = string.Format(ReviewVacancyCommandHandler.InvalidOwnerExceptionMessageFormat, vacancy.Id, message.SubmissionOwner, vacancy.OwnerType); var sut = GetSut(vacancy.Id, vacancy, now); var exception = await Assert.ThrowsAsync <InvalidOperationException>(async() => await sut.Handle(message, new CancellationToken())); exception.Message.Should().Be(expectedExceptionMessage); }
private async Task <SubmitVacancyResponse> SubmitActionAsync(Vacancy vacancy, VacancyUser user) { var hasLegalEntityAgreementTask = _legalEntityAgreementService.HasLegalEntityAgreementAsync(vacancy.EmployerAccountId, vacancy.AccountLegalEntityPublicHashedId); var hasProviderAgreementTask = _trainingProviderAgreementService.HasAgreementAsync(vacancy.TrainingProvider.Ukprn.Value); await Task.WhenAll(hasLegalEntityAgreementTask, hasProviderAgreementTask); var hasProviderReviewPermission = await _providerRelationshipsService.HasProviderGotEmployersPermissionAsync(vacancy.TrainingProvider.Ukprn.Value, vacancy.EmployerAccountId, vacancy.AccountLegalEntityPublicHashedId, OperationType.RecruitmentRequiresReview); var response = new SubmitVacancyResponse { HasLegalEntityAgreement = hasLegalEntityAgreementTask.Result, HasProviderAgreement = hasProviderAgreementTask.Result, IsSubmitted = false }; if (response.HasLegalEntityAgreement && response.HasProviderAgreement) { if (hasProviderReviewPermission) { var command = new ReviewVacancyCommand(vacancy.Id, user, OwnerType.Provider); await _messaging.SendCommandAsync(command); response.IsSentForReview = true; } else { var command = new SubmitVacancyCommand(vacancy.Id, user, OwnerType.Provider); await _messaging.SendCommandAsync(command); response.IsSubmitted = true; } } return(response); }