From 1ed9526a7967c24dc40fab7732c474ba1684113f Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 19 Nov 2012 13:59:47 +0000 Subject: [PATCH] SP-367, BIS-242: system tests added for replacing contained data sets of a container. SVN: 27683 --- .../DataSetOptimisticLockingTest.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/DataSetOptimisticLockingTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/DataSetOptimisticLockingTest.java index faddf276c10..8ca33f1fbb7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/DataSetOptimisticLockingTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/DataSetOptimisticLockingTest.java @@ -641,4 +641,93 @@ public class DataSetOptimisticLockingTest extends OptimisticLockingTestCase toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedContainedDataSet, "test"); } + + @Test + public void testReplaceContainedDataSetsViaPerformEntityOperation() + { + Experiment experiment = toolBox.createAndLoadExperiment(1); + NewContainerDataSet containerDataSet = toolBox.containerDataSet("DS-CONT", experiment); + NewDataSet dataSet1 = toolBox.dataSet("DS-1", experiment); + containerDataSet.setContainedDataSetCodes(Arrays.asList(dataSet1.getCode())); + ContainerDataSet loadedContainerDataSet = + (ContainerDataSet) toolBox.createAndLoadDataSet(containerDataSet); + assertEquals("[DS-1]", toolBox.extractCodes(loadedContainerDataSet.getContainedDataSets()) + .toString()); + NewDataSet dataSet2 = toolBox.dataSet("DS-2", experiment); + assertEquals(containerDataSet.getCode(), toolBox.loadDataSet(dataSet1.getCode()) + .tryGetContainer().getCode()); + toolBox.createAndLoadDataSet(dataSet2); + DataSetBatchUpdatesDTO dataSetBatchUpdates = new DataSetBatchUpdatesDTO(); + dataSetBatchUpdates.setVersion(loadedContainerDataSet.getVersion()); + dataSetBatchUpdates.setDatasetCode(loadedContainerDataSet.getCode()); + dataSetBatchUpdates.setDatasetId(new TechId(loadedContainerDataSet)); + dataSetBatchUpdates.setProperties(Arrays.<IEntityProperty> asList()); + dataSetBatchUpdates.setModifiedContainedDatasetCodesOrNull(new String[] + { dataSet2.getCode() }); + DataSetBatchUpdateDetails updateDetails = new DataSetBatchUpdateDetails(); + updateDetails.setContainerUpdateRequested(true); + dataSetBatchUpdates.setDetails(updateDetails); + AtomicEntityOperationDetailsBuilder builder = + new AtomicEntityOperationDetailsBuilder().dataSetUpdate(dataSetBatchUpdates).user( + "test"); + TimeIntervalChecker timeIntervalChecker = new TimeIntervalChecker(); + + etlService.performEntityOperations(systemSessionToken, builder.getDetails()); + + loadedContainerDataSet = (ContainerDataSet) toolBox.loadDataSet(containerDataSet.getCode()); + ExternalData loadedDataSet1 = toolBox.loadDataSet(dataSet1.getCode()); + ExternalData loadedDataSet2 = toolBox.loadDataSet(dataSet2.getCode()); + assertEquals("[DS-2]", toolBox.extractCodes(loadedContainerDataSet.getContainedDataSets()) + .toString()); + assertEquals(null, loadedDataSet1.tryGetContainer()); + assertEquals("DS-CONT", loadedDataSet2.tryGetContainer().getCode()); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedContainerDataSet, + "test"); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedDataSet1, "test"); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedDataSet2, "test"); + } + + @Test + public void testReplaceContainedDataSetsViaUpdateDataSet() + { + Experiment experiment = toolBox.createAndLoadExperiment(1); + NewContainerDataSet containerDataSet = toolBox.containerDataSet("DS-CONT", experiment); + NewDataSet dataSet1 = toolBox.dataSet("DS-1", experiment); + containerDataSet.setContainedDataSetCodes(Arrays.asList(dataSet1.getCode())); + ContainerDataSet loadedContainerDataSet = + (ContainerDataSet) toolBox.createAndLoadDataSet(containerDataSet); + assertEquals("[DS-1]", toolBox.extractCodes(loadedContainerDataSet.getContainedDataSets()) + .toString()); + NewDataSet dataSet2 = toolBox.dataSet("DS-2", experiment); + assertEquals(containerDataSet.getCode(), toolBox.loadDataSet(dataSet1.getCode()) + .tryGetContainer().getCode()); + toolBox.createAndLoadDataSet(dataSet2); + DataSetBatchUpdatesDTO dataSetBatchUpdates = new DataSetBatchUpdatesDTO(); + dataSetBatchUpdates.setVersion(loadedContainerDataSet.getVersion()); + dataSetBatchUpdates.setDatasetCode(loadedContainerDataSet.getCode()); + dataSetBatchUpdates.setDatasetId(new TechId(loadedContainerDataSet)); + dataSetBatchUpdates.setProperties(Arrays.<IEntityProperty> asList()); + dataSetBatchUpdates.setExperimentIdentifierOrNull(new ExperimentIdentifier(experiment)); + dataSetBatchUpdates.setModifiedContainedDatasetCodesOrNull(new String[] + { dataSet2.getCode() }); + DataSetBatchUpdateDetails updateDetails = new DataSetBatchUpdateDetails(); + updateDetails.setContainerUpdateRequested(true); + dataSetBatchUpdates.setDetails(updateDetails); + String sessionToken = logIntoCommonClientService().getSessionID(); + TimeIntervalChecker timeIntervalChecker = new TimeIntervalChecker(); + + etlService.updateDataSet(sessionToken, dataSetBatchUpdates); + + loadedContainerDataSet = (ContainerDataSet) toolBox.loadDataSet(containerDataSet.getCode()); + ExternalData loadedDataSet1 = toolBox.loadDataSet(dataSet1.getCode()); + ExternalData loadedDataSet2 = toolBox.loadDataSet(dataSet2.getCode()); + assertEquals("[DS-2]", toolBox.extractCodes(loadedContainerDataSet.getContainedDataSets()) + .toString()); + assertEquals(null, loadedDataSet1.tryGetContainer()); + assertEquals("DS-CONT", loadedDataSet2.tryGetContainer().getCode()); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedContainerDataSet, + "test"); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedDataSet1, "test"); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, loadedDataSet2, "test"); + } } -- GitLab