RM-5931 Adding transaction fix for integration test

This commit is contained in:
Ross Gale
2017-12-06 15:57:39 +00:00
parent 3f5363351e
commit 96e53ff363
2 changed files with 82 additions and 53 deletions

View File

@@ -43,29 +43,28 @@ import org.apache.commons.lang.StringUtils;
public class RM1914Test extends BaseRMTestCase public class RM1914Test extends BaseRMTestCase
{ {
//Fields required across transactions
NodeRef record1, transferFolder;
public void testRM1914() throws Exception public void testRM1914() throws Exception
{ {
doBehaviourDrivenTest(new BehaviourDrivenTest() doBehaviourDrivenTest(new BehaviourDrivenTest()
{ {
NodeRef record1;
NodeRef record2;
public void given() public void given()
{ {
// 1. Any Category1, Category2 are created
// create test holds
NodeRef category1 = filePlanService.createRecordCategory(filePlan, GUID.generate()); NodeRef category1 = filePlanService.createRecordCategory(filePlan, GUID.generate());
NodeRef category2 = filePlanService.createRecordCategory(filePlan, GUID.generate()); NodeRef category2 = filePlanService.createRecordCategory(filePlan, GUID.generate());
// 2. Disposition schedule is created for the Category1:
// - applied on Record
Map<QName, Serializable> dsProps = new HashMap<QName, Serializable>(3); Map<QName, Serializable> dsProps = new HashMap<QName, Serializable>(3);
dsProps.put(PROP_DISPOSITION_AUTHORITY, CommonRMTestUtils.DEFAULT_DISPOSITION_AUTHORITY); dsProps.put(PROP_DISPOSITION_AUTHORITY, CommonRMTestUtils.DEFAULT_DISPOSITION_AUTHORITY);
dsProps.put(PROP_DISPOSITION_INSTRUCTIONS, GUID.generate()); dsProps.put(PROP_DISPOSITION_INSTRUCTIONS, GUID.generate());
dsProps.put(PROP_RECORD_LEVEL_DISPOSITION, true); dsProps.put(PROP_RECORD_LEVEL_DISPOSITION, true);
DispositionSchedule dispositionSchedule1 = dispositionService.createDispositionSchedule(category1,
DispositionSchedule dispositionSchedule1 = dispositionService.createDispositionSchedule(category1, dsProps); dsProps);
NodeRef folder1 = recordFolderService.createRecordFolder(category1, GUID.generate());
// - add cutoff after "Related Record Transferred To Inactive Storage" completion event // - add cutoff after "Related Record Transferred To Inactive Storage" completion event
Map<QName, Serializable> dispositionAction1 = new HashMap<QName, Serializable>(3); Map<QName, Serializable> dispositionAction1 = new HashMap<QName, Serializable>(3);
@@ -74,19 +73,17 @@ public class RM1914Test extends BaseRMTestCase
List<String> events = new ArrayList<String>(1); List<String> events = new ArrayList<String>(1);
events.add("related_record_trasfered_inactive_storage"); events.add("related_record_trasfered_inactive_storage");
dispositionAction1.put(PROP_DISPOSITION_EVENT, (Serializable)events); dispositionAction1.put(PROP_DISPOSITION_EVENT, (Serializable) events);
dispositionService.addDispositionActionDefinition(dispositionSchedule1, dispositionAction1); dispositionService.addDispositionActionDefinition(dispositionSchedule1, dispositionAction1);
// 3. Folder1 > Record1 is created inside Category1 // 3. Folder1 > Record1 is created inside Category1
NodeRef folder1 = recordFolderService.createRecordFolder(category1, GUID.generate());
record1 = recordService.createRecordFromContent(folder1, GUID.generate(), TYPE_CONTENT, null, null); record1 = recordService.createRecordFromContent(folder1, GUID.generate(), TYPE_CONTENT, null, null);
// 4. Disposition schedule is created for the Category2: // 4. Disposition schedule is created for the Category2:
// applied on Record // applied on Record
DispositionSchedule dispositionSchedule2 = dispositionService.createDispositionSchedule(category2, dsProps); DispositionSchedule dispositionSchedule2 = dispositionService.createDispositionSchedule(category2,
dsProps);
// - cutoff immediatelly // - cutoff immediatelly
Map<QName, Serializable> dispositionAction2_1 = new HashMap<QName, Serializable>(3); Map<QName, Serializable> dispositionAction2_1 = new HashMap<QName, Serializable>(3);
@@ -104,26 +101,27 @@ public class RM1914Test extends BaseRMTestCase
dispositionAction2_2.put(PROP_DISPOSITION_LOCATION, StringUtils.EMPTY); dispositionAction2_2.put(PROP_DISPOSITION_LOCATION, StringUtils.EMPTY);
dispositionService.addDispositionActionDefinition(dispositionSchedule2, dispositionAction2_2); dispositionService.addDispositionActionDefinition(dispositionSchedule2, dispositionAction2_2);
// 5. Folder2 > Record2 is created inside Category2 // 5. Folder2 > Record2 is created inside Category2
NodeRef folder2 = recordFolderService.createRecordFolder(category2, GUID.generate()); NodeRef folder2 = recordFolderService.createRecordFolder(category2, GUID.generate());
record2 = recordService.createRecordFromContent(folder2, GUID.generate(), TYPE_CONTENT, null, null); NodeRef record2 = recordService.createRecordFromContent(folder2, GUID.generate(), TYPE_CONTENT, null,
null);
// 6. Record1 and Record2 are completed // 6. Record1 and Record2 are completed
utils.completeRecord(record1); utils.completeRecord(record1);
utils.completeRecord(record2); utils.completeRecord(record2);
// 7. Create Cross-Reference link from Record1 to Record2 // 7. Create Cross-Reference link from Record1 to Record2
relationshipService.addRelationship(CUSTOM_REF_CROSSREFERENCE.getLocalName(), record1, record2); relationshipService.addRelationship(CUSTOM_REF_CROSSREFERENCE.getLocalName(), record1, record2);
// 8. Cut off and transfer Record2
rmActionService.executeRecordsManagementAction(record2, CutOffAction.NAME, null);
transferFolder = (NodeRef) rmActionService.executeRecordsManagementAction(record2, TransferAction.NAME)
.getValue();
} }
public void when() public void when()
{ {
// 8. Cut off and transfer Record2
rmActionService.executeRecordsManagementAction(record2, CutOffAction.NAME, null);
NodeRef transferFolder = (NodeRef) rmActionService.executeRecordsManagementAction(record2, TransferAction.NAME).getValue();
rmActionService.executeRecordsManagementAction(transferFolder, TransferCompleteAction.NAME); rmActionService.executeRecordsManagementAction(transferFolder, TransferCompleteAction.NAME);
} }
@@ -135,5 +133,6 @@ public class RM1914Test extends BaseRMTestCase
} }
}); });
} }
} }

