--- /dev/null
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.hibernate.unit.HibernateTestCase;\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.Session;\r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
+\r
+public class TreeTestResultCollectionDaoHibernateTest extends HibernateTestCase {\r
+\r
+ public void testScenario() {\r
+ TreeTestResultDao ttrDao = getBean(TreeTestResultDao.class);\r
+ TreeTestResultCollectionDao ttrcDao = getBean(TreeTestResultCollectionDao.class);\r
+\r
+ String ttrcName = "testCollection";\r
+\r
+ TreeTestResult ttr1 = TreeTestResultTestUtils\r
+ .createCompleteTreeTestResult();\r
+ ttrDao.create(ttr1);\r
+\r
+ TreeTestResultCollection ttrc = new TreeTestResultCollection(ttrcName);\r
+ ttrcDao.create(ttrc);\r
+\r
+ ttrc.getResults().add(ttr1);\r
+ ttrcDao.update(ttrc);\r
+\r
+ final TreeTestResult ttr2 = TreeTestResultTestUtils\r
+ .createCompleteTreeTestResult();\r
+ ttrDao.create(ttr2);\r
+\r
+ ttrc.getResults().add(ttr2);\r
+ ttrcDao.update(ttrc);\r
+\r
+ ttrc.getResults().remove(ttr1);\r
+ ttrcDao.update(ttrc);\r
+\r
+ final TreeTestResultCollection ttrcPersist = ttrcDao\r
+ .getTestResultCollection(ttrcName);\r
+\r
+ getHibernateTemplate().execute(new HibernateCallback() {\r
+\r
+ public Object doInHibernate(Session session)\r
+ throws HibernateException, SQLException {\r
+ session.refresh(ttrcPersist);\r
+ assertEquals(1, ttrcPersist.getResults().size());\r
+ UnitTestTreeUtil.assertTreeTestResult(ttr2, ttrcPersist\r
+ .getResults().iterator().next());\r
+ return null;\r
+ }\r
+ });\r
+ }\r
+\r
+ @Override\r
+ protected String getApplicationContextLocation() {\r
+ return "org/argeo/slc/hibernate/applicationContext.xml";\r
+ }\r
+\r
+}\r