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