]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.hibernate/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java
Introduce Hibernate lazy loading
[gpl/argeo-slc.git] / org.argeo.slc.hibernate / src / test / java / org / argeo / slc / hibernate / test / tree / TreeTestResultDaoHibernateTest.java
index 6737cb6c52f67b8ed30a6e35aaa72e332c1c5da6..7896b01fa2b9ad71c2eb2721f8d69881b3261a9b 100644 (file)
@@ -1,5 +1,7 @@
 package org.argeo.slc.hibernate.test.tree;\r
 \r
+import java.sql.SQLException;\r
+\r
 import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
@@ -10,14 +12,22 @@ import org.argeo.slc.dao.test.tree.TreeTestResultDao;
 import org.argeo.slc.unit.AbstractSpringTestCase;\r
 import org.argeo.slc.unit.test.tree.TreeTestResultTestUtils;\r
 import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+import org.hibernate.HibernateException;\r
+import org.hibernate.LockMode;\r
+import org.hibernate.Session;\r
+import org.hibernate.SessionFactory;\r
+import org.hibernate.Transaction;\r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
+import org.springframework.orm.hibernate3.HibernateTemplate;\r
 \r
 public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {\r
        private TreeTestResultDao testResultDao = null;\r
+       private HibernateTemplate template = null;\r
 \r
        @Override\r
        public void setUp() {\r
-               testResultDao = (TreeTestResultDao) getContext().getBean(\r
-                               "testResultDao");\r
+               testResultDao = getBean(TreeTestResultDao.class);\r
+               template = new HibernateTemplate(getBean(SessionFactory.class));\r
        }\r
 \r
        public void testCreate() {\r
@@ -29,7 +39,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                TreeTestResult ttrPersisted = (TreeTestResult) testResultDao\r
                                .getTestResult(ttr.getUuid());\r
 \r
-               UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersisted);\r
+               assertInHibernate(ttr, ttrPersisted);\r
        }\r
 \r
        public void testUpdate() {\r
@@ -37,7 +47,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                                .createCompleteTreeTestResult();\r
                testResultDao.create(ttr);\r
 \r
-               TreeTestResult ttrUpdated = (TreeTestResult) testResultDao\r
+               final TreeTestResult ttrUpdated = (TreeTestResult) testResultDao\r
                                .getTestResult(ttr.getUuid());\r
 \r
                // Modifying ttrUpdated\r
@@ -49,21 +59,29 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                 */\r
 \r
                String pathStr = "/test";\r
-               TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
+               final TreeSPath path = new TreeSPath(pathStr);\r
 \r
-               TreeSRegistry registry = new TreeSRegistry();\r
+               final TreeSRegistry registry = new TreeSRegistry();\r
                SimpleSElement elem = new SimpleSElement("Unit Test");\r
                elem.getTags().put("myTag", "myTagValue");\r
                registry.register(path, elem);\r
 \r
-               ttrUpdated.notifyCurrentPath(registry, path);\r
+               template.execute(new HibernateCallback() {\r
+\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               session.refresh(ttrUpdated);\r
+                               ttrUpdated.notifyCurrentPath(registry, path);\r
 \r
-               ttrUpdated.addResultPart(TreeTestResultTestUtils\r
-                               .createSimpleResultPartPassed());\r
-               ttrUpdated.addResultPart(TreeTestResultTestUtils\r
-                               .createSimpleResultPartFailed());\r
-               ttrUpdated.addResultPart(TreeTestResultTestUtils\r
-                               .createSimpleResultPartError());\r
+                               ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+                                               .createSimpleResultPartPassed());\r
+                               ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+                                               .createSimpleResultPartFailed());\r
+                               ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+                                               .createSimpleResultPartError());\r
+                               return null;\r
+                       }\r
+               });\r
 \r
                testResultDao.update(ttrUpdated);\r
 \r
@@ -71,7 +89,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao\r
                                .getTestResult(ttr.getUuid());\r
 \r
-               UnitTestTreeUtil.assertTreeTestResult(ttrRetrieved, ttrUpdated);\r
+               assertInHibernate(ttrUpdated, ttrRetrieved);\r
        }\r
 \r
        public void testMultipleUpdateScenario() throws Exception {\r
@@ -112,6 +130,12 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                ttr.close();\r
 \r
                testResultDao.close(ttr.getUuid(), ttr.getCloseDate());\r
+\r
+               TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao\r
+                               .getTestResult(ttr.getUuid());\r
+\r
+               assertInHibernate(ttr, ttrRetrieved);\r
+\r
        }\r
 \r
        @Override\r
@@ -119,4 +143,18 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                return "org/argeo/slc/hibernate/applicationContext.xml";\r
        }\r
 \r
+       public void assertInHibernate(final TreeTestResult ttrExpected,\r
+                       final TreeTestResult ttrPersisted) {\r
+               template.execute(new HibernateCallback() {\r
+                       public Object doInHibernate(Session session) {\r
+                               session.refresh(ttrPersisted);\r
+                               UnitTestTreeUtil\r
+                                               .assertTreeTestResult(ttrExpected, ttrPersisted);\r
+                               return null;\r
+                       }\r
+\r
+               });\r
+\r
+       }\r
+\r
 }\r