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:
Tuna Aksoy
2012-11-13 16:42:44 +00:00
parent d8ab355a05
commit ceb945aa82
3 changed files with 172 additions and 47 deletions

View File

@@ -18,6 +18,7 @@
*/
package org.alfresco.module.org_alfresco_module_rm.freeze;
import java.util.Date;
import java.util.Set;
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
*/
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);
}

View File

@@ -489,6 +489,50 @@ public class FreezeServiceImpl implements FreezeService,
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
*

View File

@@ -1,22 +1,23 @@
package org.alfresco.module.org_alfresco_module_rm.test.service;
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
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.test.util.BaseRMTestCase;
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.NodeRef;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
public class FreezeServiceImplTest extends BaseRMTestCase
{
@@ -52,10 +53,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
freezeService = (FreezeService) applicationContext.getBean("freezeService");
}
/**
* @see FreezeService#freeze(String, NodeRef)
*/
public void testFreeze() throws Exception
public void testFreezeService() throws Exception
{
doTestInTransaction(new Test<Void>()
{
@@ -74,26 +72,26 @@ public class FreezeServiceImplTest extends BaseRMTestCase
@Override
public void test(Void result) throws Exception
{
assertTrue(nodeService.hasAspect(recordOne, ASPECT_RECORD));
assertTrue(nodeService.hasAspect(recordOne, ASPECT_FILE_PLAN_COMPONENT));
assertTrue(rmService.isRecord(recordOne));
assertTrue(rmService.isFilePlanComponent(recordOne));
freezeService.freeze("FreezeReason", recordOne);
// Check the hold exists
List<ChildAssociationRef> holdAssocs = nodeService.getChildAssocs(filePlan, ASSOC_HOLDS, RegexQNamePattern.MATCH_ALL);
Set<NodeRef> holdAssocs = freezeService.getHolds(filePlan);
assertNotNull(holdAssocs);
assertEquals(1, holdAssocs.size());
NodeRef holdNodeRef = holdAssocs.get(0).getChildRef();
NodeRef holdNodeRef = holdAssocs.iterator().next();
assertTrue(freezeService.isHold(holdNodeRef));
assertEquals("FreezeReason", freezeService.getReason(holdNodeRef));
Set<NodeRef> freezeAssocs = freezeService.getFrozen(holdNodeRef);
assertNotNull(freezeAssocs);
assertEquals(1, freezeAssocs.size());
Set<NodeRef> frozenNodes = freezeService.getFrozen(holdNodeRef);
assertNotNull(frozenNodes);
assertEquals(1, frozenNodes.size());
// Check the nodes are frozen
assertTrue(freezeService.isFrozen(recordOne));
assertNotNull(nodeService.getProperty(recordOne, PROP_FROZEN_AT));
assertNotNull(nodeService.getProperty(recordOne, PROP_FROZEN_BY));
assertNotNull(freezeService.getFreezeDate(recordOne));
assertNotNull(freezeService.getFreezeInitiator(recordOne));
assertFalse(freezeService.isFrozen(recordTwo));
assertFalse(freezeService.isFrozen(recordThree));
@@ -102,8 +100,98 @@ public class FreezeServiceImplTest extends BaseRMTestCase
// Check the hold has been updated
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()
{
// Load the data set into the specified file plan
@@ -126,6 +214,14 @@ public class FreezeServiceImplTest extends BaseRMTestCase
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)
{
// 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;
}
});
}
}