Ejemplo n.º 1
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();
        }
Ejemplo n.º 2
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.º 3
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);
        }
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        public void ShouldNotBeAbleToHandleOtherMessageTypes(MessageTypes messageType)
        {
            // Arrange.
            var communicationRequest = new CommunicationRequestBuilder(messageType, Guid.NewGuid()).Build();

            // Act.
            var canHandle = Command.CanHandle(communicationRequest);

            // Assert.
            canHandle.Should().BeFalse();
        }
Ejemplo n.º 7
0
        public void ShouldHandleSimpleCandidateMessagesTypes(MessageTypes messageType)
        {
            // Arrange.
            var communicationRequest = new CommunicationRequestBuilder(messageType, Guid.NewGuid()).Build();

            // Act.
            var canHandle = Command.CanHandle(communicationRequest);

            // Assert.
            canHandle.Should().BeTrue();
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
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);
        }