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(); }
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"); }
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); } }