public void ShouldHandleCandidateDailyDigestContainingOneOrMoreExpiringDraft() { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder() .WithExpiringDrafts(1) .Build(); var json = JsonConvert.SerializeObject(expiringDrafts); var communicationRequest = new CommunicationRequestBuilder(MessageTypes.DailyDigest, candidate.EntityId) .WithToken(CommunicationTokens.ExpiringDrafts, json) .WithToken(CommunicationTokens.ApplicationStatusAlerts, null) .Build(); // Act. var canHandle = Command.CanHandle(communicationRequest); // Assert. canHandle.Should().BeTrue(); }
public void ShouldQueueOneSmsForOneOrMoreExpiringDrafts( int expiringDraftCount, MessageTypes expectedMessageType) { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder() .WithExpiringDrafts(expiringDraftCount) .Build(); var json = JsonConvert.SerializeObject(expiringDrafts); var communicationRequest = new CommunicationRequestBuilder(MessageTypes.DailyDigest, candidate.EntityId) .WithToken(CommunicationTokens.ExpiringDrafts, json) .WithToken(CommunicationTokens.ApplicationStatusAlerts, null) .Build(); // Act. Command.Handle(communicationRequest); // Assert. ShouldQueueSms(expectedMessageType, 1); }
public void ShouldQueueOneEmailForMultipleExpiringDraftsAndApplicationStatusAlerts( int expiringDraftCount, int applicationStatusAlertCount) { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder() .WithExpiringDrafts(expiringDraftCount) .Build(); var applicationStatusAlerts = new ApplicationStatusAlertsBuilder() .WithApplicationStatusAlerts(applicationStatusAlertCount, ApplicationStatuses.Unsuccessful) .Build(); var communicationRequest = new CommunicationRequestBuilder(MessageTypes.DailyDigest, candidate.EntityId) .WithToken(CommunicationTokens.ExpiringDrafts, JsonConvert.SerializeObject(expiringDrafts)) .WithToken(CommunicationTokens.ApplicationStatusAlerts, JsonConvert.SerializeObject(applicationStatusAlerts)) .Build(); // Act. Command.Handle(communicationRequest); // Assert. ShouldQueueEmail(MessageTypes.DailyDigest, 1); }
public void ShouldQueueOneEmailForMultipleSuccessfulApplicationStatusUpdates(int successfulApplicationCount) { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var applicationStatusAlerts = new ApplicationStatusAlertsBuilder() .WithApplicationStatusAlerts(successfulApplicationCount, ApplicationStatuses.Successful) .Build(); var json = JsonConvert.SerializeObject(applicationStatusAlerts); var communicationRequest = new CommunicationRequestBuilder(MessageTypes.DailyDigest, candidate.EntityId) .WithToken(CommunicationTokens.ExpiringDrafts, null) .WithToken(CommunicationTokens.ApplicationStatusAlerts, json) .Build(); // Act. Command.Handle(communicationRequest); // Assert. ShouldQueueEmail(MessageTypes.DailyDigest, 1); }
public void ShouldQueueEmailAndSmsForActiveCandidate(MessageTypes messageType, UserStatuses userStatus) { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate, userStatus); var communicationRequest = new CommunicationRequestBuilder(messageType, candidate.EntityId).Build(); // Act. Command.Handle(communicationRequest); // Assert. ShouldQueueEmail(messageType, 1); if (messageType == MessageTypes.ApprenticeshipApplicationSubmitted || messageType == MessageTypes.TraineeshipApplicationSubmitted) { ShouldQueueSms(messageType, 0); } else { ShouldQueueSms(messageType, 1); } }
public void ShouldNotBeAbleToHandleOtherMessageTypes(MessageTypes messageType) { // Arrange. var communicationRequest = new CommunicationRequestBuilder(messageType, Guid.NewGuid()).Build(); // Act. var canHandle = Command.CanHandle(communicationRequest); // Assert. canHandle.Should().BeFalse(); }
public void ShouldHandleSimpleCandidateMessagesTypes(MessageTypes messageType) { // Arrange. var communicationRequest = new CommunicationRequestBuilder(messageType, Guid.NewGuid()).Build(); // Act. var canHandle = Command.CanHandle(communicationRequest); // Assert. canHandle.Should().BeTrue(); }
public void ShouldNotQueueSmsForNonSmsMessageType(MessageTypes messageType) { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var communicationRequest = new CommunicationRequestBuilder(messageType, candidate.EntityId).Build(); // Act. Command.Handle(communicationRequest); // Assert. ShouldQueueEmail(messageType, 1); ShouldQueueSms(messageType, 0); }
public void ShouldNotQueueSmsWhenNoExpiringDrafts(MessageTypes expectedMessageType) { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var communicationRequest = new CommunicationRequestBuilder(MessageTypes.DailyDigest, candidate.EntityId) .WithToken(CommunicationTokens.ExpiringDrafts, null) .WithToken(CommunicationTokens.ApplicationStatusAlerts, null) .Build(); // Act. Command.Handle(communicationRequest); // Assert. ShouldQueueSms(expectedMessageType, 0); }