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 ShouldHandleCandidateDailyDigestContainingOneOrMoreExpiringDraftsAndApplicationStatusAlerts() { // Arrange. var candidate = new CandidateBuilder(Guid.NewGuid()) .EnableAllCommunications() .Build(); AddCandidate(candidate); var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder() .WithExpiringDrafts(1) .Build(); var applicationStatusAlerts = new ApplicationStatusAlertsBuilder() .WithApplicationStatusAlerts(1, 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. var canHandle = Command.CanHandle(communicationRequest); // Assert. canHandle.Should().BeTrue(); }
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 GivenMultipleApplicationStatusAlerts_ThenOrderedByDateUpdated() { var alerts = new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(1, ApplicationStatuses.Successful).Build() .Concat(new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(2, ApplicationStatuses.Unsuccessful).Build()).ToList(); alerts[0].DateUpdated = new DateTime(2015, 02, 01); alerts[1].DateUpdated = new DateTime(2015, 01, 01); alerts[2].DateUpdated = new DateTime(2015, 04, 01); var emailRequest = new DailyDigestEmailRequestBuilder().WithApplicationStatusAlerts(alerts).Build(); var alertsJson = emailRequest.Tokens.First(t => t.Key == CommunicationTokens.ApplicationStatusAlerts).Value; var applicationStatusAlerts = JsonConvert.DeserializeObject <List <ExpiringApprenticeshipApplicationDraft> >(alertsJson); Assert.That(applicationStatusAlerts, Is.Ordered.By("DateUpdated")); }
public void GivenMultipleExpiringApplicationStatusAlerts() { var alerts = new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(2, ApplicationStatuses.Successful).Build() .Concat(new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(3, ApplicationStatuses.Unsuccessful).Build()).ToList(); var emailRequest = new DailyDigestEmailRequestBuilder().WithApplicationStatusAlerts(alerts).Build(); List <SendGridMessageSubstitution> sendGridMessageSubstitutions; var sendGridMessage = GetSendGridMessage(out sendGridMessageSubstitutions); var emailMessageFormatter = new EmailDailyDigestMessageFormatterBuilder().Build(); emailMessageFormatter.PopulateMessage(emailRequest, sendGridMessage.Object); var applicationStatusAlertTagSubstitution = sendGridMessageSubstitutions.Single(s => s.ReplacementTag == ApplicationStatusAlertTag); applicationStatusAlertTagSubstitution.SubstitutionValues.Count.Should().Be(1); applicationStatusAlertTagSubstitution.SubstitutionValues.Single().Should().Be(GetExpectedInfoSubstitution(alerts)); }
public void GivenSingleApplicationStatusAlert(ApplicationStatuses applicationStatus) { var alerts = new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(1, applicationStatus).Build(); var smsRequest = new DailyDigestSmsRequestBuilder().WithApplicationStatusAlerts(alerts).Build(); var formatter = new SmsDailyDigestMessageFormatterBuilder().WithMessageTemplate(MessageTemplate).Build(); var message = formatter.GetMessage(smsRequest.Tokens); int draftCount; int draftLineCount; int alertCount; int alertLineCount; var expectedMessage = GetExpectedMessage(null, alerts, out draftCount, out draftLineCount, out alertCount, out alertLineCount); message.Should().Be(expectedMessage); draftCount.Should().Be(0); draftLineCount.Should().Be(0); alertCount.Should().Be(1); alertLineCount.Should().Be(1); }
public void GivenMultipleExpiringApplicationStatusAlerts() { var alerts = new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(2, ApplicationStatuses.Successful).Build() .Concat(new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(3, ApplicationStatuses.Unsuccessful).Build()).ToList(); var smsRequest = new DailyDigestSmsRequestBuilder().WithApplicationStatusAlerts(alerts).Build(); var formatter = new SmsDailyDigestMessageFormatterBuilder().WithMessageTemplate(MessageTemplate).Build(); var message = formatter.GetMessage(smsRequest.Tokens); int draftCount; int draftLineCount; int alertCount; int alertLineCount; var expectedMessage = GetExpectedMessage(null, alerts, out draftCount, out draftLineCount, out alertCount, out alertLineCount); message.Should().Be(expectedMessage); draftCount.Should().Be(0); draftLineCount.Should().BeLessOrEqualTo(MaxDraftCount); alertCount.Should().Be(5); alertLineCount.Should().Be(3); }