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); }
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; }
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; }