Пример #1
0
        public void PauseMessageSetsSchedulePauseFlag_Data()
        {
            var scheduleId = Guid.NewGuid();
            var data       = new ScheduledEmailData
            {
                OriginalMessageData = new OriginalEmailMessageData(new ScheduleEmailForSendingLater
                {
                    EmailData = new EmailData()
                }),
                ScheduleMessageId = scheduleId
            };
            var pauseScheduledMessageIndefinitely = new PauseScheduledMessageIndefinitely(scheduleId);

            Test.Initialize();
            Test.Saga <EmailScheduler>()
            .WithExternalDependencies(a => { a.Data = data; })
            .WhenReceivesMessageFrom("place")
            .ExpectSendLocal <ScheduleStatusChanged>(s =>
            {
                return(s.Status == MessageStatus.Paused &&
                       s.ScheduleId == pauseScheduledMessageIndefinitely.ScheduleMessageId &&
                       s.RequestTimeUtc == pauseScheduledMessageIndefinitely.MessageRequestTimeUtc);
            })

            .When(s => s.Handle(pauseScheduledMessageIndefinitely));

            Assert.IsTrue(data.SchedulingPaused);
        }
Пример #2
0
        public void Handle(PauseScheduledMessageIndefinitely message)
        {
            if (Data.LastUpdateCommandRequestUtc != null && Data.LastUpdateCommandRequestUtc > message.MessageRequestTimeUtc)
            {
                return;
            }
            Data.SchedulingPaused = true;
            Bus.SendLocal(new ScheduleStatusChanged
            {
                ScheduleId     = message.ScheduleMessageId,
                RequestTimeUtc = message.MessageRequestTimeUtc,
                Status         = MessageStatus.Paused
            });
            var originalMessage = Data.OriginalMessageData;

            Bus.Publish(new MessageSchedulePaused
            {
                CoordinatorId = originalMessage.RequestingCoordinatorId,
                ScheduleId    = message.ScheduleMessageId,
                // TODO : Should we remove the number or have a different thing for emails?
            });
            Data.LastUpdateCommandRequestUtc = message.MessageRequestTimeUtc;
        }
Пример #3
0
        public void Handle(PauseScheduledMessageIndefinitely pauseScheduling)
        {
            if (Data.LastUpdateCommandRequestUtc != null && Data.LastUpdateCommandRequestUtc > pauseScheduling.MessageRequestTimeUtc)
            {
                return;
            }
            Data.SchedulingPaused = true;
            Bus.SendLocal(new ScheduleStatusChanged
            {
                ScheduleId     = pauseScheduling.ScheduleMessageId,
                RequestTimeUtc = pauseScheduling.MessageRequestTimeUtc,
                Status         = MessageStatus.Paused
            });
            var originalMessage = Data.OriginalMessageData;

            Bus.Publish(new MessageSchedulePaused
            {
                CoordinatorId = originalMessage.RequestingCoordinatorId,
                ScheduleId    = pauseScheduling.ScheduleMessageId,
                Number        = originalMessage.Number
            });
            Data.LastUpdateCommandRequestUtc = pauseScheduling.MessageRequestTimeUtc;
        }