Skip to content

Commit f0d55fe

Browse files
committed
HHH-19871 --wip-- Envers migration to JUnit 6
- `org.hibernate.orm.test.envers.integration.blob` - `org.hibernate.orm.test.envers.integration.cache`
1 parent d081b5a commit f0d55fe

File tree

4 files changed

+176
-174
lines changed

4 files changed

+176
-174
lines changed

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/blob/BasicBlobTest.java

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@
77
import jakarta.persistence.Entity;
88
import jakarta.persistence.GeneratedValue;
99
import jakarta.persistence.Id;
10-
import org.hamcrest.Matchers;
1110
import org.hibernate.community.dialect.InformixDialect;
1211
import org.hibernate.dialect.PostgreSQLDialect;
1312
import org.hibernate.dialect.SQLServerDialect;
1413
import org.hibernate.engine.jdbc.proxy.BlobProxy;
1514
import org.hibernate.envers.Audited;
16-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
17-
import org.hibernate.orm.test.envers.Priority;
18-
import org.hibernate.testing.SkipForDialect;
19-
import org.junit.Test;
15+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
16+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
17+
import org.hibernate.testing.orm.junit.Jpa;
18+
import org.hibernate.testing.orm.junit.SkipForDialect;
19+
import org.hibernate.testing.envers.junit.EnversTest;
20+
import org.junit.jupiter.api.Test;
2021

2122
import java.io.BufferedInputStream;
2223
import java.io.InputStream;
@@ -26,30 +27,26 @@
2627
import java.sql.Blob;
2728

2829
import static org.hamcrest.MatcherAssert.assertThat;
29-
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
30-
import static org.junit.Assert.fail;
30+
import static org.hamcrest.Matchers.is;
31+
import static org.junit.jupiter.api.Assertions.fail;
3132

