2 * Copyright (C) 2007-2012 Mathieu Baudier
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.slc
.hibernate
.test
.tree
;
18 import java
.sql
.SQLException
;
20 import org
.argeo
.slc
.core
.structure
.SimpleSElement
;
21 import org
.argeo
.slc
.core
.structure
.tree
.TreeSPath
;
22 import org
.argeo
.slc
.core
.structure
.tree
.TreeSRegistry
;
23 import org
.argeo
.slc
.core
.test
.SimpleResultPart
;
24 import org
.argeo
.slc
.core
.test
.tree
.TreeTestResult
;
25 import org
.argeo
.slc
.dao
.test
.tree
.TreeTestResultDao
;
26 import org
.argeo
.slc
.hibernate
.unit
.HibernateTestCase
;
27 import org
.argeo
.slc
.test
.TestStatus
;
28 import org
.argeo
.slc
.unit
.test
.tree
.TreeTestResultTestUtils
;
29 import org
.argeo
.slc
.unit
.test
.tree
.UnitTestTreeUtil
;
30 import org
.hibernate
.HibernateException
;
31 import org
.hibernate
.Session
;
32 import org
.springframework
.orm
.hibernate3
.HibernateCallback
;
33 import org
.springframework
.orm
.hibernate3
.HibernateTemplate
;
35 public class TreeTestResultDaoHibernateTest
extends HibernateTestCase
{
36 private TreeTestResultDao testResultDao
= null;
40 testResultDao
= getBean(TreeTestResultDao
.class);
43 public void testCreate() {
45 TreeTestResult ttr
= TreeTestResultTestUtils
46 .createCompleteTreeTestResult();
47 testResultDao
.create(ttr
);
49 TreeTestResult ttrPersisted
= (TreeTestResult
) testResultDao
50 .getTestResult(ttr
.getUuid());
52 assertInHibernate(ttr
, ttrPersisted
);
55 public void testUpdate() {
56 TreeTestResult ttr
= TreeTestResultTestUtils
57 .createCompleteTreeTestResult();
58 testResultDao
.create(ttr
);
60 final TreeTestResult ttrUpdated
= (TreeTestResult
) testResultDao
61 .getTestResult(ttr
.getUuid());
63 // Modifying ttrUpdated
66 * this closeDate update commented because the assertTreeTestResult will
67 * find a unexpected discrepancy in the date.
68 * ttrUpdated.setCloseDate(new Date());
71 String pathStr
= "/test";
72 final TreeSPath path
= new TreeSPath(pathStr
);
74 final TreeSRegistry registry
= new TreeSRegistry();
75 SimpleSElement elem
= new SimpleSElement("Unit Test");
76 elem
.getTags().put("myTag", "myTagValue");
77 registry
.register(path
, elem
);
79 getHibernateTemplate().execute(new HibernateCallback() {
81 public Object
doInHibernate(Session session
)
82 throws HibernateException
, SQLException
{
83 session
.refresh(ttrUpdated
);
84 ttrUpdated
.notifyCurrentPath(registry
, path
);
86 ttrUpdated
.addResultPart(TreeTestResultTestUtils
87 .createSimpleResultPartPassed());
88 ttrUpdated
.addResultPart(TreeTestResultTestUtils
89 .createSimpleResultPartFailed());
90 ttrUpdated
.addResultPart(TreeTestResultTestUtils
91 .createSimpleResultPartError());
96 testResultDao
.update(ttrUpdated
);
98 // comparison of ttrUpdated and ttrRetrieved
99 TreeTestResult ttrRetrieved
= (TreeTestResult
) testResultDao
100 .getTestResult(ttr
.getUuid());
102 assertInHibernate(ttrUpdated
, ttrRetrieved
);
105 public void testMultipleUpdateScenario() throws Exception
{
106 TreeSRegistry registry
= new TreeSRegistry();
108 TreeSPath path
= new TreeSPath("/root/test");
109 SimpleSElement elem
= new SimpleSElement("Unit Test");
110 elem
.getTags().put("myTag", "myTagValue");
111 registry
.register(path
, elem
);
113 TreeTestResult ttr
= TreeTestResultTestUtils
114 .createSimpleTreeTestResult();
115 ttr
.notifyCurrentPath(registry
, path
);
117 .addResultPart(new SimpleResultPart(TestStatus
.PASSED
,
120 testResultDao
.create(ttr
);
122 path
= new TreeSPath("/root/test2/subtest");
123 elem
= new SimpleSElement("Sub Test");
124 elem
.getTags().put("myTag", "myTagValue");
125 registry
.register(path
, elem
);
127 ttr
.notifyCurrentPath(registry
, path
);
129 .addResultPart(new SimpleResultPart(TestStatus
.PASSED
,
132 testResultDao
.update(ttr
);
134 ttr
.notifyCurrentPath(registry
, path
);
135 ttr
.addResultPart(new SimpleResultPart(TestStatus
.PASSED
,
136 "Third test with same path"));
138 testResultDao
.update(ttr
);
142 testResultDao
.close(ttr
.getUuid(), ttr
.getCloseDate());
144 TreeTestResult ttrRetrieved
= (TreeTestResult
) testResultDao
145 .getTestResult(ttr
.getUuid());
147 assertInHibernate(ttr
, ttrRetrieved
);
152 protected String
getApplicationContextLocation() {
153 return "org/argeo/slc/hibernate/applicationContext.xml";
156 public static void assertInHibernate(HibernateTemplate template
,
157 final TreeTestResult ttrExpected
, final TreeTestResult ttrPersisted
) {
158 template
.execute(new HibernateCallback() {
159 public Object
doInHibernate(Session session
) {
160 session
.refresh(ttrPersisted
);
162 .assertTreeTestResult(ttrExpected
, ttrPersisted
);
170 public void assertInHibernate(final TreeTestResult ttrExpected
,
171 final TreeTestResult ttrPersisted
) {
172 assertInHibernate(getHibernateTemplate(), ttrExpected
, ttrPersisted
);