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 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 ShouldContainCandidateFirstNameSubstitution(int noOfDrafts) { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithSpecialCharacterExpiringDrafts(noOfDrafts).Build(); var emailRequest = new DailyDigestEmailRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); List <SendGridMessageSubstitution> sendGridMessageSubstitutions; var sendGridMessage = GetSendGridMessage(out sendGridMessageSubstitutions); var emailMessageFormatter = new EmailDailyDigestMessageFormatter(); emailMessageFormatter.PopulateMessage(emailRequest, sendGridMessage.Object); sendGridMessageSubstitutions.Any(s => s.ReplacementTag == CandidateFirstNameTag).Should().BeTrue(); }
public void GivenMultipleExpiringDrafts_ThenOrderedByClosingDate() { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithExpiringDrafts(3).Build(); expiringDrafts[0].ClosingDate = new DateTime(2015, 02, 01); expiringDrafts[1].ClosingDate = new DateTime(2015, 01, 01); expiringDrafts[2].ClosingDate = new DateTime(2015, 04, 01); var emailRequest = new DailyDigestEmailRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); var draftsJson = emailRequest.Tokens.First(t => t.Key == CommunicationTokens.ExpiringDrafts).Value; var drafts = JsonConvert.DeserializeObject <List <ExpiringApprenticeshipApplicationDraft> >(draftsJson); Assert.That(drafts, Is.Ordered.By("ClosingDate")); }
public void GivenMultipleExpiringDraftsSpecialCharacters(int noOfDrafts) { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithSpecialCharacterExpiringDrafts(noOfDrafts).Build(); var smsRequest = new DailyDigestSmsRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); var formatter = new SmsDailyDigestMessageFormatterBuilder().WithMessageTemplate(MessageTemplate).Build(); var message = formatter.GetMessage(smsRequest.Tokens); int draftCount; int draftLineCount; var expectedMessage = GetExpectedMessage(expiringDrafts, out draftCount, out draftLineCount); message.Should().Be(expectedMessage); draftCount.Should().Be(noOfDrafts); draftLineCount.Should().BeLessOrEqualTo(MaxDraftCount); }
public void GivenSingleExpiringDraft() { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithExpiringDrafts(1).Build(); var smsRequest = new DailyDigestSmsRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); var formatter = new SmsDailyDigestMessageFormatterBuilder().WithMessageTemplate(MessageTemplate).Build(); var message = formatter.GetMessage(smsRequest.Tokens); int draftCount; int draftLineCount; var expectedMessage = GetExpectedMessage(expiringDrafts, out draftCount, out draftLineCount); message.Should().Be(expectedMessage); draftCount.Should().Be(1); draftLineCount.Should().Be(1); }
public void GivenMultipleExpiringDraftsSpecialCharacters(int noOfDrafts) { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithSpecialCharacterExpiringDrafts(noOfDrafts).Build(); var emailRequest = new DailyDigestEmailRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); List <SendGridMessageSubstitution> sendGridMessageSubstitutions; var sendGridMessage = GetSendGridMessage(out sendGridMessageSubstitutions); var emailMessageFormatter = new EmailDailyDigestMessageFormatterBuilder().Build(); emailMessageFormatter.PopulateMessage(emailRequest, sendGridMessage.Object); sendGridMessageSubstitutions.Count(s => s.ReplacementTag == ExpiringDraftsTag).Should().Be(1); var expiringDraftsSubstitution = sendGridMessageSubstitutions.Single(s => s.ReplacementTag == ExpiringDraftsTag); expiringDraftsSubstitution.SubstitutionValues.Single().Should().Be(GetExpectedInfoSubstitution(expiringDrafts)); }
public void GivenMultipleExpiringDrafts_ThenOrderedByClosingDate() { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithExpiringDrafts(3).Build(); expiringDrafts[0].ClosingDate = new DateTime(2015, 02, 01); expiringDrafts[1].ClosingDate = new DateTime(2015, 01, 01); expiringDrafts[2].ClosingDate = new DateTime(2015, 04, 01); var smsRequest = new DailyDigestSmsRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); //Assert the ascending ordering by ClosingDate of apprenticeships about to expire if (smsRequest.Tokens.Count() > 1) { var orderedList = ConvertToExpiringApprenticeshipApplicationDraftModel(smsRequest); Assert.That(orderedList, Is.Ordered.By("ClosingDate")); } }
public void GivenMultipleExpiringDrafts(int noOfDrafts) { var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithExpiringDrafts(noOfDrafts).Build(); var emailRequest = new DailyDigestEmailRequestBuilder().WithExpiringDrafts(expiringDrafts).Build(); List <SendGridMessageSubstitution> sendGridMessageSubstitutions; var sendGridMessage = GetSendGridMessage(out sendGridMessageSubstitutions); var emailMessageFormatter = new EmailDailyDigestMessageFormatter(); emailMessageFormatter.PopulateMessage(emailRequest, sendGridMessage.Object); var countSubstitution = sendGridMessageSubstitutions.Single(s => s.ReplacementTag == ExpiryVacanciesCountTag); countSubstitution.SubstitutionValues.Count.Should().Be(1); countSubstitution.SubstitutionValues.Single().Should().Be(EmailDailyDigestMessageFormatter.MoreThanOneSaveApplicationAboutToExpire); sendGridMessageSubstitutions.Count(s => s.ReplacementTag == ExpiryVacanciesInfoTag).Should().Be(1); var infoSubstitution = sendGridMessageSubstitutions.Single(s => s.ReplacementTag == ExpiryVacanciesInfoTag); infoSubstitution.SubstitutionValues.Single().Should().Be(GetExpectedInfoSubstitution(expiringDrafts)); }
public void GivenMultipleExpiringApplicationStatusAlertsAndExpiringDrafts() { var alerts = new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(2, ApplicationStatuses.Successful).Build() .Concat(new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(3, ApplicationStatuses.Unsuccessful).Build()).ToList(); var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithExpiringDrafts(3).Build(); var emailRequest = new DailyDigestEmailRequestBuilder().WithApplicationStatusAlerts(alerts).WithExpiringDrafts(expiringDrafts).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)); sendGridMessageSubstitutions.Count(s => s.ReplacementTag == ExpiringDraftsTag).Should().Be(1); var expiringDraftsSubstitution = sendGridMessageSubstitutions.Single(s => s.ReplacementTag == ExpiringDraftsTag); expiringDraftsSubstitution.SubstitutionValues.Single().Should().Be(GetExpectedInfoSubstitution(expiringDrafts)); }
public void GivenMultipleExpiringApplicationStatusAlertsAndExpiringDrafts() { var alerts = new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(2, ApplicationStatuses.Successful).Build() .Concat(new ApplicationStatusAlertsBuilder().WithApplicationStatusAlerts(3, ApplicationStatuses.Unsuccessful).Build()).ToList(); var expiringDrafts = new ExpiringApprenticeshipApplicationDraftsBuilder().WithExpiringDrafts(5).Build(); var smsRequest = new DailyDigestSmsRequestBuilder().WithApplicationStatusAlerts(alerts).WithExpiringDrafts(expiringDrafts).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(expiringDrafts, alerts, out draftCount, out draftLineCount, out alertCount, out alertLineCount); message.Should().Be(expectedMessage); draftCount.Should().Be(5); draftLineCount.Should().Be(3); alertCount.Should().Be(5); alertLineCount.Should().Be(3); }