Skip to content

Commit 13cc0ff

Browse files
committed
HHH-19871 --wip-- Envers migration to JUnit 6
- `org.hibernate.orm.test.envers.integration.basic`
1 parent 79fec05 commit 13cc0ff

20 files changed

+1023
-985
lines changed

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/basic/BasicTypeColumnDefinitionTest.java

Lines changed: 72 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -4,109 +4,116 @@
44
*/
55
package org.hibernate.orm.test.envers.integration.basic;
66

7+
import jakarta.persistence.Column;
8+
import jakarta.persistence.Entity;
9+
import jakarta.persistence.GeneratedValue;
10+
import jakarta.persistence.Id;
711
import org.hibernate.annotations.Generated;
812
import org.hibernate.dialect.H2Dialect;
13+
import org.hibernate.envers.AuditReaderFactory;
914
import org.hibernate.envers.Audited;
1015
import org.hibernate.mapping.Table;
11-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
12-
import org.hibernate.orm.test.envers.Priority;
13-
1416
import org.hibernate.testing.RequiresDialect;
17+
import org.hibernate.testing.envers.junit.EnversTest;
18+
import org.hibernate.testing.orm.junit.BeforeClassTemplate;
19+
import org.hibernate.testing.orm.junit.DomainModel;
20+
import org.hibernate.testing.orm.junit.DomainModelScope;
1521
import org.hibernate.testing.orm.junit.JiraKey;
16-
import org.junit.ComparisonFailure;
17-
import org.junit.Test;
18-
19-
import jakarta.persistence.Column;
20-
import jakarta.persistence.Entity;
21-
import jakarta.persistence.GeneratedValue;
22-
import jakarta.persistence.Id;
22+
import org.hibernate.testing.orm.junit.SessionFactory;
23+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
24+
import org.junit.jupiter.api.Test;
25+
import org.opentest4j.AssertionFailedError;
2326

2427
import static org.hibernate.boot.model.naming.Identifier.toIdentifier;
2528
import static org.hibernate.engine.jdbc.Size.DEFAULT_LENGTH;
2629
import static org.hibernate.engine.jdbc.Size.DEFAULT_PRECISION;
2730
import static org.hibernate.engine.jdbc.Size.DEFAULT_SCALE;
28-
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
29-
import static org.junit.Assert.assertEquals;
31+
import static org.junit.jupiter.api.Assertions.assertEquals;
32+
import static org.junit.jupiter.api.Assertions.assertThrows;
3033

