mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Test for FreezeService
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@43581 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.module.org_alfresco_module_rm.freeze;
|
package org.alfresco.module.org_alfresco_module_rm.freeze;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -153,4 +154,20 @@ public interface FreezeService
|
|||||||
* @return true if the given nodeRef has frozen children, false otherwise
|
* @return true if the given nodeRef has frozen children, false otherwise
|
||||||
*/
|
*/
|
||||||
boolean hasFrozenChildren(NodeRef nodeRef);
|
boolean hasFrozenChildren(NodeRef nodeRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the date of the freeze for the given node, null if the node is not frozen
|
||||||
|
*
|
||||||
|
* @param nodeRef The nodeRef for which the date check will be performed
|
||||||
|
* @return Date The of the freeze or null
|
||||||
|
*/
|
||||||
|
Date getFreezeDate(NodeRef nodeRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the initiator of the freeze for the given node, null if the node is not frozen
|
||||||
|
*
|
||||||
|
* @param nodeRef The nodeRef for which the initiator check will be performed
|
||||||
|
* @return String The initiator of the freeze or null
|
||||||
|
*/
|
||||||
|
String getFreezeInitiator(NodeRef nodeRef);
|
||||||
}
|
}
|
||||||
|
@@ -489,6 +489,50 @@ public class FreezeServiceImpl implements FreezeService,
|
|||||||
return getFrozen(nodeRef).size() > 0 ? true : false;
|
return getFrozen(nodeRef).size() > 0 ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeDate(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Date getFreezeDate(NodeRef nodeRef)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
|
if (isFrozen(nodeRef))
|
||||||
|
{
|
||||||
|
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_AT);
|
||||||
|
if (property != null)
|
||||||
|
{
|
||||||
|
return (Date) property;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeInitiator(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getFreezeInitiator(NodeRef nodeRef)
|
||||||
|
{
|
||||||
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
|
if (isFrozen(nodeRef))
|
||||||
|
{
|
||||||
|
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_BY);
|
||||||
|
if (property != null)
|
||||||
|
{
|
||||||
|
return (String) property;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper Methods
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a hold using the given nodeRef and reason
|
* Creates a hold using the given nodeRef and reason
|
||||||
*
|
*
|
||||||
|
@@ -1,22 +1,23 @@
|
|||||||
package org.alfresco.module.org_alfresco_module_rm.test.service;
|
package org.alfresco.module.org_alfresco_module_rm.test.service;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.dataset.DataSetService;
|
import org.alfresco.module.org_alfresco_module_rm.dataset.DataSetService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
|
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
|
||||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
|
||||||
|
|
||||||
public class FreezeServiceImplTest extends BaseRMTestCase
|
public class FreezeServiceImplTest extends BaseRMTestCase
|
||||||
{
|
{
|
||||||
@@ -52,10 +53,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
|||||||
freezeService = (FreezeService) applicationContext.getBean("freezeService");
|
freezeService = (FreezeService) applicationContext.getBean("freezeService");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void testFreezeService() throws Exception
|
||||||
* @see FreezeService#freeze(String, NodeRef)
|
|
||||||
*/
|
|
||||||
public void testFreeze() throws Exception
|
|
||||||
{
|
{
|
||||||
doTestInTransaction(new Test<Void>()
|
doTestInTransaction(new Test<Void>()
|
||||||
{
|
{
|
||||||
@@ -74,26 +72,26 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
|||||||
@Override
|
@Override
|
||||||
public void test(Void result) throws Exception
|
public void test(Void result) throws Exception
|
||||||
{
|
{
|
||||||
assertTrue(nodeService.hasAspect(recordOne, ASPECT_RECORD));
|
assertTrue(rmService.isRecord(recordOne));
|
||||||
assertTrue(nodeService.hasAspect(recordOne, ASPECT_FILE_PLAN_COMPONENT));
|
assertTrue(rmService.isFilePlanComponent(recordOne));
|
||||||
|
|
||||||
freezeService.freeze("FreezeReason", recordOne);
|
freezeService.freeze("FreezeReason", recordOne);
|
||||||
|
|
||||||
// Check the hold exists
|
// Check the hold exists
|
||||||
List<ChildAssociationRef> holdAssocs = nodeService.getChildAssocs(filePlan, ASSOC_HOLDS, RegexQNamePattern.MATCH_ALL);
|
Set<NodeRef> holdAssocs = freezeService.getHolds(filePlan);
|
||||||
assertNotNull(holdAssocs);
|
assertNotNull(holdAssocs);
|
||||||
assertEquals(1, holdAssocs.size());
|
assertEquals(1, holdAssocs.size());
|
||||||
NodeRef holdNodeRef = holdAssocs.get(0).getChildRef();
|
NodeRef holdNodeRef = holdAssocs.iterator().next();
|
||||||
assertTrue(freezeService.isHold(holdNodeRef));
|
assertTrue(freezeService.isHold(holdNodeRef));
|
||||||
assertEquals("FreezeReason", freezeService.getReason(holdNodeRef));
|
assertEquals("FreezeReason", freezeService.getReason(holdNodeRef));
|
||||||
Set<NodeRef> freezeAssocs = freezeService.getFrozen(holdNodeRef);
|
Set<NodeRef> frozenNodes = freezeService.getFrozen(holdNodeRef);
|
||||||
assertNotNull(freezeAssocs);
|
assertNotNull(frozenNodes);
|
||||||
assertEquals(1, freezeAssocs.size());
|
assertEquals(1, frozenNodes.size());
|
||||||
|
|
||||||
// Check the nodes are frozen
|
// Check the nodes are frozen
|
||||||
assertTrue(freezeService.isFrozen(recordOne));
|
assertTrue(freezeService.isFrozen(recordOne));
|
||||||
assertNotNull(nodeService.getProperty(recordOne, PROP_FROZEN_AT));
|
assertNotNull(freezeService.getFreezeDate(recordOne));
|
||||||
assertNotNull(nodeService.getProperty(recordOne, PROP_FROZEN_BY));
|
assertNotNull(freezeService.getFreezeInitiator(recordOne));
|
||||||
assertFalse(freezeService.isFrozen(recordTwo));
|
assertFalse(freezeService.isFrozen(recordTwo));
|
||||||
assertFalse(freezeService.isFrozen(recordThree));
|
assertFalse(freezeService.isFrozen(recordThree));
|
||||||
|
|
||||||
@@ -102,8 +100,98 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
|||||||
|
|
||||||
// Check the hold has been updated
|
// Check the hold has been updated
|
||||||
assertEquals("NewFreezeReason", freezeService.getReason(holdNodeRef));
|
assertEquals("NewFreezeReason", freezeService.getReason(holdNodeRef));
|
||||||
|
|
||||||
|
// Freeze a number of records
|
||||||
|
Set<NodeRef> records = new HashSet<NodeRef>();
|
||||||
|
records.add(recordOne);
|
||||||
|
records.add(recordTwo);
|
||||||
|
records.add(recordThree);
|
||||||
|
NodeRef newHold = freezeService.freeze("Freeze a set of nodes", records);
|
||||||
|
assertNotNull(newHold);
|
||||||
|
assertTrue(freezeService.isHold(newHold));
|
||||||
|
|
||||||
|
// Check the holds exist
|
||||||
|
holdAssocs = freezeService.getHolds(filePlan);
|
||||||
|
assertNotNull(holdAssocs);
|
||||||
|
assertEquals(2, holdAssocs.size());
|
||||||
|
for (NodeRef hold : holdAssocs)
|
||||||
|
{
|
||||||
|
String reason = freezeService.getReason(hold);
|
||||||
|
if (reason.equals("Freeze a set of nodes"))
|
||||||
|
{
|
||||||
|
assertEquals(newHold, hold);
|
||||||
|
frozenNodes = freezeService.getFrozen(hold);
|
||||||
|
assertNotNull(frozenNodes);
|
||||||
|
assertEquals(3, frozenNodes.size());
|
||||||
|
}
|
||||||
|
else if (reason.equals("NewFreezeReason"))
|
||||||
|
{
|
||||||
|
frozenNodes = freezeService.getFrozen(hold);
|
||||||
|
assertNotNull(frozenNodes);
|
||||||
|
assertEquals(1, frozenNodes.size());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the nodes are frozen
|
||||||
|
final List<NodeRef> testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree});
|
||||||
|
for (NodeRef nr : testRecords)
|
||||||
|
{
|
||||||
|
assertTrue(freezeService.isFrozen(nr));
|
||||||
|
assertNotNull(freezeService.getFreezeDate(nr));
|
||||||
|
assertNotNull(freezeService.getFreezeInitiator(nr));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unfreeze a node
|
||||||
|
freezeService.unFreeze(recordThree);
|
||||||
|
|
||||||
|
// Check the holds
|
||||||
|
holdAssocs = freezeService.getHolds(filePlan);
|
||||||
|
assertNotNull(holdAssocs);
|
||||||
|
assertEquals(2, holdAssocs.size());
|
||||||
|
for (NodeRef hold : holdAssocs)
|
||||||
|
{
|
||||||
|
String reason = freezeService.getReason(hold);
|
||||||
|
if (reason.equals("Freeze a set of nodes"))
|
||||||
|
{
|
||||||
|
frozenNodes = freezeService.getFrozen(hold);
|
||||||
|
assertNotNull(frozenNodes);
|
||||||
|
assertEquals(2, frozenNodes.size());
|
||||||
|
}
|
||||||
|
else if (reason.equals("NewFreezeReason"))
|
||||||
|
{
|
||||||
|
frozenNodes = freezeService.getFrozen(hold);
|
||||||
|
assertNotNull(frozenNodes);
|
||||||
|
assertEquals(1, frozenNodes.size());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the nodes are frozen
|
||||||
|
assertTrue(freezeService.isFrozen(recordOne));
|
||||||
|
assertNotNull(freezeService.getFreezeDate(recordOne));
|
||||||
|
assertNotNull(freezeService.getFreezeInitiator(recordOne));
|
||||||
|
assertTrue(freezeService.isFrozen(recordTwo));
|
||||||
|
assertNotNull(freezeService.getFreezeDate(recordTwo));
|
||||||
|
assertNotNull(freezeService.getFreezeInitiator(recordTwo));
|
||||||
|
assertFalse(freezeService.isFrozen(recordThree));
|
||||||
|
|
||||||
|
// FIXME
|
||||||
|
freezeService.unFreeze(recordTwo);
|
||||||
|
freezeService.unFreeze(recordOne);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method for getting a record folder from the test data
|
||||||
|
*
|
||||||
|
* @return NodeRef of a record folder from the test data
|
||||||
|
*/
|
||||||
private NodeRef getRecordFolder()
|
private NodeRef getRecordFolder()
|
||||||
{
|
{
|
||||||
// Load the data set into the specified file plan
|
// Load the data set into the specified file plan
|
||||||
@@ -126,6 +214,14 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
|||||||
return recFol13;
|
return recFol13;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method for creating a record
|
||||||
|
*
|
||||||
|
* @param recordFolder Record folder in which the record will be created
|
||||||
|
* @param name The name of the record
|
||||||
|
* @param someTextContent The content of the record
|
||||||
|
* @return NodeRef of the created record
|
||||||
|
*/
|
||||||
private NodeRef createRecord(NodeRef recordFolder, String name, String someTextContent)
|
private NodeRef createRecord(NodeRef recordFolder, String name, String someTextContent)
|
||||||
{
|
{
|
||||||
// Create the document
|
// Create the document
|
||||||
@@ -146,36 +242,4 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see FreezeService#unFreeze(NodeRef)
|
|
||||||
*/
|
|
||||||
public void testUnFreeze() throws Exception
|
|
||||||
{
|
|
||||||
doTestInTransaction(new Test<Void>()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Void run() throws Exception
|
|
||||||
{
|
|
||||||
// FIXME
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see FreezeService#relinquish(NodeRef)
|
|
||||||
*/
|
|
||||||
public void testRelinquish() throws Exception
|
|
||||||
{
|
|
||||||
doTestInTransaction(new Test<Void>()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Void run() throws Exception
|
|
||||||
{
|
|
||||||
// FIXME
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user