public void AnswerGeneratorNullConstructorTest() { var cp = new CommunicationProcessor(_fileReader, _inputParser, null); Assert.IsNotNull(cp); Assert.Fail(); }
public void AllowNeitherEmailNorSmsShouldNotSendMessageAndSoftDeleteAlerts() { var savedSearchAlertRepository = new Mock <ISavedSearchAlertRepository>(); savedSearchAlertRepository.Setup(x => x.GetCandidatesSavedSearchAlerts()).Returns(GetSavedSearchAlerts(2, 2)); var candidateReadRepository = new Mock <ICandidateReadRepository>(); var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableSavedSearchAlertsViaEmail(false) .EnableSavedSearchAlertsViaText(false) .Build(); candidateReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(candidate); var userReadRepository = new Mock <IUserReadRepository>(); var user = new UserBuilder(candidate.EntityId).WithStatus(UserStatuses.Active).Build(); userReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(user); var sendSavedSearchAlertsStrategy = new SendSavedSearchAlertsStrategyBuilder() .With(savedSearchAlertRepository) .With(candidateReadRepository) .With(userReadRepository) .Build(); var communicationProcessor = new CommunicationProcessor(null, sendSavedSearchAlertsStrategy); var batchId = Guid.NewGuid(); communicationProcessor.SendSavedSearchAlerts(batchId); savedSearchAlertRepository.Verify(x => x.GetCandidatesSavedSearchAlerts(), Times.Once); candidateReadRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Exactly(2)); userReadRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Exactly(2)); savedSearchAlertRepository.Verify(x => x.Save(It.IsAny <SavedSearchAlert>()), Times.Exactly(4)); }
public void SetUp() { _expiringDraftRepository = new Mock <IExpiringApprenticeshipApplicationDraftRepository>(); _applicationStatusAlertRepository = new Mock <IApplicationStatusAlertRepository>(); _applicationStatusAlertRepository.Setup(r => r.GetCandidatesDailyDigest()) .Returns(new Dictionary <Guid, List <ApplicationStatusAlert> >()); _savedSearchAlertRepository = new Mock <ISavedSearchAlertRepository>(); _savedSearchAlertRepository.Setup(r => r.GetCandidatesSavedSearchAlerts()) .Returns(new Dictionary <Guid, List <SavedSearchAlert> >()); _candidateReadRepository = new Mock <ICandidateReadRepository>(); _userReadRepository = new Mock <IUserReadRepository>(); _serviceBus = new Mock <IServiceBus>(); var sendDailyDigestsStrategy = new SendDailyDigestsStrategyBuilder() .With(_applicationStatusAlertRepository) .With(_expiringDraftRepository) .With(_candidateReadRepository) .With(_userReadRepository) .With(_serviceBus) .Build(); _communicationProcessor = new CommunicationProcessor(sendDailyDigestsStrategy, null); }
public void SetUp() { _expiringDraftRepository = new Mock <IExpiringApprenticeshipApplicationDraftRepository>(); _candidateReadRepository = new Mock <ICandidateReadRepository>(); _bus = new Mock <IMessageBus>(); _communicationProcessor = new CommunicationProcessor(_expiringDraftRepository.Object, _candidateReadRepository.Object, _bus.Object); }
public void ShouldFilterOutPrimaryOptedOut() { var list = new[] { ParticipantsData.PrimaryOptedOut, ParticipantsData.SecondaryOptedOut }; var result = CommunicationProcessor.GetOptedInParticipants(list).ToList(); result.Count.Should().Be(0); }
public void ShouldReturnParticipantsWhoHaveOptedIn() { var list = new[] { ParticipantsData.OptedIn, ParticipantsData.OptedOut }; var result = CommunicationProcessor.GetOptedInParticipants(list).ToList(); result.Count.Should().Be(1); result.Any(p => p.User.Name == ParticipantsData.OptedIn.User.Name).Should().BeTrue(); }
public void ShouldReturnPrimaryParticipantsWithAnyScope() { var list = new[] { ParticipantsData.PrimaryWithIndividualScope, ParticipantsData.PrimaryWithOrganisationalScope }; var result = CommunicationProcessor.GetOptedInParticipants(list).ToList(); result.Count.Should().Be(2); result.Any(p => p.User.Name == ParticipantsData.PrimaryWithIndividualScope.User.Name).Should().BeTrue(); result.Any(p => p.User.Name == ParticipantsData.PrimaryWithOrganisationalScope.User.Name).Should().BeTrue(); }
public void ShouldSendOneEmailPerCandidate() { var alerts = GetAlertCandidatesDailyDigest(2, 1); var drafts = GetExpiringDraftsCandidatesDailyDigest(2, 2); //Ensure the alerts and drafts share one candidate var candidateId = alerts.Keys.First(); var draft = drafts.First(); drafts.Remove(draft.Key); drafts[candidateId] = draft.Value; var applicationStatusAlertRepository = new Mock <IApplicationStatusAlertRepository>(); applicationStatusAlertRepository.Setup(x => x.GetCandidatesDailyDigest()).Returns(alerts); var expiringDraftRepository = new Mock <IExpiringApprenticeshipApplicationDraftRepository>(); expiringDraftRepository.Setup(r => r.GetCandidatesDailyDigest()).Returns(drafts); var candidateReadRepository = new Mock <ICandidateReadRepository>(); var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableApplicationStatusChangeAlertsViaEmail(true) .EnableExpiringApplicationAlertsViaEmail(true) .Build(); candidateReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(candidate); var userReadRepository = new Mock <IUserReadRepository>(); var user = new UserBuilder(Guid.NewGuid()).WithStatus(UserStatuses.Active).Build(); userReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(user); var serviceBus = new Mock <IServiceBus>(); var sendDailyDigestsStrategy = new SendDailyDigestsStrategyBuilder() .With(applicationStatusAlertRepository) .With(expiringDraftRepository) .With(candidateReadRepository) .With(userReadRepository) .With(serviceBus) .Build(); var communicationProcessor = new CommunicationProcessor(sendDailyDigestsStrategy, null); var batchId = Guid.NewGuid(); communicationProcessor.SendDailyDigests(batchId); serviceBus.Verify(mb => mb.PublishMessage(It.IsAny <CommunicationRequest>()), Times.Exactly(3)); }
public void AllowNeitherEmailNorSmsShouldNotSendMessageAndSoftDeleteAlerts() { var expiringDraftRepository = new Mock <IExpiringApprenticeshipApplicationDraftRepository>(); expiringDraftRepository.Setup(x => x.GetCandidatesDailyDigest()).Returns(GetExpiringDraftsCandidatesDailyDigest(0, 0)); var applicationStatusAlertRepository = new Mock <IApplicationStatusAlertRepository>(); applicationStatusAlertRepository.Setup(x => x.GetCandidatesDailyDigest()).Returns(GetAlertCandidatesDailyDigest(2, 2)); var candidateReadRepository = new Mock <ICandidateReadRepository>(); var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableApplicationStatusChangeAlertsViaEmail(false) .EnableApplicationStatusChangeAlertsViaText(false) .EnableExpiringApplicationAlertsViaEmail(false) .EnableExpiringApplicationAlertsViaText(false) .Build(); candidateReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(candidate); var userReadRepository = new Mock <IUserReadRepository>(); var user = new UserBuilder(candidate.EntityId).WithStatus(UserStatuses.Active).Build(); userReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(user); var serviceBus = new Mock <IServiceBus>(); var sendDailyDigestsStrategy = new SendDailyDigestsStrategyBuilder() .With(applicationStatusAlertRepository) .With(expiringDraftRepository) .With(candidateReadRepository) .With(userReadRepository) .With(serviceBus) .Build(); var batchId = Guid.NewGuid(); var communicationProcessor = new CommunicationProcessor(sendDailyDigestsStrategy, null); communicationProcessor.SendDailyDigests(batchId); applicationStatusAlertRepository.Verify(x => x.GetCandidatesDailyDigest(), Times.Once); candidateReadRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Exactly(2)); userReadRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Exactly(2)); applicationStatusAlertRepository.Verify(x => x.Save(It.IsAny <ApplicationStatusAlert>()), Times.Exactly(4)); }
public void AllowEmailOrSmsShouldSendMessageAndUpdate(bool allowEmail, bool allowMobile) { var savedSearchAlertRepository = new Mock <ISavedSearchAlertRepository>(); savedSearchAlertRepository.Setup(x => x.GetCandidatesSavedSearchAlerts()).Returns(GetSavedSearchAlerts(2, 2)); var candidateReadRepository = new Mock <ICandidateReadRepository>(); var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableSavedSearchAlertsViaEmail(allowEmail) .EnableSavedSearchAlertsViaText(allowMobile) .VerifiedMobile(allowMobile) .Build(); candidateReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(candidate); var userReadRepository = new Mock <IUserReadRepository>(); var user = new UserBuilder(candidate.EntityId).WithStatus(UserStatuses.Active).Build(); userReadRepository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(user); var serviceBus = new Mock <IServiceBus>(); var sendSavedSearchAlertsStrategy = new SendSavedSearchAlertsStrategyBuilder() .With(candidateReadRepository) .With(userReadRepository) .With(savedSearchAlertRepository) .With(serviceBus) .Build(); var communicationProcessor = new CommunicationProcessor(null, sendSavedSearchAlertsStrategy); var batchId = Guid.NewGuid(); communicationProcessor.SendSavedSearchAlerts(batchId); savedSearchAlertRepository.Verify(x => x.GetCandidatesSavedSearchAlerts(), Times.Once); candidateReadRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Exactly(2)); userReadRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Exactly(2)); savedSearchAlertRepository.Verify(x => x.Delete(It.IsAny <SavedSearchAlert>()), Times.Never); savedSearchAlertRepository.Verify(x => x.Save(It.IsAny <SavedSearchAlert>()), Times.Exactly(4)); serviceBus.Verify(x => x.PublishMessage(It.IsAny <CommunicationRequest>()), Times.Exactly(2)); }