public void Add_ChildInCache_SetChildParentId() { // Arrange var treeContext = new CachedTreeContext(); var dbTreeRepository = Substitute.For <IDbTreeRepository>(); var cachedTreeRepository = new CachedTreeRepository(treeContext, dbTreeRepository); var parentId = Guid.NewGuid(); var childNode = new TreeNode { Id = Guid.NewGuid(), ParentId = null, OriginalParentId = parentId }; treeContext.Tree.Add(childNode.Id, childNode); var parentNode = new TreeNode { Id = parentId }; // Act cachedTreeRepository.Add(parentNode); // Assert Assert.That(childNode.ParentId, Is.EqualTo(parentId)); }
public void Add_ChildToDeletedParent_DeleteChildAndGrandChild() { // Arrange var treeContext = new CachedTreeContext(); var dbTreeRepository = Substitute.For <IDbTreeRepository>(); var cachedTreeRepository = new CachedTreeRepository(treeContext, dbTreeRepository); var parentNode = new TreeNode { Id = Guid.NewGuid(), ParentId = null, IsDeleted = true, State = NodeState.Deleted }; var childNode = new TreeNode { Id = Guid.NewGuid(), ParentId = parentNode.Id }; var grandchildNode = new TreeNode { Id = Guid.NewGuid(), ParentId = null, OriginalParentId = childNode.Id }; treeContext.Tree.Add(parentNode.Id, parentNode); treeContext.Tree.Add(grandchildNode.Id, grandchildNode); // Act cachedTreeRepository.Add(childNode); // Assert Assert.That(treeContext.Tree[childNode.Id], Is.EqualTo(childNode)); Assert.That(childNode.IsDeleted, Is.True); Assert.That(grandchildNode.ParentId, Is.EqualTo(childNode.Id)); Assert.That(grandchildNode.IsDeleted, Is.True); }
public void Add_NodeWithoutId_AddsNodeWithNewIdAndAddedState() { // Arrange var treeContext = new CachedTreeContext(); var dbTreeRepository = Substitute.For <IDbTreeRepository>(); var cachedTreeRepository = new CachedTreeRepository(treeContext, dbTreeRepository); var node = new TreeNode(); // Act cachedTreeRepository.Add(node); // Assert Assert.That(node.Id, Is.Not.EqualTo(Guid.Empty)); Assert.That(node.State, Is.EqualTo(NodeState.Added)); Assert.That(treeContext.Tree[node.Id], Is.EqualTo(node)); }
public void Add_NodeIdIsNotEmpty_AddsNodeWithoutChangingIdAndState() { // Arrange var treeContext = new CachedTreeContext(); var dbTreeRepository = Substitute.For <IDbTreeRepository>(); var cachedTreeRepository = new CachedTreeRepository(treeContext, dbTreeRepository); var id = Guid.NewGuid(); var node = new TreeNode { Id = id }; // Act cachedTreeRepository.Add(node); // Assert Assert.That(node.Id, Is.EqualTo(id)); Assert.That(node.State, Is.EqualTo(NodeState.Unchanged)); Assert.That(treeContext.Tree[node.Id], Is.EqualTo(node)); }
public void Add_ChildWithoutParent_AddsChildNodeToRootAndStoreOriginalParentId() { // Arrange var treeContext = new CachedTreeContext(); var dbTreeRepository = Substitute.For <IDbTreeRepository>(); var cachedTreeRepository = new CachedTreeRepository(treeContext, dbTreeRepository); var parentId = Guid.NewGuid(); var childNode = new TreeNode { Id = Guid.NewGuid(), ParentId = parentId }; // Act cachedTreeRepository.Add(childNode); // Assert Assert.That(childNode.ParentId, Is.Null); Assert.That(childNode.OriginalParentId, Is.EqualTo(parentId)); Assert.That(treeContext.Tree[childNode.Id], Is.EqualTo(childNode)); }