public void ScheduleValidCountryCodeReplacementNotSetSendsMessageReturnsToDetails() { var bus = MockRepository.GenerateMock<IBus>(); 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()); var controller = new ScheduleController { ControllerContext = new ControllerContext(), Bus = bus, RavenDocStore = ravenDocStore }; var scheduledTime = DateTime.Now.AddHours(1); var sendNowModel = new ScheduleModel { Number = "number", MessageBody = "m", ScheduledTime = scheduledTime }; var scheduledMessage = new ScheduleSmsForSendingLater(); bus.Expect(b => b.Send(Arg<ScheduleSmsForSendingLater>.Is.NotNull)) .WhenCalled(a => scheduledMessage = ((ScheduleSmsForSendingLater)((object[])a.Arguments[0])[0])); var result = (RedirectToRouteResult)controller.Create(sendNowModel); Assert.That(result.RouteValues["action"], Is.EqualTo("Details")); Assert.That(scheduledMessage.SendMessageAtUtc.ToString(), Is.EqualTo(scheduledTime.ToUniversalTime().ToString())); Assert.That(scheduledMessage.SmsData.Mobile, Is.EqualTo(sendNowModel.Number)); Assert.That(scheduledMessage.SmsData.Message, Is.EqualTo(sendNowModel.MessageBody)); }
public ActionResult Create(ScheduleModel schedule) { if (schedule.ScheduledTime < DateTime.Now) ModelState.AddModelError("ScheduledTime", "Schedule time must be in the future"); var isValid = TryValidateModel(schedule); if (isValid) { if (schedule.MessageBody.Length > 160) schedule.MessageBody = schedule.MessageBody.Substring(0, 160); var scheduleMessage = new ScheduleSmsForSendingLater { SendMessageAtUtc = schedule.ScheduledTime.ToUniversalTime(), SmsData = new SmsData(schedule.Number, schedule.MessageBody), ScheduleMessageId = Guid.NewGuid(), SmsMetaData = new SmsMetaData { Tags = string.IsNullOrWhiteSpace(schedule.Tags) ? null : schedule.Tags.Split(',').ToList(), Topic = schedule.Topic }, ConfirmationEmail = schedule.ConfirmationEmail }; Bus.Send(scheduleMessage); return RedirectToAction("Details", "Schedule", new { scheduleId = scheduleMessage.ScheduleMessageId.ToString() }); } return View("Create", schedule); }
public ActionResult Create(ScheduleModel schedule) { if (schedule.ScheduledTime < DateTime.Now) ModelState.AddModelError("ScheduledTime", "Schedule time must be in the future"); var isValid = TryValidateModel(schedule); if (isValid) { if (schedule.MessageBody.Length > 160) schedule.MessageBody = schedule.MessageBody.Substring(0, 160); CountryCodeReplacement countryCodeReplacement; using (var session = RavenDocStore.GetStore().OpenSession("Configuration")) { countryCodeReplacement = session.Load<CountryCodeReplacement>("CountryCodeConfig"); } var cleanInternationalNumber = countryCodeReplacement != null ? countryCodeReplacement.CleanAndInternationaliseNumber(schedule.Number) : schedule.Number.Trim(); var scheduleMessage = new ScheduleSmsForSendingLater { SendMessageAtUtc = schedule.ScheduledTime.ToUniversalTime(), SmsData = new SmsData(cleanInternationalNumber, schedule.MessageBody), ScheduleMessageId = Guid.NewGuid(), SmsMetaData = new SmsMetaData { Tags = string.IsNullOrWhiteSpace(schedule.Tags) ? null : schedule.Tags.Split(',').ToList(), Topic = schedule.Topic }, ConfirmationEmail = schedule.ConfirmationEmail }; Bus.Send(scheduleMessage); return RedirectToAction("Details", "Schedule", new { scheduleId = scheduleMessage.ScheduleMessageId.ToString() }); } return View("Create", schedule); }
public void ScheduleInvalidReturnsToCreatePage() { var controller = new ScheduleController { ControllerContext = new ControllerContext() }; var sendNowModel = new ScheduleModel { Number = "number", ScheduledTime = DateTime.Now.AddHours(1) }; var result = (ViewResult)controller.Create(sendNowModel); Assert.That(result.ViewName, Is.EqualTo("Create")); }
public void ScheduleValidSendsMessageReturnsToDetails() { var bus = MockRepository.GenerateMock<IBus>(); var controller = new ScheduleController { ControllerContext = new ControllerContext(), Bus = bus}; var scheduledTime = DateTime.Now.AddHours(1); var sendNowModel = new ScheduleModel { Number = "number", MessageBody = "m", ScheduledTime = scheduledTime }; var scheduledMessage = new ScheduleSmsForSendingLater(); bus.Expect(b => b.Send(Arg<ScheduleSmsForSendingLater>.Is.NotNull)) .WhenCalled(a => scheduledMessage = ((ScheduleSmsForSendingLater)((object[])a.Arguments[0])[0])); var result = (RedirectToRouteResult)controller.Create(sendNowModel); Assert.That(result.RouteValues["action"], Is.EqualTo("Details")); Assert.That(scheduledMessage.SendMessageAtUtc.ToString(), Is.EqualTo(scheduledTime.ToUniversalTime().ToString())); Assert.That(scheduledMessage.SmsData.Mobile, Is.EqualTo(sendNowModel.Number)); Assert.That(scheduledMessage.SmsData.Message, Is.EqualTo(sendNowModel.MessageBody)); }