3134
/**
3235
* This test verifies that resolving a column mapping's {@code sql-type} for HBM XML is performed
3336
* correctly such that when a column supplies a {@code columnDefinition}, Envers properly builds
3437
* its schema based on the right type rather than directly using the column definition as-is.
35-
*
38+
* <p>
3639
* The following illustrate some examples of expected transformations:
3740
*
3841
* <li>{@code @Column(columnDefinition = "varchar(10) not null")} => {@code sql-type = "varchar(255)"}</li>
3942
* <li>{@code @Column(length = 10, columnDefinition = "varchar(10) not null")} => {@code sql-type = "varchar(10)"}</li>
4043
* <li>{@code @Column(columnDefinition = "integer not null auto_increment")} => {@code sql-type = "integer"}</li>
41-
*
44+
* <p>
4245
* It is important to point out that resolving the sql-types length/precision/scale is all based on the
4346
* values supplied as part of the {@link Column} annotation itself and not what is in the definition text.
4447
*
4548
* @author Chris Cranford
4649
*/
4750
@JiraKey(value = "HHH-10844")
4851
@RequiresDialect(value = H2Dialect.class)
49-
public class BasicTypeColumnDefinitionTest extends BaseEnversJPAFunctionalTestCase {
50-
@Override
51-
protected Class<?>[] getAnnotatedClasses() {
52-
return new Class<?>[] { BasicTypeContainer.class };
53-
}
54-
55-
// By reverting changes for HHH-10844 to restore columnDefinition original behavior, this implies this test will
56-
// now fail because the expected sql-type will once again be identical to the base table mapping.
57-
@Test(expected = ComparisonFailure.class)
58-
@Priority(10)
59-
public void testMetadataBindings() {
60-
final Long expectedDefaultLength = new Long( DEFAULT_LENGTH );
61-
final Integer expectedDefaultPrecision = Integer.valueOf( DEFAULT_PRECISION );
62-
final Integer expectedDefaultScale = Integer.valueOf( DEFAULT_SCALE );
63-
64-
final Table auditTable = metadata().getEntityBinding( BasicTypeContainer.class.getName() + "_AUD" ).getTable();
65-
66-
final org.hibernate.mapping.Column caseNumber = auditTable.getColumn( toIdentifier( "caseNumber" ) );
67-
assertEquals( "integer", caseNumber.getSqlType() );
68-
assertEquals( expectedDefaultLength, caseNumber.getLength() );
69-
assertEquals( expectedDefaultPrecision, caseNumber.getPrecision() );
70-
assertEquals( expectedDefaultScale, caseNumber.getScale() );
71-
72-
final org.hibernate.mapping.Column colDef = auditTable.getColumn( toIdentifier( "columnWithDefinition" ) );
73-
assertEquals( "varchar(10)", colDef.getSqlType() );
74-
assertEquals( new Long( 10 ), colDef.getLength() );
75-
assertEquals( expectedDefaultPrecision, colDef.getPrecision() );
76-
assertEquals( expectedDefaultScale, colDef.getScale() );
77-
}
78-
79-
@Test
80-
@Priority(10)
81-
public void initData() {
82-
final BasicTypeContainer detachedEntity = doInJPA( this::entityManagerFactory, entityManager -> {
52+
@EnversTest
53+
@DomainModel(annotatedClasses = {BasicTypeColumnDefinitionTest.BasicTypeContainer.class})
54+
@SessionFactory
55+
public class BasicTypeColumnDefinitionTest {
56+
@BeforeClassTemplate
57+
public void initData(SessionFactoryScope scope) {
58+
scope.inTransaction( session -> {
8359
final BasicTypeContainer entity = new BasicTypeContainer();
8460
entity.setData( "test" );
8561
entity.setColumnWithDefinition( "1234567890" );
86-
entityManager.persist( entity );
87-
return entity;
62+
session.persist( entity );
8863
} );
8964

90-
doInJPA( this::entityManagerFactory, entityManager -> {
91-
final BasicTypeContainer entity = entityManager.find( BasicTypeContainer.class, detachedEntity.getId() );
65+
scope.inTransaction( session -> {
66+
final BasicTypeContainer entity = session.createQuery( "from BasicTypeContainer", BasicTypeContainer.class )
67+
.getResultList().get( 0 );
9268
entity.setData( "test2" );
93-
entityManager.merge( entity );
69+
session.merge( entity );
70+
} );
71+
}
72+
73+
// By reverting changes for HHH-10844 to restore columnDefinition original behavior, this implies this test will
74+
// now fail because the expected sql-type will once again be identical to the base table mapping.
75+
@Test
76+
public void testMetadataBindings(DomainModelScope scope) {
77+
final var domainModel = scope.getDomainModel();
78+
79+
assertThrows( AssertionFailedError.class, () -> {
80+
final Long expectedDefaultLength = new Long( DEFAULT_LENGTH );
81+
final Integer expectedDefaultPrecision = Integer.valueOf( DEFAULT_PRECISION );
82+
final Integer expectedDefaultScale = Integer.valueOf( DEFAULT_SCALE );
83+
84+
final Table auditTable = domainModel.getEntityBinding( BasicTypeContainer.class.getName() + "_AUD" )
85+
.getTable();
86+
87+
final org.hibernate.mapping.Column caseNumber = auditTable.getColumn( toIdentifier( "caseNumber" ) );
88+
assertEquals( "integer", caseNumber.getSqlType() );
89+
assertEquals( expectedDefaultLength, caseNumber.getLength() );
90+
assertEquals( expectedDefaultPrecision, caseNumber.getPrecision() );
91+
assertEquals( expectedDefaultScale, caseNumber.getScale() );
92+
93+
final org.hibernate.mapping.Column colDef = auditTable.getColumn( toIdentifier( "columnWithDefinition" ) );
94+
assertEquals( "varchar(10)", colDef.getSqlType() );
95+
assertEquals( new Long( 10 ), colDef.getLength() );
96+
assertEquals( expectedDefaultPrecision, colDef.getPrecision() );
97+
assertEquals( expectedDefaultScale, colDef.getScale() );
9498
} );
9599
}
96100

97101
@Test
98-
public void testRevisionHistory() {
99-
assertEquals( 2, getAuditReader().getRevisions( BasicTypeContainer.class, 1 ).size() );
100-
101-
final BasicTypeContainer rev1 = getAuditReader().find( BasicTypeContainer.class, 1, 1 );
102-
assertEquals( "test", rev1.getData() );
103-
assertEquals( "1234567890", rev1.getColumnWithDefinition() );
104-
assertEquals( Integer.valueOf( 1 ), rev1.getCaseNumber() );
105-
106-
final BasicTypeContainer rev2 = getAuditReader().find( BasicTypeContainer.class, 1, 2 );
107-
assertEquals( "test2", rev2.getData() );
108-
assertEquals( "1234567890", rev2.getColumnWithDefinition() );
109-
assertEquals( Integer.valueOf( 1 ), rev2.getCaseNumber() );
102+
public void testRevisionHistory(SessionFactoryScope scope) {
103+
scope.inSession( session -> {
104+
final var auditReader = AuditReaderFactory.get( session );
105+
assertEquals( 2, auditReader.getRevisions( BasicTypeContainer.class, 1 ).size() );
106+
107+
final BasicTypeContainer rev1 = auditReader.find( BasicTypeContainer.class, 1, 1 );
108+
assertEquals( "test", rev1.getData() );
109+
assertEquals( "1234567890", rev1.getColumnWithDefinition() );
110+
assertEquals( Integer.valueOf( 1 ), rev1.getCaseNumber() );
111+
112+
final BasicTypeContainer rev2 = auditReader.find( BasicTypeContainer.class, 1, 2 );
113+
assertEquals( "test2", rev2.getData() );
114+
assertEquals( "1234567890", rev2.getColumnWithDefinition() );
115+
assertEquals( Integer.valueOf( 1 ), rev2.getCaseNumber() );
116+
} );
110117
}
111118

112119
@Entity(name = "BasicTypeContainer")

hibernate-envers/src/test/java/org/hibernate/orm/test/envers/integration/basic/BigDecimalTypeTest.java

Lines changed: 45 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -4,119 +4,86 @@
44
*/
55
package org.hibernate.orm.test.envers.integration.basic;
66

7-
import java.math.BigDecimal;
8-
import java.util.Arrays;
9-
107
import jakarta.persistence.Column;
118
import jakarta.persistence.Entity;
129
import jakarta.persistence.EntityManager;
1310
import jakarta.persistence.GeneratedValue;
1411
import jakarta.persistence.Id;
15-
1612
import org.hibernate.envers.Audited;
1713
import org.hibernate.envers.NotAudited;
18-
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
19-
import org.hibernate.orm.test.envers.Priority;
20-
import org.junit.Test;
14+
import org.hibernate.testing.envers.junit.EnversTest;
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.junit.jupiter.api.Test;
2119

22-
import org.hibernate.testing.orm.junit.JiraKey;
20+
import java.math.BigDecimal;
21+
import java.util.Arrays;
2322

24-
import static org.junit.Assert.assertEquals;
25-
import static org.junit.Assert.assertNull;
26-
import static org.junit.Assert.assertTrue;
23+
import static org.junit.jupiter.api.Assertions.assertEquals;
24+
import static org.junit.jupiter.api.Assertions.assertNull;
25+
import static org.junit.jupiter.api.Assertions.assertTrue;
2726

2827
/**
2928
* @author Chris Cranford
3029
*/
31-
@JiraKey(value = "HHH-11988")
32-
public class BigDecimalTypeTest extends BaseEnversJPAFunctionalTestCase {
33-
30+
@EnversTest
31+
@Jpa(annotatedClasses = {BigDecimalTypeTest.BigDecimalEntity.class})
32+
public class BigDecimalTypeTest {
3433
private Integer entityId;
3534
private Double bigDecimalValue = 2.2d;
3635

37-
@Test
38-
@Priority(10)
39-
public void initData() {
36+
@BeforeClassTemplate
37+
public void initData(EntityManagerFactoryScope scope) {
4038
// Triggers RevisionType.ADD
41-
EntityManager entityManager = getOrCreateEntityManager();
42-
try {
43-
entityManager.getTransaction().begin();
39+
scope.inTransaction( em -> {
4440
final BigDecimalEntity entity = new BigDecimalEntity( BigDecimal.valueOf( bigDecimalValue ), "Test" );
45-
System.out.println( entity.getBigDecimal().scale() );
46-
entityManager.persist( entity );
47-
entityManager.getTransaction().commit();
41+
em.persist( entity );
4842
this.entityId = entity.getId();
49-
}
50-
catch ( Throwable t ) {
51-
if ( entityManager.getTransaction().isActive() ) {
52-
entityManager.getTransaction().rollback();
53-
}
54-
throw t;
55-
}
56-
finally {
57-
entityManager.close();
58-
}
43+
} );
5944

6045
// Should *not* trigger a revision
61-
entityManager = getOrCreateEntityManager();
62-
try {
63-
entityManager.getTransaction().begin();
64-
final BigDecimalEntity entity = entityManager.find( BigDecimalEntity.class, entityId );
46+
scope.inTransaction( em -> {
47+
final BigDecimalEntity entity = em.find( BigDecimalEntity.class, entityId );
6548
entity.setData( "Updated" );
6649
entity.setBigDecimal( BigDecimal.valueOf( bigDecimalValue ) );
67-
entityManager.merge( entity );
68-
entityManager.getTransaction().commit();
69-
}
70-
catch ( Throwable t ) {
71-
if ( entityManager.getTransaction().isActive() ) {
72-
entityManager.getTransaction().rollback();
73-
}
74-
throw t;
75-
}
76-
finally {
77-
entityManager.close();
78-
}
50+
em.merge( entity );
51+
} );
7952

8053
// Triggers RevisionType.MOD
81-
entityManager = getOrCreateEntityManager();
82-
try {
83-
entityManager.getTransaction().begin();
84-
final BigDecimalEntity entity = entityManager.find( BigDecimalEntity.class, entityId );
54+
scope.inTransaction( em -> {
55+
final BigDecimalEntity entity = em.find( BigDecimalEntity.class, entityId );
8556
entity.setData( "Updated2" );
8657
entity.setBigDecimal( BigDecimal.valueOf( bigDecimalValue + 1d ) );
87-
entityManager.merge( entity );
88-
entityManager.getTransaction().commit();
89-
}
90-
catch ( Throwable t ) {
91-
if ( entityManager.getTransaction().isActive() ) {
92-
entityManager.getTransaction().rollback();
93-
}
94-
throw t;
95-
}
96-
finally {
97-
entityManager.close();
98-
}
58+
em.merge( entity );
59+
} );
9960
}
10061

10162
@Test
102-
public void testRevisionCounts() {
103-
assertEquals( Arrays.asList( 1, 2 ), getAuditReader().getRevisions( BigDecimalEntity.class, entityId ) );
63+
public void testRevisionCounts(EntityManagerFactoryScope scope) {
64+
scope.inEntityManager( em -> {
65+
assertEquals( Arrays.asList( 1, 2 ),
66+
getAuditReader( em ).getRevisions( BigDecimalEntity.class, entityId ) );
67+
} );
10468
}
10569

10670
@Test
107-
public void testRevisionHistory() {
108-
final BigDecimalEntity rev1 = getAuditReader().find( BigDecimalEntity.class, entityId, 1 );
109-
assertTrue( BigDecimal.valueOf( bigDecimalValue ).compareTo( rev1.getBigDecimal() ) == 0 );
110-
assertNull( rev1.getData() );
111-
112-
final BigDecimalEntity rev2 = getAuditReader().find( BigDecimalEntity.class, entityId, 2 );
113-
assertTrue( BigDecimal.valueOf( bigDecimalValue + 1d ).compareTo( rev2.getBigDecimal() ) == 0 );
114-
assertNull( rev2.getData() );
71+
public void testRevisionHistory(EntityManagerFactoryScope scope) {
72+
scope.inEntityManager( em -> {
73+
final var auditReader = getAuditReader( em );
74+
final BigDecimalEntity rev1 = auditReader.find( BigDecimalEntity.class, entityId, 1 );
75+
assertTrue( BigDecimal.valueOf( bigDecimalValue ).compareTo( rev1.getBigDecimal() ) == 0 );
76+
assertNull( rev1.getData() );
77+
78+
final BigDecimalEntity rev2 = auditReader.find( BigDecimalEntity.class, entityId, 2 );
79+
assertTrue( BigDecimal.valueOf( bigDecimalValue + 1d ).compareTo( rev2.getBigDecimal() ) == 0 );
80+
assertNull( rev2.getData() );
81+
} );
11582
}
11683

117-
@Override
118-
protected Class<?>[] getAnnotatedClasses() {
119-
return new Class<?>[] { BigDecimalEntity.class };
84+
// helper to access the AuditReader (keeps code concise)
85+
private org.hibernate.envers.AuditReader getAuditReader(EntityManager em) {
86+
return org.hibernate.envers.AuditReaderFactory.get( em );
12087
}
12188

12289
@Entity(name = "BigDecimalEntity")
@@ -131,7 +98,6 @@ public static class BigDecimalEntity {
13198
private String data;
13299

133100
BigDecimalEntity() {
134-
135101
}
136102

137103
BigDecimalEntity(BigDecimal bigDecimal, String data) {

0 commit comments

Comments
 (0)