public void CreateSendAllAtOnceReturnsDetails() { var model = new CoordinatedSharedMessageModel { Numbers= "04040404040", Message = "Message", StartTime = DateTime.Now.AddHours(2), SendAllAtOnce = true, Tags = "tag1, tag2", Topic = "New Feature!", UserTimeZone = "Australia/Sydney" }; var bus = MockRepository.GenerateMock<IBus>(); var mapper = MockRepository.GenerateMock<ICoordinatorModelToMessageMapping>(); var ravenDocStore = MockRepository.GenerateMock<IRavenDocStore>(); var docStore = MockRepository.GenerateMock<IDocumentStore>(); var docSession = MockRepository.GenerateMock<IDocumentSession>(); ravenDocStore.Expect(r => r.GetStore()).Return(docStore); docStore.Expect(d => d.OpenSession("Configuration")).Return(docSession); docSession.Expect(d => d.Load<CountryCodeReplacement>("CountryCodeConfig")).Return(new CountryCodeReplacement()); mapper .Expect(m => m.MapToSendAllAtOnce(Arg<CoordinatedSharedMessageModel>.Is.Anything, Arg<CountryCodeReplacement>.Is.Anything, Arg<List<string>>.Is.Anything)) .Return(new SendAllMessagesAtOnce()); var trickleMessage = new SendAllMessagesAtOnce(); bus.Expect(b => b.Send(Arg<SendAllMessagesAtOnce>.Is.NotNull)) .WhenCalled(i => trickleMessage = (SendAllMessagesAtOnce) ((object[]) (i.Arguments[0]))[0]); var controller = new CoordinatorController { ControllerContext = new ControllerContext(), Bus = bus, Mapper = mapper, RavenDocStore = ravenDocStore }; var actionResult = (RedirectToRouteResult)controller.Create(model); Assert.That(actionResult.RouteValues["action"], Is.EqualTo("Details")); Assert.That(trickleMessage.CoordinatorId, Is.Not.EqualTo(Guid.Empty)); bus.VerifyAllExpectations(); mapper.VerifyAllExpectations(); }
public void SendAllAtOnce_Data() { var messageList = new List<SmsData> { new SmsData("9384938", "3943lasdkf;j"), new SmsData("99999", "dj;alsdfkj")}; var sendTimeUtc = DateTime.Now; var sendAllMessagesAtOnce = new SendAllMessagesAtOnce { Messages = messageList, SendTimeUtc = sendTimeUtc, UserOlsenTimeZone = "timeZone", CoordinatorId = Guid.NewGuid(), MetaData = new SmsMetaData()}; var ravenScheduleDocuments = MockRepository.GenerateStrictMock<IRavenScheduleDocuments>(); var sendingMessages = new List<ScheduleSmsForSendingLater>(); ravenScheduleDocuments.Expect(r => r.SaveSchedules(Arg<List<ScheduleSmsForSendingLater>>.Is.NotNull, Arg<Guid>.Is.Equal(sendAllMessagesAtOnce.CoordinatorId))) .WhenCalled(r => sendingMessages = (List<ScheduleSmsForSendingLater>)r.Arguments[0]); ravenScheduleDocuments.Expect(r => r.SaveCoordinator(Arg<CoordinatorCreated>.Is.Anything)); var timingManager = MockRepository.GenerateMock<ICalculateSmsTiming>(); var sagaData = new CoordinateSmsSchedulingData { Originator = "originator", Id = Guid.NewGuid() }; Test.Initialize(); Test.Saga<CoordinateSmsScheduler>() .WithExternalDependencies(s => { s.TimingManager = timingManager; s.Data = sagaData; s.RavenScheduleDocuments = ravenScheduleDocuments; }) .ExpectSend<ScheduleSmsForSendingLater>(l => l.SendMessageAtUtc == sendTimeUtc && l.SmsData.Message == sendAllMessagesAtOnce.Messages[0].Message && l.SmsData.Mobile == sendAllMessagesAtOnce.Messages[0].Mobile && l.SmsMetaData == sendAllMessagesAtOnce.MetaData) .ExpectSend<ScheduleSmsForSendingLater>(l => l.SendMessageAtUtc == sendTimeUtc && l.SmsData.Message == sendAllMessagesAtOnce.Messages[1].Message && l.SmsData.Mobile == sendAllMessagesAtOnce.Messages[1].Mobile && l.SmsMetaData == sendAllMessagesAtOnce.MetaData) .ExpectPublish<CoordinatorCreated>(c => c.CoordinatorId == sendAllMessagesAtOnce.CoordinatorId && c.ScheduledMessages.Count == 2 && c.ScheduledMessages[0].Number == sendAllMessagesAtOnce.Messages[0].Mobile && c.ScheduledMessages[0].ScheduleMessageId == sendingMessages[0].ScheduleMessageId && c.ScheduledMessages[0].ScheduleMessageId != Guid.Empty && c.ScheduledMessages[0].ScheduledTimeUtc == sendTimeUtc && c.ScheduledMessages[1].Number == sendAllMessagesAtOnce.Messages[1].Mobile && c.ScheduledMessages[1].ScheduleMessageId == sendingMessages[1].ScheduleMessageId && c.ScheduledMessages[1].ScheduleMessageId != Guid.Empty && c.ScheduledMessages[1].ScheduledTimeUtc == sendTimeUtc && c.UserOlsenTimeZone == sendAllMessagesAtOnce.UserOlsenTimeZone) .ExpectTimeoutToBeSetAt<CoordinatorTimeout>((state, timeout) => timeout == sendAllMessagesAtOnce.SendTimeUtc.AddMinutes(2)) .When(s => s.Handle(sendAllMessagesAtOnce)); Assert.That(sendingMessages.Count, Is.EqualTo(2)); timingManager.VerifyAllExpectations(); }