Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 11
0
        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);
        }