From 5f98ec5aeff7337e49a5cae6d4d1090d95125c88 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Sun, 27 Sep 2009 20:10:11 +0000
Subject: [PATCH] fixed & extended VocabularyBO test

SVN: 12715
---
 .../server/business/bo/AbstractBOTest.java    |  6 +++
 .../server/business/bo/VocabularyBOTest.java  | 45 ++++++++++++++++---
 2 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBOTest.java
index 7f035be7296..0de3f4cec19 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBOTest.java
@@ -43,6 +43,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IPropertyTypeDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleTypeDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IVocabularyDAO;
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.IVocabularyTermDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.IPermIdDAO;
 
 /**
@@ -82,6 +83,8 @@ public abstract class AbstractBOTest extends AssertJUnit
 
     IVocabularyDAO vocabularyDAO;
 
+    IVocabularyTermDAO vocabularyTermDAO;
+
     IEntityPropertiesConverter propertiesConverter;
 
     IDataSetTypeDAO dataSetTypeDAO;
@@ -118,6 +121,7 @@ public abstract class AbstractBOTest extends AssertJUnit
         propertyTypeDAO = context.mock(IPropertyTypeDAO.class);
         entityPropertyTypeDAO = context.mock(IEntityPropertyTypeDAO.class);
         vocabularyDAO = context.mock(IVocabularyDAO.class);
+        vocabularyTermDAO = context.mock(IVocabularyTermDAO.class);
         materialDAO = context.mock(IMaterialDAO.class);
         dataSetTypeDAO = context.mock(IDataSetTypeDAO.class);
         fileFormatTypeDAO = context.mock(IFileFormatTypeDAO.class);
@@ -152,6 +156,8 @@ public abstract class AbstractBOTest extends AssertJUnit
                     will(returnValue(dataStoreDAO));
                     allowing(daoFactory).getVocabularyDAO();
                     will(returnValue(vocabularyDAO));
+                    allowing(daoFactory).getVocabularyTermDAO();
+                    will(returnValue(vocabularyTermDAO));
                     allowing(daoFactory).getEventDAO();
                     will(returnValue(eventDAO));
                     allowing(daoFactory).getAuthorizationGroupDAO();
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/VocabularyBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/VocabularyBOTest.java
index d6bc74d28b0..cd70b27f041 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/VocabularyBOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/VocabularyBOTest.java
@@ -148,16 +148,19 @@ public final class VocabularyBOTest extends AbstractBOTest
     public final void testSave()
     {
         final VocabularyBO vocabularyBO = createVocabularyBO();
+        final NewVocabulary vocabulary = createVocabulary();
         context.checking(new Expectations()
             {
                 {
                     one(daoFactory).getHomeDatabaseInstance();
                     will(returnValue(ManagerTestTool.EXAMPLE_DATABASE_INSTANCE));
 
+                    exactly(vocabulary.getTerms().size()).of(vocabularyTermDAO).validate(
+                            with(aNonNull(VocabularyTermPE.class)));
+
                     one(vocabularyDAO).createOrUpdateVocabulary(with(aNonNull(VocabularyPE.class)));
                 }
             });
-        final NewVocabulary vocabulary = createVocabulary();
         vocabularyBO.define(vocabulary);
         vocabularyBO.save();
         context.assertIsSatisfied();
@@ -167,17 +170,47 @@ public final class VocabularyBOTest extends AbstractBOTest
     public final void testSaveWithException()
     {
         final VocabularyBO vocabularyBO = createVocabularyBO();
+        final NewVocabulary vocabulary = createVocabulary();
         context.checking(new Expectations()
             {
                 {
                     one(daoFactory).getHomeDatabaseInstance();
                     will(returnValue(ManagerTestTool.EXAMPLE_DATABASE_INSTANCE));
 
+                    exactly(vocabulary.getTerms().size()).of(vocabularyTermDAO).validate(
+                            with(aNonNull(VocabularyTermPE.class)));
+
                     one(vocabularyDAO).createOrUpdateVocabulary(with(aNonNull(VocabularyPE.class)));
                     will(throwException(new DataIntegrityViolationException(null)));
                 }
             });
+        vocabularyBO.define(vocabulary);
+        try
+        {
+            vocabularyBO.save();
+            fail(String.format("'%s' expected.", UserFailureException.class.getSimpleName()));
+        } catch (final UserFailureException ex)
+        {
+            // Nothing to do here.
+        }
+        context.assertIsSatisfied();
+    }
+
+    @Test
+    public final void testSaveWithTermValidationException()
+    {
+        final VocabularyBO vocabularyBO = createVocabularyBO();
         final NewVocabulary vocabulary = createVocabulary();
+        context.checking(new Expectations()
+            {
+                {
+                    one(daoFactory).getHomeDatabaseInstance();
+                    will(returnValue(ManagerTestTool.EXAMPLE_DATABASE_INSTANCE));
+
+                    one(vocabularyTermDAO).validate(with(aNonNull(VocabularyTermPE.class)));
+                    will(throwException(new DataIntegrityViolationException(null)));
+                }
+            });
         vocabularyBO.define(vocabulary);
         try
         {
@@ -344,9 +377,8 @@ public final class VocabularyBOTest extends AbstractBOTest
             fail("IllegalArgumentException expected.");
         } catch (IllegalArgumentException e)
         {
-            assertEquals(
-                    "Invalid vocabulary replacement because of unknown replacement: 2 -> [1]", e
-                            .getMessage());
+            assertEquals("Invalid vocabulary replacement because of unknown replacement: 2 -> [1]",
+                    e.getMessage());
         }
         context.assertIsSatisfied();
     }
@@ -377,9 +409,8 @@ public final class VocabularyBOTest extends AbstractBOTest
             fail("IllegalArgumentException expected.");
         } catch (IllegalArgumentException e)
         {
-            assertEquals(
-                    "Invalid vocabulary replacement because of unknown replacement: 1 -> [3]", e
-                            .getMessage());
+            assertEquals("Invalid vocabulary replacement because of unknown replacement: 1 -> [3]",
+                    e.getMessage());
         }
         context.assertIsSatisfied();
     }
-- 
GitLab