Esempio n. 1
0
 public void ShouldKnowThatWeCannotDeleteADocumentTwice()
 {
     var session = _documentStore.OpenSession();
     var model = new StaticPage { Id = 1, Title = "Misspelled" };
     session.Store(model);
     session.Delete(model);
     session.SaveChanges();
     session.Delete(model);
 }
Esempio n. 2
0
        public void ShouldKnowHowToDeleteAModelByItsIdWhenItExists()
        {
            var persistedModel = new StaticPage { Title = "Nandos Rocks", Id = 1337, Content = "Nandos makes chicken. You're going to love it." };
            var documentSession = new Mock<IDocumentSession>();
            documentSession.Setup(session => session.Load<StaticPage>(persistedModel.Id)).Returns(persistedModel);
            var repository = new BookWorm.Repository.Repository(documentSession.Object);

            repository.Delete<StaticPage>(persistedModel.Id);
            documentSession.Verify(session => session.Delete(persistedModel), Times.Once());
        }
Esempio n. 3
0
 public void ShouldKnowHowToDisplayAPage()
 {
     var id = 12;
     var repository = new Mock<Repository>();
     var savedPage = new StaticPage { Id = id, Title = "test title", Content = "some content" };
     repository.Setup(repo => repo.Get<StaticPage>(id)).Returns(savedPage);
     var controller = new PagesController(repository.Object);
     var result = controller.Details(id);
     repository.Verify(it => it.Get<StaticPage>(id), Times.Once());
     Assert.AreEqual(id, ((StaticPageInformation)result.Model).Model.Id);
 }
Esempio n. 4
0
        public void EditingNonExistentDocumentShouldRethrowInvalidOperationException()
        {
            var persistedModel = new StaticPage { Title = "Nandos Rocks", Id = 1337, Content = "Nandos makes veggie burger. You're going to love it." };
            var documentSession = new Mock<IDocumentSession>();
            documentSession.Setup(session => session.Load<StaticPage>(persistedModel.Id)).Returns(persistedModel);
            documentSession.Setup(session => session.Store(persistedModel))
                           .Throws(new System.InvalidOperationException());

            var repository = new BookWorm.Repository.Repository(documentSession.Object);
            repository.Edit<StaticPage>(persistedModel);
        }
Esempio n. 5
0
        public void ShouldHandleDuplicatePageProblem()
        {
            var repository = new Mock<Repository>();
            var duplicatePage = new StaticPage { Title = "test title", Content = "test content" };
            repository.Setup(repo => repo.Create(duplicatePage))
                      .Throws(new Raven.Client.Exceptions.NonUniqueObjectException());

            var controller = new PagesController(repository.Object);
            controller.Create(new StaticPageInformation {Model = duplicatePage});

            Assert.AreEqual(string.Format("Sorry, page {0} already exists.", duplicatePage.Title), controller.TempData["flashError"]);
        }
Esempio n. 6
0
        public void ShouldKnowHowToGetModelFromTheirId()
        {
            var persistedModel = new StaticPage {Title = "Nandos Rocks", Id = 1337, Content = "Nandos makes chicken. You're going to love it."};
            var documentSession = new Mock<IDocumentSession>();

            documentSession.Setup(session => session.Load<StaticPage>(persistedModel.Id)).Returns(persistedModel);
            var repository = new BookWorm.Repository.Repository(documentSession.Object);
            var retrievedModel = repository.Get<StaticPage>(persistedModel.Id);

            documentSession.Verify(session=>session.Load<StaticPage>(persistedModel.Id), Times.Once());
            Assert.AreEqual(persistedModel.Id , retrievedModel.Id);
        }
Esempio n. 7
0
 public ActionResult Create(StaticPage submittedStaticPage)
 {
     try
     {
         Model<StaticPage> savedPage = _repository.Create(submittedStaticPage);
         TempData["flash"] = string.Format("Added {0}", submittedStaticPage.Title);
         return RedirectToAction("Details", "Pages", new {id = savedPage.Id});
     }
     catch (NonUniqueObjectException ex)
     {
         TempData["flash"] = string.Format("Sorry, page {0} already exists.", submittedStaticPage.Title);
         return View();
     }
 }
Esempio n. 8
0
        public void ShouldKnowHowToRenderAnEditPage()
        {
            var repositoryMock = new Mock<Repository>();
            var page = new StaticPage {Id = 1, Title = "The Page"};
            repositoryMock.Setup(repo => repo.Get<StaticPage>(page.Id)).Returns(page);
            var pagesController = new PagesController(repositoryMock.Object);

            var result = pagesController.Edit(page.Id);
            var actualModel = (StaticPageInformation) result.Model;

            Assert.AreEqual(page.Title, actualModel.Model.Title);
            repositoryMock.Verify(repo => repo.Get<StaticPage>(1), Times.Once());
        }
Esempio n. 9
0
 public void ShouldOnlySetUpdatedAtOnUpdate()
 {
     using (var session = _documentStore.OpenSession())
     {
         var page = new StaticPage { Title = "test" };
         var repository = new Repository(session);
         var createdPage = repository.Create(page);
         var created_at = createdPage.CreatedAt;
         createdPage.Title = "new title";
         var before = DateTime.Now;
         Thread.Sleep(100);
         repository.Edit(createdPage);
         Assert.IsTrue(before <= createdPage.UpdatedAt);
         Assert.AreEqual(created_at, createdPage.CreatedAt);
     }
 }
Esempio n. 10
0
 public void ShouldKnowWeCanEvict()
 {
     var session = _documentStore.OpenSession();
     var model = new StaticPage { Id = 1, Title = "Misspelled" };
     session.Advanced.Evict(model);
 }