3233
/**
3334
* @author Chris Cranford
3435
*/
35-
public class BasicBlobTest extends BaseEnversJPAFunctionalTestCase {
36+
@EnversTest
37+
@Jpa(annotatedClasses = {BasicBlobTest.Asset.class})
38+
public class BasicBlobTest {
3639

37-
@Override
38-
protected Class<?>[] getAnnotatedClasses() {
39-
return new Class<?>[] {Asset.class};
40-
}
41-
42-
@Test
43-
@Priority(10)
44-
public void testGenerateProxyNoStream() throws URISyntaxException {
40+
@BeforeClassTemplate
41+
public void testGenerateProxyNoStream(EntityManagerFactoryScope scope) throws URISyntaxException {
4542
final Path path = Path.of( Thread.currentThread().getContextClassLoader()
4643
.getResource( "org/hibernate/orm/test/envers/integration/blob/blob.txt" ).toURI() );
47-
doInJPA( this::entityManagerFactory, entityManager -> {
44+
scope.inTransaction( entityManager -> {
4845
final Asset asset = new Asset();
4946
asset.setFileName( "blob.txt" );
5047

5148
try (final InputStream stream = new BufferedInputStream( Files.newInputStream( path ) )) {
52-
assertThat( stream.markSupported(), Matchers.is( true ) );
49+
assertThat( stream.markSupported(), is( true ) );
5350

5451
// We use the method readAllBytes instead of passing the raw stream to the proxy
5552
// since this is the only guaranteed way that will work across all dialects in a
@@ -74,27 +71,25 @@ public void testGenerateProxyNoStream() throws URISyntaxException {
7471
fail( "Failed to persist the entity" );
7572
}
7673
} );
77-
7874
}
7975

8076
@Test
81-
@Priority(10)
82-
@SkipForDialect(value = PostgreSQLDialect.class,
83-
comment = "The driver closes the stream, so it cannot be reused by envers")
84-
@SkipForDialect(value = SQLServerDialect.class,
85-
comment = "The driver closes the stream, so it cannot be reused by envers")
86-
@SkipForDialect(value = InformixDialect.class)
87-
public void testGenerateProxyStream() throws URISyntaxException {
77+
@SkipForDialect(dialectClass = PostgreSQLDialect.class, matchSubTypes = true,
78+
reason = "The driver closes the stream, so it cannot be reused by envers")
79+
@SkipForDialect(dialectClass = SQLServerDialect.class, matchSubTypes = true,
80+
reason = "The driver closes the stream, so it cannot be reused by envers")
81+
@SkipForDialect(dialectClass = InformixDialect.class, matchSubTypes = true)
82+
public void testGenerateProxyStream(EntityManagerFactoryScope scope) throws URISyntaxException {
8883
final Path path = Path.of( Thread.currentThread().getContextClassLoader()
8984
.getResource( "org/hibernate/orm/test/envers/integration/blob/blob.txt" ).toURI() );
9085

9186
try (final InputStream stream = new BufferedInputStream( Files.newInputStream( path ) )) {
9287
final long length = Files.size( path );
93-
doInJPA( this::entityManagerFactory, entityManager -> {
88+
scope.inTransaction( entityManager -> {
9489
final Asset asset = new Asset();
9590
asset.setFileName( "blob.txt" );
9691

97-
assertThat( stream.markSupported(), Matchers.is( true ) );
92+
assertThat( stream.markSupported(), is( true ) );
9893

9994
// We use the method readAllBytes instead of passing the raw stream to the proxy
10095
// since this is the only guaranteed way that will work across all dialects in a
@@ -154,5 +149,4 @@ public void setData(Blob data) {
154149
this.data = data;
155150
}
156151
}
157-
158152
}

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/cache/OneToManyCache.java

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

7-
import jakarta.persistence.EntityManager;
8-
9-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
10-
import org.hibernate.orm.test.envers.Priority;
7+
import org.hibernate.envers.AuditReaderFactory;
118
import org.hibernate.orm.test.envers.entities.onetomany.SetRefEdEntity;
129
import org.hibernate.orm.test.envers.entities.onetomany.SetRefIngEntity;
10+
import org.hibernate.testing.envers.junit.EnversTest;
11+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
12+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
13+
import org.hibernate.testing.orm.junit.Jpa;
14+
import org.junit.jupiter.api.Test;
1315

14-
import org.junit.Test;
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertSame;
1518

1619
/**
1720
* @author Adam Warski (adam at warski dot org)
1821
*/
1922
@SuppressWarnings({"ObjectEquality"})
20-
public class OneToManyCache extends BaseEnversJPAFunctionalTestCase {
23+
@EnversTest
24+
@Jpa(annotatedClasses = {SetRefEdEntity.class, SetRefIngEntity.class})
25+
public class OneToManyCache {
2126
private Integer ed1_id;
2227
private Integer ed2_id;
2328

2429
private Integer ing1_id;
2530
private Integer ing2_id;
2631

27-
@Override
28-
protected Class<?>[] getAnnotatedClasses() {
29-
return new Class[] {SetRefEdEntity.class, SetRefIngEntity.class};
30-
}
31-
32-
@Test
33-
@Priority(10)
34-
public void initData() {
35-
EntityManager em = getEntityManager();
36-
32+
@BeforeClassTemplate
33+
public void initData(EntityManagerFactoryScope scope) {
3734
SetRefEdEntity ed1 = new SetRefEdEntity( 1, "data_ed_1" );
3835
SetRefEdEntity ed2 = new SetRefEdEntity( 2, "data_ed_2" );
3936

4037
SetRefIngEntity ing1 = new SetRefIngEntity( 1, "data_ing_1" );
4138
SetRefIngEntity ing2 = new SetRefIngEntity( 2, "data_ing_2" );
4239

4340
// Revision 1
44-
em.getTransaction().begin();
45-
46-
em.persist( ed1 );
47-
em.persist( ed2 );
41+
scope.inTransaction( em -> {
42+
em.persist( ed1 );
43+
em.persist( ed2 );
4844

49-
ing1.setReference( ed1 );
50-
ing2.setReference( ed1 );
45+
ing1.setReference( ed1 );
46+
ing2.setReference( ed1 );
5147

52-
em.persist( ing1 );
53-
em.persist( ing2 );
54-
55-
em.getTransaction().commit();
48+
em.persist( ing1 );
49+
em.persist( ing2 );
50+
} );
5651

5752
// Revision 2
58-
em.getTransaction().begin();
59-
60-
ing1 = em.find( SetRefIngEntity.class, ing1.getId() );
61-
ing2 = em.find( SetRefIngEntity.class, ing2.getId() );
62-
ed2 = em.find( SetRefEdEntity.class, ed2.getId() );
63-
64-
ing1.setReference( ed2 );
65-
ing2.setReference( ed2 );
53+
scope.inTransaction( em -> {
54+
SetRefIngEntity ing1Ref = em.find( SetRefIngEntity.class, ing1.getId() );
55+
SetRefIngEntity ing2Ref = em.find( SetRefIngEntity.class, ing2.getId() );
56+
SetRefEdEntity ed2Ref = em.find( SetRefEdEntity.class, ed2.getId() );
6657

67-
em.getTransaction().commit();
58+
ing1Ref.setReference( ed2Ref );
59+
ing2Ref.setReference( ed2Ref );
60+
} );
6861

6962
//
7063

@@ -76,50 +69,62 @@ public void initData() {
7669
}
7770

7871
@Test
79-
public void testCacheReferenceAccessAfterFind() {
80-
SetRefEdEntity ed1_rev1 = getAuditReader().find( SetRefEdEntity.class, ed1_id, 1 );
81-
82-
SetRefIngEntity ing1_rev1 = getAuditReader().find( SetRefIngEntity.class, ing1_id, 1 );
83-
SetRefIngEntity ing2_rev1 = getAuditReader().find( SetRefIngEntity.class, ing2_id, 1 );
84-
85-
// It should be exactly the same object
86-
assert ing1_rev1.getReference() == ed1_rev1;
87-
assert ing2_rev1.getReference() == ed1_rev1;
72+
public void testCacheReferenceAccessAfterFind(EntityManagerFactoryScope scope) {
73+
scope.inEntityManager( em -> {
74+
final var auditReader = AuditReaderFactory.get( em );
75+
SetRefEdEntity ed1_rev1 = auditReader.find( SetRefEdEntity.class, ed1_id, 1 );
76+
77+
SetRefIngEntity ing1_rev1 = auditReader.find( SetRefIngEntity.class, ing1_id, 1 );
78+
SetRefIngEntity ing2_rev1 = auditReader.find( SetRefIngEntity.class, ing2_id, 1 );
79+
80+
// It should be exactly the same object
81+
assertSame( ed1_rev1, ing1_rev1.getReference() );
82+
assertSame( ed1_rev1, ing2_rev1.getReference() );
83+
} );
8884
}
8985

9086
@Test
91-
public void testCacheReferenceAccessAfterCollectionAccessRev1() {
92-
SetRefEdEntity ed1_rev1 = getAuditReader().find( SetRefEdEntity.class, ed1_id, 1 );
93-
94-
// It should be exactly the same object
95-
assert ed1_rev1.getReffering().size() == 2;
96-
for ( SetRefIngEntity setRefIngEntity : ed1_rev1.getReffering() ) {
97-
assert setRefIngEntity.getReference() == ed1_rev1;
98-
}
87+
public void testCacheReferenceAccessAfterCollectionAccessRev1(EntityManagerFactoryScope scope) {
88+
scope.inEntityManager( em -> {
89+
final var auditReader = AuditReaderFactory.get( em );
90+
SetRefEdEntity ed1_rev1 = auditReader.find( SetRefEdEntity.class, ed1_id, 1 );
91+
92+
// It should be exactly the same object
93+
assertEquals( 2, ed1_rev1.getReffering().size() );
94+
for ( SetRefIngEntity setRefIngEntity : ed1_rev1.getReffering() ) {
95+
assertSame( ed1_rev1, setRefIngEntity.getReference() );
96+
}
97+
} );
9998
}
10099

101100
@Test
102-
public void testCacheReferenceAccessAfterCollectionAccessRev2() {
103-
SetRefEdEntity ed2_rev2 = getAuditReader().find( SetRefEdEntity.class, ed2_id, 2 );
104-
105-
assert ed2_rev2.getReffering().size() == 2;
106-
for ( SetRefIngEntity setRefIngEntity : ed2_rev2.getReffering() ) {
107-
assert setRefIngEntity.getReference() == ed2_rev2;
108-
}
101+
public void testCacheReferenceAccessAfterCollectionAccessRev2(EntityManagerFactoryScope scope) {
102+
scope.inEntityManager( em -> {
103+
final var auditReader = AuditReaderFactory.get( em );
104+
SetRefEdEntity ed2_rev2 = auditReader.find( SetRefEdEntity.class, ed2_id, 2 );
105+
106+
assertEquals( 2, ed2_rev2.getReffering().size() );
107+
for ( SetRefIngEntity setRefIngEntity : ed2_rev2.getReffering() ) {
108+
assertSame( ed2_rev2, setRefIngEntity.getReference() );
109+
}
110+
} );
109111
}
110112

111113
@Test
112-
public void testCacheFindAfterCollectionAccessRev1() {
113-
SetRefEdEntity ed1_rev1 = getAuditReader().find( SetRefEdEntity.class, ed1_id, 1 );
114+
public void testCacheFindAfterCollectionAccessRev1(EntityManagerFactoryScope scope) {
115+
scope.inEntityManager( em -> {
116+
final var auditReader = AuditReaderFactory.get( em );
117+
SetRefEdEntity ed1_rev1 = auditReader.find( SetRefEdEntity.class, ed1_id, 1 );
114118

115-
// Reading the collection
116-
assert ed1_rev1.getReffering().size() == 2;
119+
// Reading the collection
120+
assertEquals( 2, ed1_rev1.getReffering().size() );
117121

118-
SetRefIngEntity ing1_rev1 = getAuditReader().find( SetRefIngEntity.class, ing1_id, 1 );
119-
SetRefIngEntity ing2_rev1 = getAuditReader().find( SetRefIngEntity.class, ing2_id, 1 );
122+
SetRefIngEntity ing1_rev1 = auditReader.find( SetRefIngEntity.class, ing1_id, 1 );
123+
SetRefIngEntity ing2_rev1 = auditReader.find( SetRefIngEntity.class, ing2_id, 1 );
120124

121-
for ( SetRefIngEntity setRefIngEntity : ed1_rev1.getReffering() ) {
122-
assert setRefIngEntity == ing1_rev1 || setRefIngEntity == ing2_rev1;
123-
}
125+
for ( SetRefIngEntity setRefIngEntity : ed1_rev1.getReffering() ) {
126+
assertSame( true, setRefIngEntity == ing1_rev1 || setRefIngEntity == ing2_rev1 );
127+
}
128+
} );
124129
}
125130
}

0 commit comments

Comments
 (0)