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