public void Handle(PauseTrickledMessagesIndefinitely message) { if (Data.LastUpdatingCommandRequestUtc != null && Data.LastUpdatingCommandRequestUtc > message.MessageRequestTimeUtc) { return; } var trackingData = RavenScheduleDocuments.GetActiveScheduleTrackingData(Data.CoordinatorId); var messagesToPause = trackingData.Select(t => new PauseScheduledMessageIndefinitely(t.ScheduleId)).ToList(); foreach (var pauseScheduledMessageIndefinitely in messagesToPause) { Bus.Send(pauseScheduledMessageIndefinitely); } Data.LastUpdatingCommandRequestUtc = message.MessageRequestTimeUtc; }
public void TrickleMessagesPauseMessagesIndefinitely_Data() { var ravenScheduleDocuments = MockRepository.GenerateMock <IRavenScheduleDocuments>(); var pauseMessageSending = new PauseTrickledMessagesIndefinitely(); var timingManager = MockRepository.GenerateMock <ICalculateSmsTiming>(); var sagaId = Guid.NewGuid(); var sagaData = new CoordinateSmsSchedulingData { Id = Guid.NewGuid(), Originator = "o", OriginalMessageId = "i", CoordinatorId = sagaId }; var pausedTrackedMessages = new List <ScheduleTrackingData> { new ScheduleTrackingData { MessageStatus = MessageStatus.Scheduled, ScheduleId = Guid.NewGuid() }, new ScheduleTrackingData { MessageStatus = MessageStatus.Scheduled, ScheduleId = Guid.NewGuid() } }; ravenScheduleDocuments.Expect(r => r.GetActiveScheduleTrackingData(sagaId)).Return(pausedTrackedMessages); Test.Initialize(); Test.Saga <CoordinateSmsScheduler>() .WithExternalDependencies(s => { s.TimingManager = timingManager; s.Data = sagaData; s.RavenScheduleDocuments = ravenScheduleDocuments; }) .ExpectSend <PauseScheduledMessageIndefinitely>(l => l.ScheduleMessageId == pausedTrackedMessages[0].ScheduleId) .ExpectSend <PauseScheduledMessageIndefinitely>(l => l.ScheduleMessageId == pausedTrackedMessages[1].ScheduleId) .When(s => s.Handle(pauseMessageSending)); timingManager.VerifyAllExpectations(); }