public async Task ShouldNotChangeEmployerDescriptionIfNotSpecifiedInCommand() { var expectedDescription = "initial description"; var vacancy = new Vacancy { Id = Guid.NewGuid(), EmployerDescription = expectedDescription, IsDeleted = false, Status = VacancyStatus.Draft, VacancyReference = 1234567890 }; vacancy.OwnerType = OwnerType.Provider; var user = new VacancyUser(); var now = DateTime.Now; var message = new SubmitVacancyCommand(vacancy.Id, user, OwnerType.Provider); var sut = GetSut(vacancy.Id, vacancy, now); await sut.Handle(message, new CancellationToken()); vacancy.Status.Should().Be(VacancyStatus.Submitted); vacancy.SubmittedDate.Should().Be(now); vacancy.SubmittedByUser.Should().Be(user); vacancy.LastUpdatedDate.Should().Be(now); vacancy.LastUpdatedByUser.Should().Be(user); vacancy.EmployerDescription.Should().Be(expectedDescription); }
public async Task Handle_ShouldNotChangeEmployerDescriptionIfNotSpecifiedInCommand() { var vacancy = new Vacancy { Id = Guid.NewGuid(), EmployerDescription = "initial description", IsDeleted = false, Status = VacancyStatus.Draft, VacancyReference = 1234567890 }; var user = new VacancyUser(); var now = DateTime.Now; var handler = GetSubmitVacancyCommandHandler(vacancy, now); var message = new SubmitVacancyCommand(vacancy.Id, user); var cancel = new CancellationToken(); await handler.Handle(message, cancel); vacancy.Status.Should().Be(VacancyStatus.Submitted); vacancy.SubmittedDate.Should().Be(now); vacancy.SubmittedByUser.Should().Be(user); vacancy.LastUpdatedDate.Should().Be(now); vacancy.LastUpdatedByUser.Should().Be(user); vacancy.EmployerDescription.Should().Be("initial description"); }
public async Task GivenEmployerDescription_ThenShouldUpdateVacancyWithThatDescripion() { var expectedDescription = "updated description"; var vacancy = new Vacancy { Id = Guid.NewGuid(), EmployerDescription = "old description", IsDeleted = false, Status = VacancyStatus.Draft, VacancyReference = 1234567890 }; vacancy.OwnerType = OwnerType.Employer; var user = new VacancyUser(); var now = DateTime.Now; var message = new SubmitVacancyCommand(vacancy.Id, user, expectedDescription, OwnerType.Employer); var sut = GetSut(vacancy.Id, vacancy, now); await sut.Handle(message, new CancellationToken()); vacancy.Status.Should().Be(VacancyStatus.Submitted); vacancy.SubmittedDate.Should().Be(now); vacancy.SubmittedByUser.Should().Be(user); vacancy.LastUpdatedDate.Should().Be(now); vacancy.LastUpdatedByUser.Should().Be(user); vacancy.EmployerDescription.Should().Be(expectedDescription); }
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 response = new SubmitVacancyResponse { HasLegalEntityAgreement = hasLegalEntityAgreementTask.Result, HasProviderAgreement = hasProviderAgreementTask.Result, IsSubmitted = false }; if (response.HasLegalEntityAgreement && response.HasProviderAgreement) { var command = new SubmitVacancyCommand(vacancy.Id, user, OwnerType.Provider); await _messaging.SendCommandAsync(command); response.IsSubmitted = true; } return(response); }
public Task SubmitVacancyAsync(Guid vacancyId, string employerDescription, VacancyUser user) { var command = new SubmitVacancyCommand { VacancyId = vacancyId, EmployerDescription = employerDescription, User = user }; return(_messaging.SendCommandAsync(command)); }
public async Task WhenVacancyNotFound_ShouldRaiseException() { var id = Guid.NewGuid(); var user = new VacancyUser(); var now = DateTime.Now; var expectedExceptionMessage = string.Format(SubmitVacancyCommandHandler.VacancyNotFoundExceptionMessageFormat, id); var message = new SubmitVacancyCommand(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); }
private async Task <SubmitVacancyResponse> SubmitActionAsync(Vacancy vacancy, VacancyUser user) { var response = new SubmitVacancyResponse { HasLegalEntityAgreement = await _legalEntityAgreementService.HasLegalEntityAgreementAsync(vacancy.EmployerAccountId, vacancy.AccountLegalEntityPublicHashedId), IsSubmitted = false }; if (response.HasLegalEntityAgreement == false) { return(response); } var command = new SubmitVacancyCommand(vacancy.Id, user, OwnerType.Employer, vacancy.EmployerDescription); await _messaging.SendCommandAsync(command); response.IsSubmitted = true; return(response); }
public async Task WhenStatusIsIncorrect_ShouldRaiseException() { var vacancy = new Vacancy { Id = Guid.NewGuid(), EmployerDescription = "initial description", IsDeleted = false, Status = VacancyStatus.Live, VacancyReference = 1234567890 }; vacancy.OwnerType = OwnerType.Employer; var user = new VacancyUser(); var now = DateTime.Now; var message = new SubmitVacancyCommand(vacancy.Id, user, OwnerType.Provider); var expectedExceptionMessage = string.Format(SubmitVacancyCommandHandler.InvalidStateExceptionMessageFormat, vacancy.Id, vacancy.Status); 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); }
public Task SubmitVacancyAsync(Guid vacancyId, VacancyUser user) { var command = new SubmitVacancyCommand(vacancyId, user); return(_messaging.SendCommandAsync(command)); }
public Task SubmitVacancyAsync(Guid vacancyId, string employerDescription, VacancyUser user) { var command = new SubmitVacancyCommand(vacancyId, user, employerDescription); return(_messaging.SendCommandAsync(command)); }