From bbfd3bb7a8909c53c8502e224fe32e071d2a2d4c Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Mon, 20 Feb 2012 14:18:09 +0000
Subject: [PATCH] LMS:2809 update the test

SVN: 24508
---
 .../openbis/systemtest/DeletionTestCase.java  | 92 ++++++++++++-------
 1 file changed, 58 insertions(+), 34 deletions(-)

diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java
index 6b9b904b08d..f60b57389ac 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java
@@ -28,6 +28,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.annotation.NotTransactional;
 import org.testng.annotations.AfterMethod;
@@ -81,6 +83,8 @@ public class DeletionTestCase extends SystemTestCase
 
     private List<Sample> registeredSamples;
 
+    private List<Sample> registeredSamplesThatShouldBeDeleted;
+
     private List<DeletionPE> preExistingDeletions;
 
     private Set<Long> preExistingDeletionIDs;
@@ -102,6 +106,7 @@ public class DeletionTestCase extends SystemTestCase
     {
         registeredExperiments = new ArrayList<Experiment>();
         registeredSamples = new ArrayList<Sample>();
+        registeredSamplesThatShouldBeDeleted = new ArrayList<Sample>();
 
         SessionContext sessionContext = logIntoCommonClientService();
         sessionToken = sessionContext.getSessionID();
@@ -126,20 +131,20 @@ public class DeletionTestCase extends SystemTestCase
         createChildSample("E1", "S1.2", "S1.2.1");
         createChildSample("E1", "S1.2", "S1.2.2");
         createChildSample("E1", "S1.2.1", "S1.2.1.1");
-        createChildSample("E2", "S1.2.1", "S1.2.1.2");
+        createChildSample("E2", "S1.2.1", "S1.2.1.2", false);
 
-        createChildSample("E2", "S1.3", "S1.3.1");
+        createChildSample("E2", "S1.3", "S1.3.1", false);
         createComponentSample("E1", "S1.3.1", "S1.3.1.1");
         createComponentSample("E1", "S1.3.1", "S1.3.1.2");
-        createComponentSample("E2", "S1.3.1", "S1.3.1.3");
+        createComponentSample("E2", "S1.3.1", "S1.3.1.3", false);
 
         // nested children
         createChildSample("E1", "S1", "S1.4");
         createChildSample("E1", "S1.4", "S1.4.1");
-        createChildSample("E2", "S1.4.1", "S1.4.1.1");
+        createChildSample("E2", "S1.4.1", "S1.4.1.1", false);
         createChildSample("E1", "S1.4.1.1", "S1.4.1.1.1");
         createChildSample("E1", "S1.4.1.1", "S1.4.1.1.2");
-        createChildSample("E2", "S1.4.1.1.1", "S1.4.1.1.1.1");
+        createChildSample("E2", "S1.4.1.1.1", "S1.4.1.1.1.1", false);
 
         // try also components under nested children
         createComponentSample("E1", "S1.4.1.1.1.1", "S1.4.1.1.1.1.1");
@@ -154,7 +159,7 @@ public class DeletionTestCase extends SystemTestCase
         // some more samples in an "S2"-branch
         createSample("E1", "S2");
         createChildSample("E1", "S2", "S2.1");
-        createChildSample("E2", "S2", "S2.2");
+        createChildSample("E2", "S2", "S2.2", false);
         createChildSample("E1", "S2", "S2.3");
         createComponentSample("E1", "S2.1", "S2.2");
 
@@ -190,7 +195,8 @@ public class DeletionTestCase extends SystemTestCase
                 REASON, DeletionType.TRASH);
 
         assertExperimentDoesNotExist(e1.getCode());
-        assertSamplesDoNotExist(registeredSamples);
+
+        assertSamplesDoNotExist(registeredSamplesThatShouldBeDeleted);
 
         List<DeletionPE> deletions = listDeletions();
         assertEquals(1, deletions.size());
@@ -214,7 +220,7 @@ public class DeletionTestCase extends SystemTestCase
         final TechId deletionId2 = TechId.create(listDeletions().get(0));
         commonServer.deletePermanently(sessionToken, Collections.singletonList(deletionId2), false);
         assertExperimentDoesNotExist(e1.getCode());
-        assertSamplesDoNotExist(registeredSamples);
+        assertSamplesDoNotExist(registeredSamplesThatShouldBeDeleted);
     }
 
     @Test
