Skip to content

Commit 0c58577

Browse files
committed
HHH-19871 --wip-- Envers migration to JUnit 6
- `org.hibernate.orm.test.envers.integration.customtype` - `org.hibernate.orm.test.envers.integration.data` - `org.hibernate.orm.test.envers.integration.dynamic` - `org.hibernate.orm.test.envers.integration.dynamicmodel` - `org.hibernate.orm.test.envers.integration.entityNames` - `org.hibernate.orm.test.envers.integration.generated`
1 parent c3b6616 commit 0c58577

21 files changed

+1211
-1367
lines changed

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/customtype/DurationTest.java

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,22 @@
66

77

88
import org.hibernate.envers.Audited;
9-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
10-
import org.hibernate.orm.test.envers.Priority;
11-
9+
import org.hibernate.testing.envers.junit.EnversTest;
10+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
1211
import org.hibernate.testing.orm.junit.JiraKey;
13-
import org.junit.Test;
12+
import org.hibernate.testing.orm.junit.Jpa;
1413

1514
import jakarta.persistence.Entity;
1615
import jakarta.persistence.GeneratedValue;
1716
import jakarta.persistence.Id;
17+
import org.junit.jupiter.api.Test;
1818

19-
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
2019
import java.time.Duration;
2120

2221
@JiraKey(value = "HHH-17243")
23-
public class DurationTest extends BaseEnversJPAFunctionalTestCase{
22+
@EnversTest
23+
@Jpa(annotatedClasses = DurationTest.DurationTestEntity.class)
24+
public class DurationTest {
2425

2526
@Entity(name = "Duration")
2627
@Audited
@@ -31,12 +32,12 @@ public static class DurationTestEntity {
3132

3233
private Duration duration;
3334

34-
DurationTestEntity(){
35+
DurationTestEntity() {
3536

36-
}
37+
}
3738

3839
DurationTestEntity(Duration aDuration) {
39-
this.duration = aDuration;
40+
this.duration = aDuration;
4041
}
4142

4243
public Integer getId() {
@@ -52,28 +53,22 @@ public void setDuration(Duration aDuration) {
5253
}
5354
}
5455

55-
@Override
56-
protected Class<?>[] getAnnotatedClasses() {
57-
return new Class<?>[] { DurationTestEntity.class };
58-
}
59-
6056
private Integer durationId;
6157

6258
@Test
63-
@Priority(10)
64-
public void initData() {
59+
public void initData(EntityManagerFactoryScope scope) {
6560
// Revision 1 - insert
66-
this.durationId = doInJPA( this::entityManagerFactory, entityManager -> {
67-
final DurationTestEntity duration = new DurationTestEntity(Duration.ofHours(2));
61+
this.durationId = scope.fromTransaction( entityManager -> {
62+
final DurationTestEntity duration = new DurationTestEntity( Duration.ofHours( 2 ) );
6863
entityManager.persist( duration );
6964
return duration.getId();
7065
} );
7166

7267
// Revision 2 - update
73-
doInJPA( this::entityManagerFactory, entityManager -> {
68+
scope.inTransaction( entityManager -> {
7469
final DurationTestEntity duration = entityManager.find( DurationTestEntity.class, this.durationId );
75-
duration.setDuration(Duration.ofHours(3));
76-
entityManager.merge(duration);
70+
duration.setDuration( Duration.ofHours( 3 ) );
71+
entityManager.merge( duration );
7772
} );
7873
}
7974
}

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/customtype/EnumTypeTest.java

Lines changed: 33 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,63 +4,51 @@
44
*/
55
package org.hibernate.orm.test.envers.integration.customtype;
66

7-
import java.util.Map;
8-
97
import org.hibernate.cfg.AvailableSettings;
10-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
11-
import org.hibernate.orm.test.envers.Priority;
128
import org.hibernate.orm.test.envers.entities.customtype.EnumTypeEntity;
139

10+
import org.hibernate.testing.envers.junit.EnversTest;
11+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
12+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
1413
import org.hibernate.testing.orm.junit.JiraKey;
15-
import org.junit.Assert;
16-
import org.junit.Test;
14+
import org.hibernate.testing.orm.junit.Jpa;
15+
import org.hibernate.testing.orm.junit.Setting;
16+
import org.junit.jupiter.api.Test;
1717

18-
import jakarta.persistence.EntityManager;
18+
import static org.junit.jupiter.api.Assertions.assertEquals;
19+
import static org.junit.jupiter.api.Assertions.assertNotNull;
1920

2021
/**
2122
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
2223
*/
2324
@JiraKey(value = "HHH-7780")
24-
public class EnumTypeTest extends BaseEnversJPAFunctionalTestCase {
25-
@Override
26-
protected Class<?>[] getAnnotatedClasses() {
27-
return new Class<?>[] {EnumTypeEntity.class};
28-
}
29-
30-
@Override
31-
protected void addConfigOptions(Map options) {
32-
super.addConfigOptions( options );
33-
options.put( AvailableSettings.PREFER_NATIVE_ENUM_TYPES, "false" );
34-
}
35-
36-
@Test
37-
@Priority(10)
38-
public void initData() {
39-
EntityManager em = getEntityManager();
40-
41-
em.getTransaction().begin();
42-
EnumTypeEntity entity = new EnumTypeEntity( EnumTypeEntity.E1.X, EnumTypeEntity.E2.A );
43-
em.persist( entity );
44-
em.getTransaction().commit();
45-
46-
em.close();
25+
@EnversTest
26+
@Jpa(
27+
annotatedClasses = {EnumTypeEntity.class},
28+
integrationSettings = @Setting(name = AvailableSettings.PREFER_NATIVE_ENUM_TYPES, value = "false")
29+
)
30+
public class EnumTypeTest {
31+
32+
@BeforeClassTemplate
33+
public void initData(EntityManagerFactoryScope scope) {
34+
scope.inTransaction( em -> {
35+
EnumTypeEntity entity = new EnumTypeEntity( EnumTypeEntity.E1.X, EnumTypeEntity.E2.A );
36+
em.persist( entity );
37+
} );
4738
}
4839

4940
@Test
50-
public void testEnumRepresentation() {
51-
EntityManager entityManager = getEntityManager();
52-
entityManager.getTransaction().begin();
53-
54-
final String qry = "SELECT enum1, enum2 FROM EnumTypeEntity_AUD ORDER BY REV ASC";
55-
Object[] results = (Object[]) entityManager.createNativeQuery( qry, "e1_e2" ).getSingleResult();
56-
entityManager.getTransaction().commit();
57-
entityManager.close();
58-
59-
Assert.assertNotNull( results );
60-
Assert.assertEquals( 2, results.length );
61-
Assert.assertEquals( "X", results[0] );
62-
// Compare the Strings to account for, as an example, Oracle
63-
// returning a BigDecimal instead of an int.
64-
Assert.assertEquals( "0", results[1] + "" );
41+
public void testEnumRepresentation(EntityManagerFactoryScope scope) {
42+
scope.inTransaction( entityManager -> {
43+
final String qry = "SELECT enum1, enum2 FROM EnumTypeEntity_AUD ORDER BY REV ASC";
44+
Object[] results = (Object[]) entityManager.createNativeQuery( qry, "e1_e2" ).getSingleResult();
45+
46+
assertNotNull( results );
47+
assertEquals( 2, results.length );
48+
assertEquals( "X", results[0] );
49+
// Compare the Strings to account for, as an example, Oracle
50+
// returning a BigDecimal instead of an int.
51+
assertEquals( "0", results[1] + "" );
52+
} );
6553
}
6654
}

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/customtype/ExtendedEnumTypeTest.java

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,19 @@
1010
import org.hibernate.annotations.Type;
1111
import org.hibernate.engine.spi.SessionFactoryImplementor;
1212
import org.hibernate.engine.spi.SessionImplementor;
13+
import org.hibernate.envers.AuditReaderFactory;
1314
import org.hibernate.envers.Audited;
1415
import org.hibernate.envers.boot.internal.EnversService;
15-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
16-
import org.hibernate.orm.test.envers.Priority;
1716
import org.hibernate.persister.entity.EntityPersister;
1817
import org.hibernate.type.CustomType;
1918
import org.hibernate.usertype.UserType;
2019

20+
import org.hibernate.testing.envers.junit.EnversTest;
21+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
22+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
2123
import org.hibernate.testing.orm.junit.JiraKey;
22-
import org.junit.Test;
24+
import org.hibernate.testing.orm.junit.Jpa;
25+
import org.junit.jupiter.api.Test;
2326

2427
import jakarta.persistence.Entity;
2528
import jakarta.persistence.EnumType;
@@ -28,9 +31,8 @@
2831
import jakarta.persistence.Id;
2932

3033
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
31-
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
32-
import static org.junit.Assert.assertEquals;
33-
import static org.junit.Assert.assertNull;
34+
import static org.junit.jupiter.api.Assertions.assertEquals;
35+
import static org.junit.jupiter.api.Assertions.assertNull;
3436

3537
/**
3638
* Tests that a custom type which extends {@link org.hibernate.orm.test.envers.integration.customtype.EnumType}
@@ -42,7 +44,9 @@
4244
* @author Chris Cranford
4345
*/
4446
@JiraKey(value = "HHH-12304")
45-
public class ExtendedEnumTypeTest extends BaseEnversJPAFunctionalTestCase {
47+
@EnversTest
48+
@Jpa(annotatedClasses = ExtendedEnumTypeTest.Widget.class)
49+
public class ExtendedEnumTypeTest {
4650

4751
// An extended type to trigger the need for Envers to supply type information in the HBM mappings.
4852
// This should be treated the same as any other property annotated as Enumerated or uses an Enum.
@@ -103,63 +107,60 @@ public void setStatus2(Status status2) {
103107
}
104108
}
105109

106-
@Override
107-
protected Class<?>[] getAnnotatedClasses() {
108-
return new Class<?>[] { Widget.class };
109-
}
110-
111110
private Integer widgetId;
112111

113-
@Test
114-
@Priority(10)
115-
public void initData() {
112+
@BeforeClassTemplate
113+
public void initData(EntityManagerFactoryScope scope) {
116114
// Revision 1 - insert
117-
this.widgetId = doInJPA( this::entityManagerFactory, entityManager -> {
115+
this.widgetId = scope.fromTransaction( entityManager -> {
118116
final Widget widget = new Widget( Widget.Status.DRAFT );
119117
entityManager.persist( widget );
120118
return widget.getId();
121119
} );
122120

123121
// Revision 2 - update
124-
doInJPA( this::entityManagerFactory, entityManager -> {
122+
scope.inTransaction( entityManager -> {
125123
final Widget widget = entityManager.find( Widget.class, this.widgetId );
126124
widget.setStatus( Widget.Status.ARCHIVED );
127125
entityManager.merge( widget );
128126
} );
129127

130128
// Revision 3 - delete
131-
doInJPA( this::entityManagerFactory, entityManager -> {
129+
scope.inTransaction( entityManager -> {
132130
final Widget widget = entityManager.find( Widget.class, this.widgetId );
133131
entityManager.remove( widget );
134132
} );
135133
}
136134

137135
@Test
138-
public void testRevisionHistory() {
139-
List revisions = getAuditReader().getRevisions( Widget.class, this.widgetId );
140-
assertEquals( Arrays.asList( 1, 2, 3 ), revisions );
136+
public void testRevisionHistory(EntityManagerFactoryScope scope) {
137+
scope.inEntityManager( em -> {
138+
final var auditReader = AuditReaderFactory.get( em );
139+
List revisions = auditReader.getRevisions( Widget.class, this.widgetId );
140+
assertEquals( Arrays.asList( 1, 2, 3 ), revisions );
141141

142-
final Widget rev1 = getAuditReader().find( Widget.class, this.widgetId, 1 );
143-
assertEquals( Widget.Status.DRAFT, rev1.getStatus() );
142+
final Widget rev1 = auditReader.find( Widget.class, this.widgetId, 1 );
143+
assertEquals( Widget.Status.DRAFT, rev1.getStatus() );
144144

145-
final Widget rev2 = getAuditReader().find( Widget.class, this.widgetId, 2 );
146-
assertEquals( Widget.Status.ARCHIVED, rev2.getStatus() );
145+
final Widget rev2 = auditReader.find( Widget.class, this.widgetId, 2 );
146+
assertEquals( Widget.Status.ARCHIVED, rev2.getStatus() );
147147

148-
final Widget rev3 = getAuditReader().find( Widget.class, this.widgetId, 3 );
149-
assertNull( rev3 );
148+
final Widget rev3 = auditReader.find( Widget.class, this.widgetId, 3 );
149+
assertNull( rev3 );
150+
} );
150151
}
151152

152153
@Test
153-
public void testEnumPropertyStorageType() {
154+
public void testEnumPropertyStorageType(EntityManagerFactoryScope scope) {
154155
// test that property 'status' translates to an enum type that is stored by name (e.g. STRING)
155-
assertEnumProperty( Widget.class, ExtendedEnumType.class, "status", EnumType.STRING );
156+
assertEnumProperty( scope, Widget.class, ExtendedEnumType.class, "status", EnumType.STRING );
156157

157158
// test that property 'status2' translates to an enum type that is stored by position (e.g. ORDINAL)
158-
assertEnumProperty( Widget.class, ExtendedEnumType.class, "status2", EnumType.ORDINAL );
159+
assertEnumProperty( scope, Widget.class, ExtendedEnumType.class, "status2", EnumType.ORDINAL );
159160
}
160161

161-
private void assertEnumProperty(Class<?> entityClass, Class<?> typeClass, String propertyName, EnumType expectedType) {
162-
doInJPA( this::entityManagerFactory, entityManager -> {
162+
private void assertEnumProperty(EntityManagerFactoryScope scope, Class<?> entityClass, Class<?> typeClass, String propertyName, EnumType expectedType) {
163+
scope.inEntityManager( entityManager -> {
163164
final SessionFactoryImplementor sessionFactory = entityManager.unwrap( SessionImplementor.class ).getSessionFactory();
164165

165166
final EntityPersister entityPersister = sessionFactory.getMappingMetamodel().getEntityDescriptor( entityClass );

0 commit comments

Comments
 (0)