Skip to content

Commit 72e1f20

Browse files
committed
HHH-19871 --wip-- Envers migration to JUnit 6
- `org.hibernate.orm.test.envers.integration.flush`
1 parent 0c58577 commit 72e1f20

File tree

10 files changed

+407
-420
lines changed

10 files changed

+407
-420
lines changed

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/flush/AbstractFlushTest.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/flush/CommitFlush.java

Lines changed: 53 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,81 +6,93 @@
66

77
import java.util.Arrays;
88
import java.util.List;
9-
import jakarta.persistence.EntityManager;
109

1110
import org.hibernate.FlushMode;
11+
import org.hibernate.envers.AuditReaderFactory;
1212
import org.hibernate.envers.RevisionType;
1313
import org.hibernate.envers.query.AuditEntity;
14-
import org.hibernate.orm.test.envers.Priority;
1514
import org.hibernate.orm.test.envers.entities.StrTestEntity;
1615

16+
import org.hibernate.testing.envers.junit.EnversTest;
17+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
18+
import org.hibernate.testing.orm.junit.DomainModel;
1719
import org.hibernate.testing.orm.junit.JiraKey;
18-
import org.junit.Test;
20+
import org.hibernate.testing.orm.junit.SessionFactory;
21+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
22+
import org.junit.jupiter.api.Test;
1923

20-
import static org.junit.Assert.assertEquals;
24+
import static org.junit.jupiter.api.Assertions.assertEquals;
2125

