public void ValidCountryConfigUpdatesNumberSendsMessageReturnsToDetails() { 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 { CountryCode = "+61", LeadingNumberToReplace = "n"}); var sentMessage = new SendOneMessageNow(); bus.Expect(b => b.Send(Arg<SendOneMessageNow>.Is.NotNull)) .WhenCalled(a => sentMessage = ((SendOneMessageNow)((object[])a.Arguments[0])[0])); var controller = new SendNowController { ControllerContext = new ControllerContext(), Bus = bus, RavenDocStore = ravenDocStore }; var sendNowModel = new SendNowModel { MessageBody = "asdflj", Number = "number" , ConfirmationEmail = "sdakflj" }; var result = (RedirectToRouteResult)controller.Create(sendNowModel); Assert.That(result.RouteValues["action"], Is.EqualTo("Details")); Assert.That(sentMessage.SmsData.Mobile, Is.EqualTo("+61umber")); Assert.That(sentMessage.SmsData.Message, Is.EqualTo(sendNowModel.MessageBody)); Assert.That(sentMessage.ConfirmationEmailAddress, Is.EqualTo(sendNowModel.ConfirmationEmail)); bus.VerifyAllExpectations(); }
public ActionResult Create(SendNowModel model) { var isValid = TryValidateModel(model); if(isValid) { model.MessageId = Guid.NewGuid(); if (model.MessageBody.Length > 160) model.MessageBody = model.MessageBody.Substring(0, 160); CountryCodeReplacement countryCodeReplacement; using (var session = RavenDocStore.GetStore().OpenSession("Configuration")) { countryCodeReplacement = session.Load<CountryCodeReplacement>("CountryCodeConfig"); } var cleanInternationalNumber = countryCodeReplacement != null ? countryCodeReplacement.CleanAndInternationaliseNumber(model.Number) : model.Number.Trim(); var sendOneMessageNow = new SendOneMessageNow { CorrelationId = model.MessageId, SmsData = new SmsData(cleanInternationalNumber, model.MessageBody), ConfirmationEmailAddress = model.ConfirmationEmail, SmsMetaData = new SmsMetaData { Tags = string.IsNullOrEmpty(model.Tags) ? null : model.Tags.Split(',').ToList().Select(t => t.Trim()).ToList(), Topic = model.Topic } }; Bus.Send(sendOneMessageNow); return RedirectToAction("Details", "SendNow", new { requestId = model.MessageId.ToString()}); } return View("Create", model); }
public void InvalidNumberReturnsToCreatePageWithValidation() { var controller = new SendNowController { ControllerContext = new ControllerContext() }; var sendNowModel = new SendNowModel { MessageBody = "asdflj" }; var result = (ViewResult)controller.Create(sendNowModel); Assert.That(result.ViewName, Is.EqualTo("Create")); }
public void ValidSendsMessageReturnsToDetails() { var bus = MockRepository.GenerateMock<IBus>(); var sentMessage = new SendOneMessageNow(); bus.Expect(b => b.Send(Arg<SendOneMessageNow>.Is.NotNull)) .WhenCalled(a => sentMessage = ((SendOneMessageNow)((object[])a.Arguments[0])[0])); var controller = new SendNowController { ControllerContext = new ControllerContext(), Bus = bus }; var sendNowModel = new SendNowModel { MessageBody = "asdflj", Number = "number" , ConfirmationEmail = "sdakflj" }; var result = (RedirectToRouteResult)controller.Create(sendNowModel); Assert.That(result.RouteValues["action"], Is.EqualTo("Details")); Assert.That(sentMessage.SmsData.Mobile, Is.EqualTo(sendNowModel.Number)); Assert.That(sentMessage.SmsData.Message, Is.EqualTo(sendNowModel.MessageBody)); Assert.That(sentMessage.ConfirmationEmailAddress, Is.EqualTo(sendNowModel.ConfirmationEmail)); bus.VerifyAllExpectations(); }
public ActionResult Create(SendNowModel model) { var isValid = TryValidateModel(model); if(isValid) { model.MessageId = Guid.NewGuid(); if (model.MessageBody.Length > 160) model.MessageBody = model.MessageBody.Substring(0, 160); var sendOneMessageNow = new SendOneMessageNow { CorrelationId = model.MessageId, SmsData = new SmsData(model.Number, model.MessageBody), ConfirmationEmailAddress = model.ConfirmationEmail, SmsMetaData = new SmsMetaData { Tags = string.IsNullOrEmpty(model.Tags) ? null : model.Tags.Split(',').ToList().Select(t => t.Trim()).ToList(), Topic = model.Topic } }; Bus.Send(sendOneMessageNow); return RedirectToAction("Details", "SendNow", new { requestId = model.MessageId.ToString()}); } return View("Create", model); }