View File

@@ -34,6 +34,8 @@ import org.alfresco.service.cmr.repository.NodeRef;
*/ */
public class FreezeServiceImplTest extends BaseRMTestCase public class FreezeServiceImplTest extends BaseRMTestCase
{ {
private List<NodeRef> holdAssocs;
@Override @Override
protected boolean isRecordTest() protected boolean isRecordTest()
{ {
@@ -47,6 +49,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
*/ */
public void testFreezeService() throws Exception public void testFreezeService() throws Exception
{ {
doTestInTransaction(new Test<Void>() doTestInTransaction(new Test<Void>()
{ {
@Override @Override
@@ -63,19 +66,25 @@ public class FreezeServiceImplTest extends BaseRMTestCase
// Freeze a record // Freeze a record
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null); NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
assertNotNull(hold101); assertNotNull(hold101);
holdService.addToHold(hold101, recordOne); holdService.addToHold(hold101, recordOne);
//assertTrue(freezeService.hasFrozenChildren(rmFolder)); //assertTrue(freezeService.hasFrozenChildren(rmFolder));
// Check the hold exists // Check the hold exists
List<NodeRef> holdAssocs = holdService.getHolds(filePlan); holdAssocs = holdService.getHolds(filePlan);
assertNotNull(holdAssocs); assertNotNull(holdAssocs);
assertEquals(1, holdAssocs.size()); assertEquals(1, holdAssocs.size());
NodeRef holdNodeRef = holdAssocs.iterator().next();
NodeRef holdNodeRef = holdAssocs.iterator()
.next();
assertEquals(holdNodeRef, hold101); assertEquals(holdNodeRef, hold101);
assertTrue(holdService.isHold(holdNodeRef)); assertTrue(holdService.isHold(holdNodeRef));
assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef)); assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef));
List<NodeRef> frozenNodes = holdService.getHeld(holdNodeRef); List<NodeRef> frozenNodes = holdService.getHeld(holdNodeRef);
assertNotNull(frozenNodes); assertNotNull(frozenNodes);
assertEquals(1, frozenNodes.size()); assertEquals(1, frozenNodes.size());
@@ -98,6 +107,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
records.add(recordTwo); records.add(recordTwo);
records.add(recordThree); records.add(recordThree);
NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null); NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null);
holdService.addToHold(newHold, records); holdService.addToHold(newHold, records);
assertNotNull(newHold); assertNotNull(newHold);
assertTrue(holdService.isHold(newHold)); assertTrue(holdService.isHold(newHold));
@@ -106,6 +116,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
holdAssocs = holdService.getHolds(filePlan); holdAssocs = holdService.getHolds(filePlan);
assertNotNull(holdAssocs); assertNotNull(holdAssocs);
assertEquals(2, holdAssocs.size()); assertEquals(2, holdAssocs.size());
for (NodeRef hold : holdAssocs) for (NodeRef hold : holdAssocs)
{ {
String reason = holdService.getHoldReason(hold); String reason = holdService.getHoldReason(hold);
@@ -129,7 +140,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
} }
// Check the nodes are frozen // Check the nodes are frozen
final List<NodeRef> testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree}); final List<NodeRef> testRecords = Arrays.asList(new NodeRef[] { recordOne, recordTwo, recordThree });
for (NodeRef nr : testRecords) for (NodeRef nr : testRecords)
{ {
assertTrue(freezeService.isFrozen(nr)); assertTrue(freezeService.isFrozen(nr));
@@ -139,7 +150,6 @@ public class FreezeServiceImplTest extends BaseRMTestCase
// Unfreeze a node // Unfreeze a node
holdService.removeFromAllHolds(recordThree); holdService.removeFromAllHolds(recordThree);
// Check the holds // Check the holds
holdAssocs = holdService.getHolds(filePlan); holdAssocs = holdService.getHolds(filePlan);
assertNotNull(holdAssocs); assertNotNull(holdAssocs);
@@ -174,9 +184,18 @@ public class FreezeServiceImplTest extends BaseRMTestCase
assertNotNull(freezeService.getFreezeInitiator(recordTwo)); assertNotNull(freezeService.getFreezeInitiator(recordTwo));
assertFalse(freezeService.isFrozen(recordThree)); assertFalse(freezeService.isFrozen(recordThree));
assertFalse(freezeService.isFrozen(recordFour)); assertFalse(freezeService.isFrozen(recordFour));
return null;
}
});
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
doTestInTransaction(new Test<Void>()
{
@Override
public Void run() throws Exception
{
// Relinquish the first hold // Relinquish the first hold
holdNodeRef = holdAssocs.iterator().next(); NodeRef holdNodeRef = holdAssocs.iterator()
.next();
holdService.deleteHold(holdNodeRef); holdService.deleteHold(holdNodeRef);
// Check the existing hold // Check the existing hold
@@ -185,7 +204,8 @@ public class FreezeServiceImplTest extends BaseRMTestCase
assertEquals(1, holdAssocs.size()); assertEquals(1, holdAssocs.size());
// Relinquish the second hold // Relinquish the second hold
holdNodeRef = holdAssocs.iterator().next(); holdNodeRef = holdAssocs.iterator()
.next();
holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef)); holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef));
// hold is not automatically removed // hold is not automatically removed
@@ -194,6 +214,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
// delete hold // delete hold
holdService.deleteHold(holdNodeRef); holdService.deleteHold(holdNodeRef);
holdAssocs = holdService.getHolds(filePlan); holdAssocs = holdService.getHolds(filePlan);
assertEquals(0, holdAssocs.size()); assertEquals(0, holdAssocs.size());
@@ -213,14 +234,22 @@ public class FreezeServiceImplTest extends BaseRMTestCase
nodes.add(recordThree); nodes.add(recordThree);
holdService.addToHold(hold, nodes); holdService.addToHold(hold, nodes);
//assertTrue(freezeService.hasFrozenChildren(rmFolder)); //assertTrue(freezeService.hasFrozenChildren(rmFolder));
// Check the hold // Check the hold
holdAssocs = holdService.getHolds(filePlan); holdAssocs = holdService.getHolds(filePlan);
assertNotNull(holdAssocs); assertNotNull(holdAssocs);
assertEquals(1, holdAssocs.size()); assertEquals(1, holdAssocs.size());
return null;
}
});
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
doTestInTransaction(new Test<Void>()
{
@Override
public Void run() throws Exception
{
// Relinquish the first hold // Relinquish the first hold
holdService.deleteHold(holdAssocs.iterator().next()); holdService.deleteHold(holdAssocs.iterator()
.next());
// Check the nodes are unfrozen // Check the nodes are unfrozen
assertFalse(freezeService.isFrozen(recordOne)); assertFalse(freezeService.isFrozen(recordOne));
@@ -233,4 +262,5 @@ public class FreezeServiceImplTest extends BaseRMTestCase
} }
}); });
} }
} }