예제 #1
0
        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");
        }
예제 #3
0
        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);
        }
예제 #5
0
        public Task SubmitVacancyAsync(Guid vacancyId, string employerDescription, VacancyUser user)
        {
            var command = new SubmitVacancyCommand
            {
                VacancyId           = vacancyId,
                EmployerDescription = employerDescription,
                User = user
            };

            return(_messaging.SendCommandAsync(command));
        }
예제 #6
0
        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);
        }
예제 #8
0
        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));
        }
예제 #11
0
        public Task SubmitVacancyAsync(Guid vacancyId, string employerDescription, VacancyUser user)
        {
            var command = new SubmitVacancyCommand(vacancyId, user, employerDescription);

            return(_messaging.SendCommandAsync(command));
        }