@@ -238,14 +244,23 @@ public class DeletionTestCase extends SystemTestCase
     public void testDeleteSampleS14()
     {
         Sample s14 = findSampleByCode("S1.4");
+
+        CollectionUtils.filter(registeredSamples, new Predicate<Sample>()
+            {
+                public boolean evaluate(Sample s)
+                {
+                    return !s.getCode().equals("S1.4");
+                }
+            });
+
         final TechId sampleId = new TechId(s14);
         // delete
         commonServer.deleteSamples(sessionToken, Collections.singletonList(sampleId), REASON,
                 DeletionType.TRASH);
 
         assertExperimentExists("E1");
-        List<Sample> deletedSamples = getSamplesWithPrefix(s14.getCode());
-        assertSamplesDoNotExist(deletedSamples);
+        assertSamplesDoNotExist(Collections.singletonList(s14));
+        assertSamplesExist(registeredSamples);
 
         List<DeletionPE> deletions = listDeletions();
         assertEquals(1, deletions.size());
@@ -260,7 +275,7 @@ public class DeletionTestCase extends SystemTestCase
         final TechId deletionId1 = TechId.create(deletions.get(0));
         commonServer.revertDeletions(sessionToken, Collections.singletonList(deletionId1));
 
-        assertSamplesExist(deletedSamples);
+        assertSamplesExist(Collections.singletonList(s14));
 
         // delete permanently
         commonServer.deleteSamples(sessionToken, Collections.singletonList(sampleId), REASON,
@@ -268,7 +283,8 @@ public class DeletionTestCase extends SystemTestCase
         final TechId deletionId2 = TechId.create(listDeletions().get(0));
         commonServer.deletePermanently(sessionToken, Collections.singletonList(deletionId2), false);
         assertExperimentExists("E1");
-        assertSamplesDoNotExist(deletedSamples);
+        assertSamplesDoNotExist(Collections.singletonList(s14));
+        assertSamplesExist(registeredSamples);
     }
 
     private List<TableModelRowWithObject<Deletion>> getDeletionTable()
@@ -327,30 +343,22 @@ public class DeletionTestCase extends SystemTestCase
     {
         for (Sample sample : samples)
         {
-            try
-            {
-                commonServer.getSampleInfo(sessionToken, new TechId(sample));
-                final String error =
-                        String.format("Sample '%s' should not exist", sample.getIdentifier());
-                fail(error);
-            } catch (UserFailureException ufe)
-            {
-                // OK
-            }
+            assertSampleDoNotExists(sample);
         }
     }
 
-    private List<Sample> getSamplesWithPrefix(String codePrefix)
+    private void assertSampleDoNotExists(Sample sample)
     {
-        List<Sample> result = new ArrayList<Sample>();
-        for (Sample sample : registeredSamples)
+        try
         {
-            if (sample.getCode().startsWith(codePrefix))
-            {
-                result.add(sample);
-            }
+            commonServer.getSampleInfo(sessionToken, new TechId(sample));
+            final String error =
+                    String.format("Sample '%s' should not exist", sample.getIdentifier());
+            fail(error);
+        } catch (UserFailureException ufe)
+        {
+            // OK
         }
-        return result;
     }
 
     private void createExperiment(String code)
@@ -368,7 +376,7 @@ public class DeletionTestCase extends SystemTestCase
         registeredExperiments.add(exp);
     }
 
-    private void createSample(String experimentCode, NewSample newSample)
+    private void createSample(String experimentCode, NewSample newSample, boolean shouldBeDeleted)
     {
         Experiment exp = findExperimentByCode(experimentCode);
         newSample.setExperimentIdentifier(exp.getIdentifier());
@@ -379,29 +387,45 @@ public class DeletionTestCase extends SystemTestCase
         final Sample sample = sampParentAndDerived.getParent();
         assertNotNull(sample);
         registeredSamples.add(sample);
+        if (shouldBeDeleted)
+        {
+            registeredSamplesThatShouldBeDeleted.add(sample);
+        }
     }
 
     private void createSample(String experimentCode, String sampleCode)
     {
         NewSample newSample = createNewSample(sampleCode);
-        createSample(experimentCode, newSample);
+        createSample(experimentCode, newSample, true);
     }
 
     private void createChildSample(String experimentCode, String parentCode, String sampleCode)
+    {
+        createChildSample(experimentCode, parentCode, sampleCode, true);
+    }
+
+    private void createChildSample(String experimentCode, String parentCode, String sampleCode,
+            boolean shouldBeDeleted)
     {
         NewSample newSample = createNewSample(sampleCode);
         newSample.setParentsOrNull(new String[]
             { parentCode });
-        createSample(experimentCode, newSample);
+        createSample(experimentCode, newSample, shouldBeDeleted);
     }
 
     private void createComponentSample(String experimentCode, String containerCode,
             String sampleCode)
+    {
+        createComponentSample(experimentCode, containerCode, sampleCode, true);
+    }
+
+    private void createComponentSample(String experimentCode, String containerCode,
+            String sampleCode, boolean shouldBeDeleted)
     {
         NewSample newSample = createNewSample(sampleCode);
         Sample container = findSampleByCode(containerCode);
         newSample.setContainerIdentifier(container.getIdentifier());
-        createSample(experimentCode, newSample);
+        createSample(experimentCode, newSample, shouldBeDeleted);
     }
 
     private NewSample createNewSample(String sampleCode)
-- 
GitLab