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; 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);
} }

View File

@@ -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
* *

View File

@@ -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;
}
});
}
} }