Esempio n. 11
0
 public void ShouldKnowHowToUpdateAPage()
 {
     var repository = new Mock<Repository>();
     var existingPage = new StaticPage {Id = 1, Title = "Derping for dummies."};
     repository.Setup(repo => repo.Edit(existingPage));
     var pagesController = new PagesController(repository.Object);
     var result = pagesController.Edit(new StaticPageInformation { Model = existingPage });
     Assert.AreEqual(existingPage.Id, result.RouteValues["id"]);
     repository.Verify(repo => repo.Edit(existingPage), Times.Once());
 }
Esempio n. 12
0
 public RedirectToRouteResult Edit(StaticPage updatedPage)
 {
     _repository.Edit(updatedPage);
     return RedirectToAction("Details", new {id = updatedPage.Id});
 }
Esempio n. 13
0
        public void ShouldKnowThatCreatedModelIsAssignedAnId()
        {
            var testModel = new StaticPage();
            var documentSession = new Mock<IDocumentSession>();

            documentSession.Setup(session => session.Store(testModel)).Callback<object>(arg => testModel.Id = 1);

            var repository = new BookWorm.Repository.Repository(documentSession.Object);
            repository.Create(testModel);

            documentSession.Verify(session => session.Store(testModel), Times.Once());
            Assert.AreNotEqual(0, testModel.Id);
        }
Esempio n. 14
0
 public void ShouldKnowThatWeCannotDeleteAnInvalidDocument()
 {
     var session = _documentStore.OpenSession();
     var model = new StaticPage { Id = 1, Title = "Misspelled" };
     session.Delete(model);
 }
Esempio n. 15
0
 public void ShouldKnowToRenderThePageContentAsMarkdown()
 {
     var id = 12;
     var repository = new Mock<Repository>();
     var markdown = new Markdown();
     var savedPage = new StaticPage { Id = id, Title = "test title", Content = "Hello\n=====\nWorld" };
     repository.Setup(repo => repo.Get<StaticPage>(id)).Returns(savedPage);
     var transformedContent = markdown.Transform(savedPage.Content);
     var controller = new PagesController(repository.Object);
     var result = controller.Details(id);
     Assert.AreEqual(transformedContent, ((StaticPageInformation)result.Model).Content);
 }
Esempio n. 16
0
 public void ShouldKnowThatWeCanOverwriteADocumentWithItself()
 {
     var session = _documentStore.OpenSession();
     var model = new StaticPage { Id = 1, Title = "Misspelled" };
     session.Store(model);
     model.Title = "Spelled";
     session.Store(model);
 }
Esempio n. 17
0
        public void ShouldNotStorePageWhenTitleIsInvalid()
        {
            var repository = new Mock<Repository>();
            var submittedPage = new StaticPage { Title = "", Content = "some content" };
            repository.Setup(repo => repo.Create(submittedPage)).Returns(submittedPage);

            var controller = new PagesController(repository.Object);
            ValidateViewModel(submittedPage, controller);
            Assert.IsFalse(controller.ModelState.IsValid);
        }
Esempio n. 18
0
 public void ShouldKnowSearchOrdersByUpdatedAt()
 {
     using (var session = _documentStore.OpenSession())
     {
         session.Store(new StaticPage { Id = 1, Title = "test", CreatedAt = DateTime.Now });
         var staticPage = new StaticPage {Id = 2, Title = "test2", CreatedAt = DateTime.Now.AddMinutes(1)};
         session.Store(staticPage);
         session.Store(new StaticPage { Id = 3, Title = "test2", CreatedAt = DateTime.Now.AddMinutes(2) });
         staticPage.UpdatedAt = DateTime.Now.AddMinutes(3);
         session.Store(staticPage);
         session.SaveChanges();
         var repository = new Repository(session);
         var results = repository.Search<StaticPage>(x => x.Title == "test2");
         Assert.AreEqual(2, results.Count());
         Assert.AreEqual(2, results.First().Id);
         Assert.AreEqual(3, results.Last().Id);
     }
 }
Esempio n. 19
0
 public void ShouldStorePageWhenCreated()
 {
     var repository = new Mock<Repository>();
     var submittedPage = new StaticPage { Title = "test title", Content = "some content" };
     repository.Setup(repo => repo.Create(submittedPage)).Returns(new StaticPage { Id = 1, Title = submittedPage.Title, Content = submittedPage.Content });
     var controller = new PagesController(repository.Object);
     var result = (RedirectToRouteResult)controller.Create(new StaticPageInformation {Model = submittedPage});
     repository.Verify(it => it.Create(submittedPage), Times.Once());
     Assert.AreEqual(string.Format("Added {0}", submittedPage.Title), controller.TempData["flashSuccess"]);
     Assert.AreEqual(1, result.RouteValues["id"]);
 }
Esempio n. 20
0
 public void ShouldSetCreatedAtAndUpdatedAtOnCreate()
 {
     var before = DateTime.Now;
     using (var session = _documentStore.OpenSession())
     {
         var page = new StaticPage {Title = "test"};
         var repository = new Repository(session);
         var createdPage = repository.Create(page);
         Assert.IsTrue(before <= createdPage.CreatedAt);
         Assert.AreEqual(createdPage.CreatedAt, createdPage.UpdatedAt);
     }
 }
Esempio n. 21
0
        public void ShouldRethrowRavenNonUniqueObjectException()
        {
            var testModel = new StaticPage();
            var documentSession = new Mock<IDocumentSession>();

            documentSession.Setup(session => session.Store(testModel))
                           .Throws(new Raven.Client.Exceptions.NonUniqueObjectException());

            var repository = new BookWorm.Repository.Repository(documentSession.Object);
            repository.Create(testModel);
        }