]> git.argeo.org Git - gpl/argeo-slc.git/blob - legacy/runtime/org.argeo.slc.support.hibernate/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java
4c5baa6fa36b96a946166aacf792f9e7aa7be73e
[gpl/argeo-slc.git] / legacy / runtime / org.argeo.slc.support.hibernate / src / test / java / org / argeo / slc / hibernate / test / tree / TreeTestResultDaoHibernateTest.java
1 /*
2 * Copyright (C) 2007-2012 Mathieu Baudier
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16 package org.argeo.slc.hibernate.test.tree;
17
18 import java.sql.SQLException;
19
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;
34
35 public class TreeTestResultDaoHibernateTest extends HibernateTestCase {
36 private TreeTestResultDao testResultDao = null;
37
38 @Override
39 public void setUp() {
40 testResultDao = getBean(TreeTestResultDao.class);
41 }
42
43 public void testCreate() {
44
45 TreeTestResult ttr = TreeTestResultTestUtils
46 .createCompleteTreeTestResult();
47 testResultDao.create(ttr);
48
49 TreeTestResult ttrPersisted = (TreeTestResult) testResultDao
50 .getTestResult(ttr.getUuid());
51
52 assertInHibernate(ttr, ttrPersisted);
53 }
54
55 public void testUpdate() {
56 TreeTestResult ttr = TreeTestResultTestUtils
57 .createCompleteTreeTestResult();
58 testResultDao.create(ttr);
59
60 final TreeTestResult ttrUpdated = (TreeTestResult) testResultDao
61 .getTestResult(ttr.getUuid());
62
63 // Modifying ttrUpdated
64
65 /**
66 * this closeDate update commented because the assertTreeTestResult will
67 * find a unexpected discrepancy in the date.
68 * ttrUpdated.setCloseDate(new Date());
69 */
70
71 String pathStr = "/test";
72 final TreeSPath path = new TreeSPath(pathStr);
73
74 final TreeSRegistry registry = new TreeSRegistry();
75 SimpleSElement elem = new SimpleSElement("Unit Test");
76 elem.getTags().put("myTag", "myTagValue");
77 registry.register(path, elem);
78
79 getHibernateTemplate().execute(new HibernateCallback() {
80
81 public Object doInHibernate(Session session)
82 throws HibernateException, SQLException {
83 session.refresh(ttrUpdated);
84 ttrUpdated.notifyCurrentPath(registry, path);
85
86 ttrUpdated.addResultPart(TreeTestResultTestUtils
87 .createSimpleResultPartPassed());
88 ttrUpdated.addResultPart(TreeTestResultTestUtils
89 .createSimpleResultPartFailed());
90 ttrUpdated.addResultPart(TreeTestResultTestUtils
91 .createSimpleResultPartError());
92 return null;
93 }
94 });
95
96 testResultDao.update(ttrUpdated);
97
98 // comparison of ttrUpdated and ttrRetrieved
99 TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao
100 .getTestResult(ttr.getUuid());
101
102 assertInHibernate(ttrUpdated, ttrRetrieved);
103 }
104
105 public void testMultipleUpdateScenario() throws Exception {
106 TreeSRegistry registry = new TreeSRegistry();
107
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);
112
113 TreeTestResult ttr = TreeTestResultTestUtils
114 .createSimpleTreeTestResult();
115 ttr.notifyCurrentPath(registry, path);
116 ttr
117 .addResultPart(new SimpleResultPart(TestStatus.PASSED,
118 "First test"));
119
120 testResultDao.create(ttr);
121
122 path = new TreeSPath("/root/test2/subtest");
123 elem = new SimpleSElement("Sub Test");
124 elem.getTags().put("myTag", "myTagValue");
125 registry.register(path, elem);
126
127 ttr.notifyCurrentPath(registry, path);
128 ttr
129 .addResultPart(new SimpleResultPart(TestStatus.PASSED,
130 "Second test"));
131
132 testResultDao.update(ttr);
133
134 ttr.notifyCurrentPath(registry, path);
135 ttr.addResultPart(new SimpleResultPart(TestStatus.PASSED,
136 "Third test with same path"));
137
138 testResultDao.update(ttr);
139
140 ttr.close();
141
142 testResultDao.close(ttr.getUuid(), ttr.getCloseDate());
143
144 TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao
145 .getTestResult(ttr.getUuid());
146
147 assertInHibernate(ttr, ttrRetrieved);
148
149 }
150
151 @Override
152 protected String getApplicationContextLocation() {
153 return "org/argeo/slc/hibernate/applicationContext.xml";
154 }
155
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);
161 UnitTestTreeUtil
162 .assertTreeTestResult(ttrExpected, ttrPersisted);
163 return null;
164 }
165
166 });
167
168 }
169
170 public void assertInHibernate(final TreeTestResult ttrExpected,
171 final TreeTestResult ttrPersisted) {
172 assertInHibernate(getHibernateTemplate(), ttrExpected, ttrPersisted);
173 }
174
175 }