public void CoordinateMessagesCompleteWithAllMessagesComplete() { var coordinatorId = Guid.NewGuid(); using (var session = DocumentStore.OpenSession()) { var coordinatorTrackingData = new CoordinatorTrackingData { CoordinatorId = coordinatorId, MessageStatuses = new List<MessageSendingStatus> { new MessageSendingStatus { Number = "2323", ScheduledSendingTimeUtc = DateTime.Now, ActualSentTimeUtc = DateTime.Now, Cost = 0.33m, Status = MessageStatusTracking.CompletedSuccess } } }; session.Store(coordinatorTrackingData, coordinatorId.ToString()); session.SaveChanges(); } var coordinatorCompleted = new CoordinatorCompleted { CoordinatorId = coordinatorId }; var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); ravenDocStore.Expect(r => r.GetStore()).Return(DocumentStore); var coordinatorTracker = new CoordinatorTracker() { RavenStore = ravenDocStore }; coordinatorTracker.Handle(coordinatorCompleted); using (var session = DocumentStore.OpenSession()) { var trackingData = session.Load<CoordinatorTrackingData>(coordinatorId.ToString()); Assert.That(trackingData.CurrentStatus, Is.EqualTo(CoordinatorStatusTracking.Completed)); } }
public void CoordinateMessagesCompleteWithAllMessagesCompleteAndSendsConfirmationEmail() { var coordinatorId = Guid.NewGuid(); using (var session = DocumentStore.OpenSession()) { var coordinatorTrackingData = new CoordinatorTrackingData { CoordinatorId = coordinatorId, MessageStatuses = new List<MessageSendingStatus> { new MessageSendingStatus { Number = "2323", ScheduledSendingTimeUtc = DateTime.Now, ActualSentTimeUtc = DateTime.Now, Cost = 0.33m, Status = MessageStatusTracking.CompletedSuccess } }, ConfirmationEmailAddress = "email" }; session.Store(coordinatorTrackingData, coordinatorId.ToString()); session.SaveChanges(); } var coordinatorCompleted = new CoordinatorCompleted { CoordinatorId = coordinatorId }; var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); var bus = MockRepository.GenerateMock<IBus>(); ravenDocStore.Expect(r => r.GetStore()).Return(DocumentStore); bus.Expect(b => b.Send(Arg<CoordinatorCompleteEmail>.Is.Anything)); var coordinatorTracker = new CoordinatorTracker { RavenStore = ravenDocStore, Bus = bus}; coordinatorTracker.Handle(coordinatorCompleted); using (var session = DocumentStore.OpenSession()) { var trackingData = session.Load<CoordinatorTrackingData>(coordinatorId.ToString()); Assert.That(trackingData.CurrentStatus, Is.EqualTo(CoordinatorStatusTracking.Completed)); } bus.VerifyAllExpectations(); }
public void CoordinateMessagesCompleteWithSomeIncompleteMessagesThrowsException() { var coordinatorId = Guid.NewGuid(); using (var session = DocumentStore.OpenSession()) { var coordinatorTrackingData = new CoordinatorTrackingData { CoordinatorId = coordinatorId, MessageStatuses = new List<MessageSendingStatus> { new MessageSendingStatus { Number = "2323", ScheduledSendingTimeUtc = DateTime.Now, ActualSentTimeUtc = DateTime.Now, Cost = 0.33m, Status = MessageStatusTracking.Paused } } }; session.Store(coordinatorTrackingData, coordinatorId.ToString()); session.SaveChanges(); } var coordinatorCompleted = new CoordinatorCompleted { CoordinatorId = coordinatorId }; var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); ravenDocStore.Expect(r => r.GetStore()).Return(DocumentStore); var coordinatorTracker = new CoordinatorTracker { RavenStore = ravenDocStore }; Assert.That(() => coordinatorTracker.Handle(coordinatorCompleted), Throws.Exception.With.Message.EqualTo("Cannot complete coordinator - some messages are not yet complete.")); }
public void CoordinateMessagesCreated() { var coordinatorCreated = new CoordinatorCreated { CoordinatorId = Guid.NewGuid(), ScheduledMessages = new List<MessageSchedule> { new MessageSchedule { Number = "04040044", ScheduledTimeUtc = DateTime.Now.AddMinutes(5)}, new MessageSchedule { Number = "07777777", ScheduledTimeUtc = DateTime.Now.AddMinutes(10)} }, ConfirmationEmailAddress = "tony" }; var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); ravenDocStore.Expect(r => r.GetStore()).Return(DocumentStore); var coordinatorTracker = new CoordinatorTracker { RavenStore = ravenDocStore }; coordinatorTracker.Handle(coordinatorCreated); using (var session = DocumentStore.OpenSession()) { var coordinatorTrackingData = session.Load<CoordinatorTrackingData>(coordinatorCreated.CoordinatorId.ToString()); Assert.That(coordinatorTrackingData.CurrentStatus, Is.EqualTo(CoordinatorStatusTracking.Started)); Assert.That(coordinatorTrackingData.CoordinatorId, Is.EqualTo(coordinatorCreated.CoordinatorId)); Assert.That(coordinatorTrackingData.MessageStatuses.Count, Is.EqualTo(2)); Assert.That(coordinatorTrackingData.MessageStatuses[0].Number, Is.EqualTo(coordinatorCreated.ScheduledMessages[0].Number)); Assert.That(coordinatorTrackingData.MessageStatuses[0].ScheduledSendingTimeUtc, Is.EqualTo(coordinatorCreated.ScheduledMessages[0].ScheduledTimeUtc)); Assert.That(coordinatorTrackingData.MessageStatuses[0].Status, Is.EqualTo(MessageStatusTracking.WaitingForScheduling)); Assert.That(coordinatorTrackingData.MessageStatuses[1].Number, Is.EqualTo(coordinatorCreated.ScheduledMessages[1].Number)); Assert.That(coordinatorTrackingData.MessageStatuses[1].ScheduledSendingTimeUtc, Is.EqualTo(coordinatorCreated.ScheduledMessages[1].ScheduledTimeUtc)); Assert.That(coordinatorTrackingData.MessageStatuses[1].Status, Is.EqualTo(MessageStatusTracking.WaitingForScheduling)); Assert.That(coordinatorTrackingData.ConfirmationEmailAddress, Is.EqualTo(coordinatorCreated.ConfirmationEmailAddress)); } }