private async Task Handle(Guid applicationReviewId, VacancyUser user, ApplicationReviewStatus status, string candidateFeedback = null)
        {
            var applicationReview = await _applicationReviewRepository.GetAsync(applicationReviewId);

            if (applicationReview.CanReview == false)
            {
                _logger.LogWarning("Cannot review ApplicationReviewId:{applicationReviewId} as not in correct state", applicationReview.Id);
                return;
            }

            applicationReview.Status            = status;
            applicationReview.CandidateFeedback = candidateFeedback;
            applicationReview.StatusUpdatedDate = _timeProvider.Now;
            applicationReview.StatusUpdatedBy   = user;

            Validate(applicationReview);

            await _applicationReviewRepository.UpdateAsync(applicationReview);

            await _messaging.PublishEvent(new ApplicationReviewedEvent
            {
                Status            = applicationReview.Status,
                VacancyReference  = applicationReview.VacancyReference,
                CandidateFeedback = applicationReview.CandidateFeedback,
                CandidateId       = applicationReview.CandidateId
            });
        }
        public void ShouldBeValid(ApplicationReviewStatus outcome, string feedback)
        {
            var m = new ApplicationReviewEditModel
            {
                Outcome           = outcome,
                CandidateFeedback = feedback
            };

            var validator = new ApplicationReviewEditModelValidator(_mockProfanityListProvider.Object);

            var result = validator.Validate(m);

            result.IsValid.Should().BeTrue();
        }
Exemplo n.º 3
0
        public void ShouldVeValid(ApplicationReviewStatus outcome, string feedback)
        {
            var m = new ApplicationReviewEditModel
            {
                Outcome           = outcome,
                CandidateFeedback = feedback
            };

            var validator = new ApplicationReviewEditModelValidator();

            var result = validator.Validate(m);

            result.IsValid.Should().BeTrue();
        }
        public void ApplicationReviewShouldBeValid(ApplicationReviewStatus status, string feedback)
        {
            var m = new Recruit.Vacancies.Client.Domain.Entities.ApplicationReview
            {
                Status            = status,
                CandidateFeedback = feedback
            };

            var validator = new ApplicationReviewValidator();

            var result = validator.Validate(m);

            result.IsValid.Should().BeTrue();
        }
        public void ShouldBeInvalid_ForProfanityWordsInFeedback(ApplicationReviewStatus outcome, string feedback)
        {
            var m = new ApplicationReviewEditModel
            {
                Outcome           = outcome,
                CandidateFeedback = feedback
            };

            var validator = new ApplicationReviewEditModelValidator(_mockProfanityListProvider.Object);
            var result    = validator.Validate(m);

            result.IsValid.Should().BeFalse();
            result.Errors.Count.Should().Be(1);
            result.Errors[0].ErrorCode.Should().Be("617");
        }
Exemplo n.º 6
0
        public async Task Handle_ShouldSubmitMessageToFAAMessageQueueDependingOnStatus(ApplicationReviewStatus status, bool shouldPublishFaaServiceBusMessage)
        {
            FaaApplicationStatusSummary actualFaaApplicationStatusSummary = null;

            var faaServiceMock = new Mock <IFaaService>();

            faaServiceMock.Setup(f => f.PublishApplicationStatusSummaryAsync(It.IsAny <FaaApplicationStatusSummary>()))
            .Callback <FaaApplicationStatusSummary>(f => actualFaaApplicationStatusSummary = f)
            .Returns(Task.CompletedTask);

            var sut = new UpdateFaaOnApplicationReviewed(faaServiceMock.Object, new Mock <ILogger <UpdateFaaOnApplicationReviewed> >().Object);

            var @event = new ApplicationReviewedEvent
            {
                CandidateFeedback = "candidate feedback",
                CandidateId       = Guid.NewGuid(),
                Status            = status,
                VacancyReference  = 1234567890
            };

            await sut.Handle(@event, new CancellationToken());

            faaServiceMock.Verify(f => f.PublishApplicationStatusSummaryAsync(It.IsAny <FaaApplicationStatusSummary>()),
                                  Times.Exactly(shouldPublishFaaServiceBusMessage ? 1 : 0));

            if (actualFaaApplicationStatusSummary != null)
            {
                actualFaaApplicationStatusSummary.CandidateId.Should().Be(@event.CandidateId);
                actualFaaApplicationStatusSummary.ApplicationStatus.Should().Be(status == ApplicationReviewStatus.Successful ? FaaApplicationStatus.Successful : FaaApplicationStatus.Unsuccessful);
                actualFaaApplicationStatusSummary.IsRecruitVacancy.Should().Be(true);
                actualFaaApplicationStatusSummary.UnsuccessfulReason.Should().Be(@event.CandidateFeedback);
                actualFaaApplicationStatusSummary.VacancyReference.Should().Be((int)@event.VacancyReference);
            }
        }