diff --git a/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java b/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java index 7e5be748d2..04c631fdb6 100644 --- a/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java +++ b/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java @@ -697,6 +697,36 @@ public abstract class BaseNodeServiceTest extends BaseSpringTest endTransaction(); } + public void testCascadeDelete() throws Exception + { + // build the node and commit the node graph + Map assocRefs = buildNodeGraph(nodeService, rootNodeRef); + NodeRef n3Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n1_p_n3")).getChildRef(); + NodeRef n4Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n2_p_n4")).getChildRef(); + NodeRef n6Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n3_p_n6")).getChildRef(); + NodeRef n7Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n5_p_n7")).getChildRef(); + NodeRef n8Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n6_p_n8")).getChildRef(); + + // control checks + assertEquals("n6 not present", 1, countNodesByReference(n6Ref)); + assertEquals("n8 not present", 1, countNodesByReference(n8Ref)); + assertEquals("n6 primary parent association not present on n3", 1, countChildrenOfNode(n3Ref)); + assertEquals("n6 secondary parent association not present on n4", 1, countChildrenOfNode(n4Ref)); + assertEquals("n8 secondary parent association not present on n7", 1, countChildrenOfNode(n7Ref)); + + // delete n6 + nodeService.deleteNode(n6Ref); + // commit to check + setComplete(); + endTransaction(); + + assertEquals("n6 not directly deleted", 0, countNodesByReference(n6Ref)); + assertEquals("n8 not cascade deleted", 0, countNodesByReference(n8Ref)); + assertEquals("n6 primary parent association not removed from n3", 0, countChildrenOfNode(n3Ref)); + assertEquals("n6 secondary parent association not removed from n4", 0, countChildrenOfNode(n4Ref)); + assertEquals("n8 secondary parent association not removed from n7", 0, countChildrenOfNode(n7Ref)); + } + private int countChildrenOfNode(NodeRef nodeRef) { String query =