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); }
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()); }
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); }
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); }
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"]); }
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); }
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(); } }
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()); }
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); } }
public void ShouldKnowWeCanEvict() { var session = _documentStore.OpenSession(); var model = new StaticPage { Id = 1, Title = "Misspelled" }; session.Advanced.Evict(model); }
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()); }
public RedirectToRouteResult Edit(StaticPage updatedPage) { _repository.Edit(updatedPage); return RedirectToAction("Details", new {id = updatedPage.Id}); }
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); }
public void ShouldKnowThatWeCannotDeleteAnInvalidDocument() { var session = _documentStore.OpenSession(); var model = new StaticPage { Id = 1, Title = "Misspelled" }; session.Delete(model); }
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); }
public void ShouldKnowThatWeCanOverwriteADocumentWithItself() { var session = _documentStore.OpenSession(); var model = new StaticPage { Id = 1, Title = "Misspelled" }; session.Store(model); model.Title = "Spelled"; session.Store(model); }
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); }
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); } }
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"]); }
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); } }
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); }