added saveTypeDesignation Test (but is not running for some reason)
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 23 May 2011 12:32:45 +0000 (12:32 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 23 May 2011 12:32:45 +0000 (12:32 +0000)
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TypeDesignationDaoHibernateImplTest.java

index 76dbbd181c73f867695a5d346cd9ed1adf79fbba..bd401c978f3c8410324ade35f50e534933413d16 100644 (file)
@@ -14,35 +14,55 @@ import static junit.framework.Assert.assertNotNull;
 import static org.junit.Assert.*;\r
 \r
 import java.util.List;\r
+import java.util.Set;\r
+import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.hibernate.util.JDBCExceptionReporter;\r
+import org.junit.Assert;\r
 import org.junit.Test;\r
 import org.unitils.dbunit.annotation.DataSet;\r
+import org.unitils.dbunit.annotation.ExpectedDataSet;\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
 import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;\r
+import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;\r
+import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
 import eu.etaxonomy.cdm.persistence.dao.name.ITypeDesignationDao;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
 \r
 /**\r
  * @author a.babadshanjan\r
+ * @author a.mueller\r
  * @created 25.05.2009\r
- * @version 1.0\r
+ * @version 1.1\r
  */\r
 @DataSet\r
 public class TypeDesignationDaoHibernateImplTest extends CdmIntegrationTest {\r
        @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger\r
-                       .getLogger(TypeDesignationDaoHibernateImplTest.class);\r
+       private static final Logger logger = Logger.getLogger(TypeDesignationDaoHibernateImplTest.class);\r
 \r
        @SpringBeanByType\r
        ITypeDesignationDao typeDesignationDao;\r
        \r
+       @SpringBeanByType\r
+       ITaxonNameDao nameDao;\r
+       \r
+       @SpringBeanByType\r
+       IAgentDao agentDao;\r
+\r
+       \r
        /**\r
         * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.name.TypeDesignationHibernateImpl#TypeDesignationHibernateImpl()}.\r
         */\r
@@ -56,14 +76,60 @@ public class TypeDesignationDaoHibernateImplTest extends CdmIntegrationTest {
        @Test\r
        public void testGetAllTypeDesignations() {\r
                List<TypeDesignationBase> typeDesignations = typeDesignationDao.getAllTypeDesignations(100, 0);\r
-               assertEquals(typeDesignations.size(), 2);\r
+               assertEquals(2, typeDesignations.size());\r
+               SpecimenTypeDesignation specTypeDesig = null;\r
                for (TypeDesignationBase typeDesignation : typeDesignations) {\r
                        if (typeDesignation.isInstanceOf(NameTypeDesignation.class)) {\r
                                assertTrue(typeDesignation.getTypeStatus().isInstanceOf(NameTypeDesignationStatus.class));\r
                        } else if (typeDesignation.isInstanceOf(SpecimenTypeDesignation.class)) {\r
+                               Assert.assertNull("There should be only 1 specimen type designation but this is already the second", specTypeDesig);\r
                                TypeDesignationStatusBase typeDesignationStatus = typeDesignation.getTypeStatus();\r
                                assertTrue(typeDesignationStatus.isInstanceOf(SpecimenTypeDesignationStatus.class));\r
+                               specTypeDesig = CdmBase.deproxy(typeDesignation,SpecimenTypeDesignation.class);\r
                        }\r
                }\r
+               Set<TaxonNameBase> names = specTypeDesig.getTypifiedNames();\r
+               Assert.assertEquals("There should be exactly 1 typified name for the the specimen type designation", 1, names.size());\r
+               TaxonNameBase singleName = names.iterator().next();\r
+               Assert.assertEquals("", UUID.fromString("61b1dcae-8aa6-478a-bcd6-080cf0eb6ad7"), singleName.getUuid());\r
        }\r
+       \r
+//     /**\r
+//     TODO currently throws "Could not execute JDBC batch update" exception when trying to save a new name\r
+//      * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.name.TypeDesignationHibernateImpl#saveOrUpdate(CdmBase)}.\r
+//      */\r
+//     @Test\r
+//     @ExpectedDataSet\r
+//     public void testSaveTypeDesignations() {\r
+////           List<TypeDesignationBase> typeDesignations = typeDesignationDao.getAllTypeDesignations(100, 0);\r
+////           assertEquals(typeDesignations.size(), 2);\r
+////           SpecimenTypeDesignation specTypeDesig = null;\r
+////           for (TypeDesignationBase typeDesignation : typeDesignations) {\r
+////                   if (typeDesignation.isInstanceOf(SpecimenTypeDesignation.class)) {\r
+////                           specTypeDesig = CdmBase.deproxy(typeDesignation,SpecimenTypeDesignation.class);\r
+////                   }\r
+////           }\r
+//             \r
+//             TaxonNameBase newName = BotanicalName.NewInstance(Rank.SPECIES());\r
+////           newName.setTitleCache("Name used as typified name", true);\r
+////           newName.addTypeDesignation(specTypeDesig, false);\r
+////           Set<TaxonNameBase> typifiedNames = specTypeDesig.getTypifiedNames();\r
+////           Assert.assertEquals("There should be 2 typified names for this type designation now", 2, typifiedNames.size());\r
+//             \r
+//             nameDao.save(newName);\r
+////           typeDesignationDao.saveOrUpdate(specTypeDesig);\r
+////           this.endTransaction();\r
+////           printDataSet(System.out, new String[]{"TaxonNameBase","TypeDesignationBase",\r
+////                           "TypeDesignationBase_TaxonNameBase","TaxonNameBase_typeDesignationBase"});\r
+//             \r
+//             Person person = Person.NewTitledInstance("new Person");\r
+//             agentDao.save(person);\r
+//     }\r
+       \r
+//     @Test\r
+//     public void printDataSet(){\r
+//             printDataSet(System.out, new String[]{"TaxonNameBase","TypeDesignationBase",\r
+//                             "TypeDesignationBase_TaxonNameBase","TaxonNameBase_typeDesignationBase"});\r
+//     }\r
+       \r
 }\r