public void Save_IsNotValid_DoesNotStore()
        {
            //Arrange
            var controller = new PageController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new PageViewModel { Id = 1, Body = "My page", Url = "about-us/team/managment" };
            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<Page>(1);
                Assert.IsNull(content);
            }
        }
        public void Save_IsNotValid_ReturnsFailureView()
        {
            //Arrange
            var controller = new PageController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new PageViewModel { Id = 1, Body = "My page", Url = "about-us/team/managment" };
            controller.ModelState.AddModelError("Body", "Body is too long");

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

            //Assert
            result.ViewName.ShouldBe("Failure");
        }
        public void Save_IsValid_StoresInDatabase()
        {
            //Arrange
            var controller = new PageController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new PageViewModel { Id = 1, Body = "My page", Url = "about-us/team/managment" };

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

            //Assert
            using (var session = _documentStore.OpenSession())
            {
                var page = session.Load<Page>(1);
                Assert.AreEqual("My page", page.Body);
                Assert.AreEqual("about-us/team/managment", page.Path);
            }
        }
        public void Save_IsValid_ReturnsSuccessView()
        {
            //Arrange
            var controller = new PageController { RavenSession = _documentStore.OpenSession() };
            var viewModel = new PageViewModel { Id = 1, Body = "My page", Url = "about-us/team/managment" };

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

            //Assert
            result.ViewName.ShouldBe("Success");
        }