2226
/**
2327
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
2428
*/
2529
@JiraKey( value = "HHH-8243" )
26-
public class CommitFlush extends AbstractFlushTest {
30+
@EnversTest
31+
@DomainModel(annotatedClasses = {StrTestEntity.class})
32+
@SessionFactory
33+
public class CommitFlush {
2734
private Integer id = null;
2835

29-
@Override
30-
public FlushMode getFlushMode() {
31-
return FlushMode.COMMIT;
32-
}
33-
34-
@Test
35-
@Priority(10)
36-
public void initData() {
37-
EntityManager em = getEntityManager();
36+
@BeforeClassTemplate
37+
public void initData(SessionFactoryScope scope) {
38+
scope.inTransaction( session -> {
39+
session.setHibernateFlushMode( FlushMode.COMMIT );
3840

39-
// Revision 1
40-
em.getTransaction().begin();
41-
StrTestEntity entity = new StrTestEntity( "x" );
42-
em.persist( entity );
43-
em.getTransaction().commit();
41+
// Revision 1
42+
StrTestEntity entity = new StrTestEntity( "x" );
43+
session.persist( entity );
44+
session.flush();
4445

45-
id = entity.getId();
46+
id = entity.getId();
47+
} );
4648

4749
// Revision 2
48-
em.getTransaction().begin();
49-
entity = em.find( StrTestEntity.class, entity.getId() );
50-
entity.setStr( "y" );
51-
entity = em.merge( entity );
52-
em.getTransaction().commit();
50+
scope.inTransaction( session -> {
51+
session.setHibernateFlushMode( FlushMode.COMMIT );
5352

54-
em.close();
53+
StrTestEntity entity = session.find( StrTestEntity.class, id );
54+
entity.setStr( "y" );
55+
session.merge( entity );
56+
} );
5557
}
5658

5759
@Test
58-
public void testRevisionsCounts() {
59-
assertEquals( Arrays.asList( 1, 2 ), getAuditReader().getRevisions( StrTestEntity.class, id ) );
60+
public void testRevisionsCounts(SessionFactoryScope scope) {
61+
scope.inSession( session -> {
62+
assertEquals( Arrays.asList( 1, 2 ), AuditReaderFactory.get( session ).getRevisions( StrTestEntity.class, id ) );
63+
} );
6064
}
6165

6266
@Test
63-
public void testHistoryOfId() {
67+
public void testHistoryOfId(SessionFactoryScope scope) {
6468
StrTestEntity ver1 = new StrTestEntity( "x", id );
6569
StrTestEntity ver2 = new StrTestEntity( "y", id );
6670

67-
assertEquals( ver1, getAuditReader().find( StrTestEntity.class, id, 1 ) );
68-
assertEquals( ver2, getAuditReader().find( StrTestEntity.class, id, 2 ) );
71+
scope.inSession( session -> {
72+
var auditReader = org.hibernate.envers.AuditReaderFactory.get( session );
73+
assertEquals( ver1, auditReader.find( StrTestEntity.class, id, 1 ) );
74+
assertEquals( ver2, auditReader.find( StrTestEntity.class, id, 2 ) );
75+
} );
6976
}
7077

7178
@Test
72-
public void testCurrent() {
73-
assertEquals( new StrTestEntity( "y", id ), getEntityManager().find( StrTestEntity.class, id ) );
79+
public void testCurrent(SessionFactoryScope scope) {
80+
scope.inSession( session -> {
81+
assertEquals( new StrTestEntity( "y", id ), session.find( StrTestEntity.class, id ) );
82+
} );
7483
}
7584

7685
@Test
77-
public void testRevisionTypes() {
78-
List<Object[]> results = getAuditReader().createQuery()
79-
.forRevisionsOfEntity( StrTestEntity.class, false, true )
80-
.add( AuditEntity.id().eq( id ) )
81-
.getResultList();
82-
83-
assertEquals( results.get( 0 )[2], RevisionType.ADD );
84-
assertEquals( results.get( 1 )[2], RevisionType.MOD );
86+
public void testRevisionTypes(SessionFactoryScope scope) {
87+
scope.inSession( session -> {
88+
var auditReader = org.hibernate.envers.AuditReaderFactory.get( session );
89+
List<Object[]> results = auditReader.createQuery()
90+
.forRevisionsOfEntity( StrTestEntity.class, false, true )
91+
.add( AuditEntity.id().eq( id ) )
92+
.getResultList();
93+
94+
assertEquals( RevisionType.ADD, results.get( 0 )[2] );
95+
assertEquals( RevisionType.MOD, results.get( 1 )[2] );
96+
} );
8597
}
8698
}

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/flush/CommitFlushCollectionTest.java

Lines changed: 47 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
package org.hibernate.orm.test.envers.integration.flush;
66

7-
import static org.junit.Assert.assertEquals;
7+
import static org.junit.jupiter.api.Assertions.assertEquals;
88

99
import java.util.Arrays;
1010
import java.util.Date;
@@ -14,7 +14,6 @@
1414
import jakarta.persistence.CascadeType;
1515
import jakarta.persistence.Column;
1616
import jakarta.persistence.Entity;
17-
import jakarta.persistence.EntityManager;
1817
import jakarta.persistence.FetchType;
1918
import jakarta.persistence.FlushModeType;
2019
import jakarta.persistence.GeneratedValue;
@@ -27,11 +26,14 @@
2726

2827
import org.hibernate.envers.AuditMappedBy;
2928
import org.hibernate.envers.Audited;
30-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
31-
import org.hibernate.orm.test.envers.Priority;
29+
import org.hibernate.envers.AuditReaderFactory;
30+
import org.hibernate.testing.envers.junit.EnversTest;
31+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
32+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
3233
import org.hibernate.testing.orm.junit.JiraKey;
3334
import org.hibernate.testing.orm.junit.JiraKeyGroup;
34-
import org.junit.Test;
35+
import org.hibernate.testing.orm.junit.Jpa;
36+
import org.junit.jupiter.api.Test;
3537

3638
/**
3739
* @author Chris Cranford
@@ -40,7 +42,9 @@
4042
@JiraKey(value = "HHH-12826"),
4143
@JiraKey(value = "HHH-12846")
4244
} )
43-
public class CommitFlushCollectionTest extends BaseEnversJPAFunctionalTestCase {
45+
@EnversTest
46+
@Jpa(annotatedClasses = {CommitFlushCollectionTest.DocumentA.class, CommitFlushCollectionTest.DocumentLineA.class})
47+
public class CommitFlushCollectionTest {
4448

4549
@MappedSuperclass
4650
public static abstract class AbstractEntity {
@@ -147,17 +151,28 @@ public void setDocument(DocumentA document) {
147151
}
148152
}
149153

150-
@Override
151-
protected Class<?>[] getAnnotatedClasses() {
152-
return new Class<?>[] { DocumentA.class, DocumentLineA.class };
154+
private Long entityId1;
155+
private Long entityId2;
156+
157+
@BeforeClassTemplate
158+
public void initData(EntityManagerFactoryScope scope) {
159+
// This failed when using Envers.
160+
entityId1 = persistDocument( scope, FlushModeType.COMMIT );
161+
162+
// This worked
163+
entityId2 = persistDocument( scope, FlushModeType.AUTO );
164+
165+
// This failed
166+
mergeDocument( scope, FlushModeType.COMMIT, entityId1 );
167+
168+
// This worked
169+
mergeDocument( scope, FlushModeType.AUTO, entityId2 );
153170
}
154171

155-
private Long persistDocument(FlushModeType flushModeType) {
156-
final EntityManager entityManager = getOrCreateEntityManager();
157-
try {
158-
entityManager.setFlushMode( flushModeType );
172+
private Long persistDocument(EntityManagerFactoryScope scope, FlushModeType flushModeType) {
173+
return scope.fromTransaction( em -> {
174+
em.setFlushMode( flushModeType );
159175

160-
entityManager.getTransaction().begin();
161176
DocumentA doc = new DocumentA();
162177
doc.setNumber( "1" );
163178
doc.setDate( new Date() );
@@ -166,31 +181,16 @@ private Long persistDocument(FlushModeType flushModeType) {
166181
line.setText( "line1" );
167182
doc.addLine( line );
168183

169-
entityManager.persist( doc );
170-
entityManager.getTransaction().commit();
171-
184+
em.persist( doc );
172185
return doc.getId();
173-
}
174-
catch ( Exception e ) {
175-
if ( entityManager != null && entityManager.getTransaction().isActive() ) {
176-
entityManager.getTransaction().rollback();
177-
}
178-
throw e;
179-
}
180-
finally {
181-
if ( entityManager != null && entityManager.isOpen() ) {
182-
entityManager.close();
183-
}
184-
}
186+
} );
185187
}
186188

187-
private void mergeDocument(FlushModeType flushModeType, Long id) {
188-
final EntityManager entityManager = getOrCreateEntityManager();
189-
try {
190-
entityManager.setFlushMode( flushModeType );
189+
private void mergeDocument(EntityManagerFactoryScope scope, FlushModeType flushModeType, Long id) {
190+
scope.inTransaction( em -> {
191+
em.setFlushMode( flushModeType );
191192

192-
entityManager.getTransaction().begin();
193-
DocumentA doc = entityManager.find( DocumentA.class, id );
193+
DocumentA doc = em.find( DocumentA.class, id );
194194
doc.setDate( new Date() );
195195
for ( DocumentLineA line : doc.getLines() ) {
196196
line.setText( "Updated" );
@@ -200,49 +200,23 @@ private void mergeDocument(FlushModeType flushModeType, Long id) {
200200
line.setText( "line2" );
201201
doc.addLine( line );
202202

203-
entityManager.merge( doc );
204-
entityManager.getTransaction().commit();
205-
}
206-
catch ( Exception e ) {
207-
if ( entityManager != null && entityManager.getTransaction().isActive() ) {
208-
entityManager.getTransaction().rollback();
209-
}
210-
throw e;
211-
}
212-
finally {
213-
if ( entityManager != null && entityManager.isOpen() ) {
214-
entityManager.close();
215-
}
216-
}
217-
}
218-
219-
private Long entityId1;
220-
private Long entityId2;
221-
222-
@Test
223-
@Priority(10)
224-
public void initData() {
225-
// This failed when using Envers.
226-
entityId1 = persistDocument( FlushModeType.COMMIT );
227-
228-
// This worked
229-
entityId2 = persistDocument( FlushModeType.AUTO );
230-
231-
// This failed
232-
mergeDocument( FlushModeType.COMMIT, entityId1 );
233-
234-
// This worked
235-
mergeDocument( FlushModeType.AUTO, entityId2 );
203+
em.merge( doc );
204+
} );
236205
}
237206

238207
@Test
239-
public void testWithFlushModeCommit() {
240-
assertEquals( Arrays.asList( 1, 3 ), getAuditReader().getRevisions( DocumentA.class, entityId1 ) );
208+
public void testWithFlushModeCommit(EntityManagerFactoryScope scope) {
209+
scope.inEntityManager( em -> {
210+
assertEquals( Arrays.asList( 1, 3 ),
211+
AuditReaderFactory.get( em ).getRevisions( DocumentA.class, entityId1 ) );
212+
} );
241213
}
242214

243215
@Test
244-
@Priority(1)
245-
public void testWithFlushModeAuto() {
246-
assertEquals( Arrays.asList( 2, 4 ), getAuditReader().getRevisions( DocumentA.class, entityId2 ) );
216+
public void testWithFlushModeAuto(EntityManagerFactoryScope scope) {
217+
scope.inEntityManager( em -> {
218+
assertEquals( Arrays.asList( 2, 4 ),
219+
AuditReaderFactory.get( em ).getRevisions( DocumentA.class, entityId2 ) );
220+
} );
247221
}
248222
}

0 commit comments

Comments
 (0)