diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index 7a903fc7b8..b463de52b8 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -1563,7 +1563,7 @@ org.alfresco.module.org_alfresco_module_rm.hold.HoldService.isHold=RM_ALLOW org.alfresco.module.org_alfresco_module_rm.hold.HoldService.getHolds=RM.Read.0,AFTER_RM.FilterNode org.alfresco.module.org_alfresco_module_rm.hold.HoldService.getHold=RM.Read.0,AFTER_RM.FilterNode - org.alfresco.module.org_alfresco_module_rm.hold.HoldService.heldBy=RM.Read.0,AFTER_RM.FilterNode + org.alfresco.module.org_alfresco_module_rm.hold.HoldService.heldBy=ACL_NODE.0.sys:base.Read,RM.Read.0,AFTER_RM.FilterNode org.alfresco.module.org_alfresco_module_rm.hold.HoldService.getHeld=RM.Read.0,AFTER_RM.FilterNode org.alfresco.module.org_alfresco_module_rm.hold.HoldService.createHold=RM_CAP.0.rma:filePlanComponent.CreateHold org.alfresco.module.org_alfresco_module_rm.hold.HoldService.getHoldReason=RM.Read.0 diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/AddRemoveFromHoldTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/AddRemoveFromHoldTest.java index 9d1d6d685b..581a6c922c 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/AddRemoveFromHoldTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/AddRemoveFromHoldTest.java @@ -44,7 +44,65 @@ import org.springframework.extensions.webscripts.GUID; public class AddRemoveFromHoldTest extends BaseRMTestCase { private static final int RECORD_COUNT = 10; - + + @Override + protected boolean isCollaborationSiteTest() + { + return true; + } + + public void testAddActiveContentToHold() + { + doBehaviourDrivenTest(new BehaviourDrivenTest() + { + private NodeRef hold; + + public void given() + { + // Check that the document is not a record + assertFalse("The document should not be a record", recordService.isRecord(dmDocument)); + + // create a hold + hold = holdService.createHold(filePlan, GUID.generate(), GUID.generate(), GUID.generate()); + + // assert current states + assertFalse(freezeService.isFrozen(dmDocument)); + assertFalse(freezeService.hasFrozenChildren(dmFolder)); + + // additional check for child held caching + assertFalse(nodeService.hasAspect(dmFolder, ASPECT_HELD_CHILDREN)); + } + + public void when() throws Exception + { + // add the active content to hold + holdService.addToHold(hold, dmDocument); + } + + public void then() + { + // active content is held + assertTrue(freezeService.isFrozen(dmDocument)); + + // collaboration folder has frozen children + assertFalse(freezeService.isFrozen(dmFolder)); + assertTrue(freezeService.hasFrozenChildren(dmFolder)); + + // collaboration folder is not held + assertFalse(holdService.getHeld(hold).contains(dmFolder)); + assertFalse(holdService.heldBy(dmFolder, true).contains(hold)); + + // hold contains active content + assertTrue(holdService.getHeld(hold).contains(dmDocument)); + assertTrue(holdService.heldBy(dmDocument, true).contains(hold)); + + // additional check for child held caching + assertTrue(nodeService.hasAspect(dmFolder, ASPECT_HELD_CHILDREN)); + assertEquals(1, nodeService.getProperty(dmFolder, PROP_HELD_CHILDREN_COUNT)); + } + }); + } + public void testAddRecordToHold() { doBehaviourDrivenTest(new BehaviourDrivenTest()