public virtual ActionResult Save(ContentViewModel viewModel)
 {
     if (ModelState.IsValid)
     {
         var content = Mapper.Map<Content.Content>(viewModel);
         RavenSession.Store(content);
         return PartialView("Success");
     }
     return PartialView("Failure");
 }
        public void Save_IsNotValid_ReturnsFailureView()
        {
            //Arrange
            var controller = new ContentController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new ContentViewModel { Id = "Slogan", Body = "My content view model" };
            controller.ModelState.AddModelError("Body", "Body is too long");

            //Act
            var result = (PartialViewResult)controller.Save(viewModel);

            //Assert
            result.ViewName.ShouldBe("Failure");
        }
        public void Save_IsNotValid_DoesNotStore()
        {
            //Arrange
            var controller = new ContentController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new ContentViewModel { Id = "Slogan", Body = "My content view model" };
            controller.ModelState.AddModelError("Body", "Body is too long");

            //Act
            var result = controller.Save(viewModel);
            controller.RavenSession.SaveChanges();

            //Assert
            using (var session = _documentStore.OpenSession())
            {
                var content = session.Load<Content.Content>("Slogan");
                Assert.IsNull(content);
            }
        }
        public void Save_IsValid_ReturnsSuccessView()
        {
            //Arrange
            var controller = new ContentController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new ContentViewModel { Id = "Slogan", Body = "My content view model" };

            //Act
            var result = (PartialViewResult)controller.Save(viewModel);

            //Assert
            result.ViewName.ShouldBe("Success");
        }
        public void Save_IsValid_StoresInDatabase()
        {
            //Arrange
            var controller = new ContentController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new ContentViewModel {Id = "Slogan", Body = "My content view model"};

            //Act
            controller.Save(viewModel);
            controller.RavenSession.SaveChanges();

            //Assert
            using (var session = _documentStore.OpenSession())
            {
                var content = session.Load<Content.Content>("Slogan");
                Assert.AreEqual("Slogan", content.Id);
                Assert.AreEqual("My content view model", content.Body);
            }
        }