public void ScheduleSms() { var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); var database = "database"; ravenDocStore.Expect(r => r.Database()).Return(database); ravenDocStore.Expect(r => r.GetStore().OpenSession(database)).Return(DocumentStore.OpenSession()); var trackingData = new ScheduleTrackingData { ScheduleId = Guid.NewGuid(), MessageStatus = MessageStatus.WaitingForScheduling, }; StoreDocument(trackingData, trackingData.ScheduleId.ToString()); var scheduleStatusHandlers = new ScheduleStatusHandlers { RavenDocStore = ravenDocStore }; var scheduleTimeUtc = DateTime.UtcNow.AddMinutes(14); scheduleStatusHandlers.Handle(new ScheduleStatusChanged { ScheduleId = trackingData.ScheduleId, Status = MessageStatus.Scheduled, ScheduleTimeUtc = scheduleTimeUtc }); var updatedData = GetSchedule(trackingData.ScheduleId.ToString()); Assert.That(updatedData.MessageStatus, Is.EqualTo(MessageStatus.Scheduled)); Assert.That(updatedData.ScheduleTimeUtc, Is.EqualTo(scheduleTimeUtc)); }
public void PauseSchedule() { var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); var database = "database"; ravenDocStore.Expect(r => r.Database()).Return(database); ravenDocStore.Expect(r => r.GetStore().OpenSession(database)).Return(DocumentStore.OpenSession()); var trackingData = new ScheduleTrackingData { ScheduleId = Guid.NewGuid(), MessageStatus = MessageStatus.Scheduled, }; StoreDocument(trackingData, trackingData.ScheduleId.ToString()); var scheduleStatusHandlers = new ScheduleStatusHandlers { RavenDocStore = ravenDocStore }; scheduleStatusHandlers.Handle(new ScheduleStatusChanged { ScheduleId = trackingData.ScheduleId, Status = MessageStatus.Paused }); var updatedData = GetSchedule(trackingData.ScheduleId.ToString()); Assert.That(updatedData.MessageStatus, Is.EqualTo(MessageStatus.Paused)); }
public void Setup() { using (var session = base.DocumentStore.OpenSession()) { var coordinatorTrackingData = new CoordinatorTrackingData { CoordinatorId = _coordinatorId, CurrentStatus = CoordinatorStatusTracking.Started }; var message1 = new ScheduleTrackingData { SmsData = new SmsData("12313", "message"), CoordinatorId = _coordinatorId, MessageStatus = MessageStatus.Sent }; var message2 = new ScheduleTrackingData { SmsData = new SmsData("434039", "message"), CoordinatorId = _coordinatorId, MessageStatus = MessageStatus.Scheduled }; session.Store(coordinatorTrackingData, _coordinatorId.ToString()); session.Store(message1, Guid.NewGuid().ToString()); session.Store(message2, Guid.NewGuid().ToString()); session.SaveChanges(); } }
public void Setup() { using (var session = base.DocumentStore.OpenSession()) { var scheduleTrackingData = new ScheduleTrackingData { MessageStatus = MessageStatus.Scheduled, ScheduleId = scheduleMessageId }; session.Store(scheduleTrackingData, scheduleMessageId.ToString()); session.SaveChanges(); } }
public void SmsSent() { var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); var database = "database"; ravenDocStore.Expect(r => r.Database()).Return(database); ravenDocStore.Expect(r => r.GetStore().OpenSession(database)).Return(DocumentStore.OpenSession()); var trackingData = new ScheduleTrackingData { ScheduleId = Guid.NewGuid(), MessageStatus = MessageStatus.WaitingForScheduling, }; StoreDocument(trackingData, trackingData.ScheduleId.ToString()); var scheduleStatusHandlers = new ScheduleStatusHandlers { RavenDocStore = ravenDocStore }; var scheduleSucceeded = new ScheduleSucceeded { ConfirmationData = new SmsConfirmationData("r", DateTime.UtcNow, 33m), ScheduleId = trackingData.ScheduleId }; scheduleStatusHandlers.Handle(scheduleSucceeded); var updatedData = GetSchedule(trackingData.ScheduleId.ToString()); Assert.That(updatedData.MessageStatus, Is.EqualTo(MessageStatus.Sent)); Assert.That(updatedData.ConfirmationData.SentAtUtc, Is.EqualTo(scheduleSucceeded.ConfirmationData.SentAtUtc)); Assert.That(updatedData.ConfirmationData.Receipt, Is.EqualTo(scheduleSucceeded.ConfirmationData.Receipt)); Assert.That(updatedData.ConfirmationData.Price, Is.EqualTo(scheduleSucceeded.ConfirmationData.Price)); }
public void SmsFailed() { var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); var database = "database"; ravenDocStore.Expect(r => r.Database()).Return(database); ravenDocStore.Expect(r => r.GetStore().OpenSession(database)).Return(DocumentStore.OpenSession()); var trackingData = new ScheduleTrackingData { ScheduleId = Guid.NewGuid(), MessageStatus = MessageStatus.WaitingForScheduling, }; StoreDocument(trackingData, trackingData.ScheduleId.ToString()); var scheduleStatusHandlers = new ScheduleStatusHandlers { RavenDocStore = ravenDocStore }; var scheduleFailed = new ScheduleFailed { ScheduleId = trackingData.ScheduleId, Message = "fail", MoreInfo = "link" }; scheduleStatusHandlers.Handle(scheduleFailed); var updatedData = GetSchedule(trackingData.ScheduleId.ToString()); Assert.That(updatedData.MessageStatus, Is.EqualTo(MessageStatus.Failed)); Assert.That(updatedData.SmsFailureData.Message, Is.EqualTo(scheduleFailed.Message)); Assert.That(updatedData.SmsFailureData.MoreInfo, Is.EqualTo(scheduleFailed.MoreInfo)); Assert.That(updatedData.SmsFailureData.Status, Is.EqualTo(scheduleFailed.Status)); Assert.That(updatedData.SmsFailureData.Code, Is.EqualTo(scheduleFailed.Code)); }
public void Setup() { var _store = new EmbeddableDocumentStore { RunInMemory = true }; _store.Initialize(); IndexCreation.CreateIndexes(typeof(ScheduleMessagesInCoordinatorIndex).Assembly, _store); Top1CoordinatorId = Guid.NewGuid(); var mostRecentCoordinators = new List<CoordinatorTrackingData> { new CoordinatorTrackingData(new List<MessageSendingStatus>()) { CoordinatorId = Top1CoordinatorId, MetaData = new SmsMetaData { Topic = "barry" }, CreationDateUtc = DateTime.Now.AddDays(-3), }, }; var scheduleTrackingData = new ScheduleTrackingData {CoordinatorId = Top1CoordinatorId, MessageStatus = MessageStatus.Sent}; SmsTrackingSession = _store.OpenSession(); foreach (var coordinatorTrackingData in mostRecentCoordinators) { SmsTrackingSession.Store(coordinatorTrackingData, coordinatorTrackingData.CoordinatorId.ToString()); } SmsTrackingSession.Store(scheduleTrackingData, Guid.NewGuid().ToString()); SmsTrackingSession.SaveChanges(); }
public void SaveSchedules(List<object> messageList, Guid coordinatorId) { var scheduleSummary = GetScheduleSummary(coordinatorId); var scheduleCount = scheduleSummary.Sum(s => s.Count); if (scheduleCount > 0 && scheduleCount == messageList.Count) { return; } // else - delete the existing schedules???? using (var session = RavenDocStore.GetStore().BulkInsert(Database)) { // TODO: Check if count of documents with coordinator id match number of schedules (in case they've already been saved) foreach (var schedule in messageList) { if (schedule.GetType() == typeof (ScheduleSmsForSendingLater)) { var smsSchedule = schedule as ScheduleSmsForSendingLater; var scheduleTracker = new ScheduleTrackingData { MessageStatus = MessageStatus.WaitingForScheduling, ScheduleId = smsSchedule.ScheduleMessageId, SmsData = smsSchedule.SmsData, SmsMetaData = smsSchedule.SmsMetaData, ScheduleTimeUtc = smsSchedule.SendMessageAtUtc, CoordinatorId = coordinatorId, Username = smsSchedule.Username, ScheduleType = ScheduleType.Sms }; session.Store(scheduleTracker, smsSchedule.ScheduleMessageId.ToString()); } if (schedule.GetType() == typeof (ScheduleEmailForSendingLater)) { var emailSchedule = schedule as ScheduleEmailForSendingLater; var scheduleTracker = new ScheduleTrackingData { MessageStatus = MessageStatus.WaitingForScheduling, ScheduleId = emailSchedule.ScheduleMessageId, EmailData = emailSchedule.EmailData, SmsMetaData = new SmsMetaData { Tags = emailSchedule.Tags, Topic = emailSchedule.Topic }, ScheduleTimeUtc = emailSchedule.SendMessageAtUtc, CoordinatorId = coordinatorId, Username = emailSchedule.Username, ScheduleType = ScheduleType.Email }; session.Store(scheduleTracker, emailSchedule.ScheduleMessageId.ToString()); } } //session.SaveChanges(); } }
public void SaveSchedules(List<ScheduleSmsForSendingLater> messageList, Guid coordinatorId) { var scheduleSummary = GetScheduleSummary(coordinatorId); var scheduleCount = scheduleSummary.Sum(s => s.Count); if (scheduleCount > 0 && scheduleCount == messageList.Count) { return; } // else - delete the existing schedules???? using (var session = RavenDocStore.GetStore().BulkInsert(Database)) { foreach (var scheduleSmsForSendingLater in messageList) { var scheduleTracker = new ScheduleTrackingData { MessageStatus = MessageStatus.WaitingForScheduling, ScheduleId = scheduleSmsForSendingLater.ScheduleMessageId, SmsData = scheduleSmsForSendingLater.SmsData, SmsMetaData = scheduleSmsForSendingLater.SmsMetaData, ScheduleTimeUtc = scheduleSmsForSendingLater.SendMessageAtUtc, CoordinatorId = coordinatorId, ScheduleType = ScheduleType.Sms }; session.Store(scheduleTracker, scheduleSmsForSendingLater.ScheduleMessageId.ToString()); } } }
public void SaveSchedules(List<ScheduleSmsForSendingLater> messageList, Guid coordinatorId) { using (var session = RavenDocStore.GetStore().OpenSession()) { foreach (var scheduleSmsForSendingLater in messageList) { var scheduleTracker = new ScheduleTrackingData { MessageStatus = MessageStatus.WaitingForScheduling, ScheduleId = scheduleSmsForSendingLater.ScheduleMessageId, SmsData = scheduleSmsForSendingLater.SmsData, SmsMetaData = scheduleSmsForSendingLater.SmsMetaData, ScheduleTimeUtc = scheduleSmsForSendingLater.SendMessageAtUtc, CoordinatorId = coordinatorId }; session.Store(scheduleTracker, scheduleSmsForSendingLater.ScheduleMessageId.ToString()); } session.SaveChanges(); } }