public void ShouldDeleteANote() { // Arrange const string id = "id"; var note = new NoteWithCategories { Id = id, Message = "Message" }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); session.Load<NoteWithCategories>(id).Returns(note); // System under Test var repository = new RavenDbRepository(session); // Act repository.Delete(id); // Assert / Indirect Output session.Received().Delete(Arg.Is(note)); session.Received().SaveChanges(); }
public void ShouldCreateANoteAndAddTheDate() { // Arrange const string id = "id"; var today = DateTime.Now; var note = new Note { Id = id, Message = "Message" }; var categories = new[] { new Category { Name = "Important" } }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); // System under Test var repository = new RavenDbRepository(session); // Act repository.Create(note, categories); // Assert / Indirect Output session.Received().Store(Arg.Is<Note>(n => n.Id == id && n.Added.Date == today.Date)); session.Received().SaveChanges(); }
public void ShouldLoadASubsetOfCategories() { // Arrange var ids = new[] { "id" }; var category = new Category { Name = "Important" }; var expectedCategories = new[] { category }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); // Indirect Input session.Load<Category>(ids).Returns(expectedCategories); // System under Test var repository = new RavenDbRepository(session); // Act IEnumerable<Category> categories = repository.GetAllCategories(ids); // Assert Assert.That(categories, Is.EquivalentTo(expectedCategories)); Assert.That(categories.First().Name, Is.EqualTo(category.Name)); }
public void ShouldLoadAllCateogoriesIfNoIdsWereProvided() { // Arrange var category = new Category { Name = "Important" }; var expectedCategories = new List<Category> { category }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); var query = Substitute.For<IRavenQueryable<Category>>(); // Indirect Input session.Query<Category>().Returns(query); query.GetEnumerator().Returns(expectedCategories.GetEnumerator()); // System under Test var repository = new RavenDbRepository(session); // Act IEnumerable<Category> categories = repository.GetAllCategories(null); // Assert Assert.That(categories, Is.EquivalentTo(expectedCategories)); Assert.That(categories.First().Name, Is.EqualTo(category.Name)); }
public void ShouldUpdateANote() { // Arrange const string id = "123"; var note = new Note { Id = id, Message = "Message" }; var categories = new[] { new Category { Name = "Important" } }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); // System under Test var repository = new RavenDbRepository(session); repository.Update(note, categories); // Assert / Indirect Output session.Received().Store(Arg.Is<Note>(n => n.Id == id)); session.Received().SaveChanges(); }
public void ShouldReadOne() { // Arrange const string id = "Id"; var expectedNote = new NoteWithCategories { Id = id, Message = "Message" }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); // Indirect Input session.Load<NoteWithCategories>(Arg.Is(id)).Returns(expectedNote); // System under Test var repository = new RavenDbRepository(session); // Act NoteWithCategories note = repository.Read(id); // Assert Assert.That(note.Message, Is.EqualTo(note.Message)); }
public void ShouldReadAll() { // Arrange var note = new NoteWithCategories { Message = "Message" }; var expectedNotes = new List<NoteWithCategories> { note }; // Depedent-On Component var session = Substitute.For<IDocumentSession>(); var query = Substitute.For<IRavenQueryable<NoteWithCategories>>(); // Indirect Input session.Query<NoteWithCategories>().Returns(query); query.GetEnumerator().Returns(expectedNotes.GetEnumerator()); // System under Test var repository = new RavenDbRepository(session); // Act IEnumerable<NoteWithCategories> notes = repository.ReadAll(); // Assert Assert.That(notes, Is.EquivalentTo(expectedNotes)); Assert.That(notes.First().Message, Is.EqualTo(note.Message)); }