77import java .util .Arrays ;
88import java .util .List ;
99
10- import org .hibernate .orm .test .envers .BaseEnversJPAFunctionalTestCase ;
11- import org .hibernate .orm .test .envers .Priority ;
10+ import org .hibernate .envers .AuditReaderFactory ;
1211import org .hibernate .orm .test .envers .entities .collection .StringListEntity ;
1312import org .hibernate .orm .test .envers .entities .collection .StringMapEntity ;
1413import org .hibernate .orm .test .envers .entities .collection .StringSetEntity ;
1514import org .hibernate .orm .test .envers .tools .TestTools ;
16- import org .junit .Test ;
17-
15+ import org .hibernate .testing .envers .junit .EnversTest ;
16+ import org .hibernate .testing .orm .junit .BeforeClassTemplate ;
17+ import org .hibernate .testing .orm .junit .EntityManagerFactoryScope ;
1818import org .hibernate .testing .orm .junit .JiraKey ;
19+ import org .hibernate .testing .orm .junit .Jpa ;
20+ import org .junit .jupiter .api .Test ;
1921
20- import static org .hibernate .testing .transaction .TransactionUtil .doInJPA ;
21- import static org .junit .Assert .assertEquals ;
22+ import static org .junit .jupiter .api .Assertions .assertEquals ;
2223
2324/**
2425 * @author Chris Cranford
2526 */
2627@ JiraKey (value = "HHH-11901" )
27- public class CollectionNullValueTest extends BaseEnversJPAFunctionalTestCase {
28+ @ EnversTest
29+ @ Jpa (annotatedClasses = { StringMapEntity .class , StringListEntity .class , StringSetEntity .class })
30+ public class CollectionNullValueTest {
2831 private Integer mapId ;
2932 private Integer listId ;
3033 private Integer setId ;
3134
32- @ Override
33- protected Class <?>[] getAnnotatedClasses () {
34- return new Class <?>[] { StringMapEntity .class , StringListEntity .class , StringSetEntity .class };
35- }
36-
37- @ Test
38- @ Priority (10 )
39- public void initData () {
35+ @ BeforeClassTemplate
36+ public void initData (EntityManagerFactoryScope scope ) {
4037 // Persist map with null values
41- mapId = doInJPA ( this :: entityManagerFactory , entityManager -> {
38+ mapId = scope . fromTransaction ( entityManager -> {
4239 final StringMapEntity sme = new StringMapEntity ();
4340 sme .getStrings ().put ( "A" , "B" );
4441 sme .getStrings ().put ( "B" , null );
@@ -48,7 +45,7 @@ public void initData() {
4845 } );
4946
5047 // Update map with null values
51- doInJPA ( this :: entityManagerFactory , entityManager -> {
48+ scope . inTransaction ( entityManager -> {
5249 final StringMapEntity sme = entityManager .find ( StringMapEntity .class , mapId );
5350 sme .getStrings ().put ( "C" , null );
5451 sme .getStrings ().put ( "D" , "E" );
@@ -57,7 +54,7 @@ public void initData() {
5754 } );
5855
5956 // Persist list with null values
60- listId = doInJPA ( this :: entityManagerFactory , entityManager -> {
57+ listId = scope . fromTransaction ( entityManager -> {
6158 final StringListEntity sle = new StringListEntity ();
6259 sle .getStrings ().add ( "A" );
6360 sle .getStrings ().add ( null );
@@ -67,7 +64,7 @@ public void initData() {
6764 } );
6865
6966 // Update list with null values
70- doInJPA ( this :: entityManagerFactory , entityManager -> {
67+ scope . inTransaction ( entityManager -> {
7168 final StringListEntity sle = entityManager .find ( StringListEntity .class , listId );
7269 sle .getStrings ().add ( null );
7370 sle .getStrings ().add ( "D" );
@@ -76,7 +73,7 @@ public void initData() {
7673 } );
7774
7875 // Persist set with null values
79- setId = doInJPA ( this :: entityManagerFactory , entityManager -> {
76+ setId = scope . fromTransaction ( entityManager -> {
8077 final StringSetEntity sse = new StringSetEntity ();
8178 sse .getStrings ().add ( "A" );
8279 sse .getStrings ().add ( null );
@@ -86,7 +83,7 @@ public void initData() {
8683 } );
8784
8885 // Update set with null values
89- doInJPA ( this :: entityManagerFactory , entityManager -> {
86+ scope . inTransaction ( entityManager -> {
9087 final StringSetEntity sse = entityManager .find ( StringSetEntity .class , setId );
9188 sse .getStrings ().add ( null );
9289 sse .getStrings ().add ( "D" );
@@ -96,41 +93,49 @@ public void initData() {
9693 }
9794
9895 @ Test
99- public void testStringMapHistory () {
100- final List <Number > revisions = getAuditReader ().getRevisions ( StringMapEntity .class , mapId );
101- assertEquals ( Arrays .asList ( 1 , 2 ), revisions );
96+ public void testStringMapHistory (EntityManagerFactoryScope scope ) {
97+ scope .inEntityManager ( entityManager -> {
98+ final var auditReader = AuditReaderFactory .get ( entityManager );
99+ final List <Number > revisions = auditReader .getRevisions ( StringMapEntity .class , mapId );
100+ assertEquals ( Arrays .asList ( 1 , 2 ), revisions );
102101
103- final StringMapEntity rev1 = getAuditReader () .find ( StringMapEntity .class , mapId , 1 );
104- assertEquals ( TestTools .makeMap ( "A" , "B" ), rev1 .getStrings () );
102+ final StringMapEntity rev1 = auditReader .find ( StringMapEntity .class , mapId , 1 );
103+ assertEquals ( TestTools .makeMap ( "A" , "B" ), rev1 .getStrings () );
105104
106- final StringMapEntity rev2 = getAuditReader ().find ( StringMapEntity .class , mapId , 2 );
107- assertEquals ( TestTools .makeMap ( "D" , "E" ), rev2 .getStrings () );
105+ final StringMapEntity rev2 = auditReader .find ( StringMapEntity .class , mapId , 2 );
106+ assertEquals ( TestTools .makeMap ( "D" , "E" ), rev2 .getStrings () );
107+ } );
108108 }
109109
110110 @ Test
111- public void testStringListHistory () {
112- final List <Number > revisions = getAuditReader ().getRevisions ( StringListEntity .class , listId );
113- assertEquals ( Arrays .asList ( 3 , 4 ), revisions );
114-
115- final StringListEntity rev3 = getAuditReader ().find ( StringListEntity .class , listId , 3 );
116- assertEquals ( TestTools .makeList ( "A" ), rev3 .getStrings () );
117-
118- // NOTE: the only reason this assertion expects a null element is because the collection is indexed.
119- // ORM will return a list that consists of { null, "D" } and Envers should effectively mimic that.
120- final StringListEntity rev4 = getAuditReader ().find ( StringListEntity .class , listId , 4 );
121- assertEquals ( TestTools .makeList ( null , "D" ), rev4 .getStrings () );
111+ public void testStringListHistory (EntityManagerFactoryScope scope ) {
112+ scope .inEntityManager ( entityManager -> {
113+ final var auditReader = AuditReaderFactory .get ( entityManager );
114+ final List <Number > revisions = auditReader .getRevisions ( StringListEntity .class , listId );
115+ assertEquals ( Arrays .asList ( 3 , 4 ), revisions );
116+
117+ final StringListEntity rev3 = auditReader .find ( StringListEntity .class , listId , 3 );
118+ assertEquals ( TestTools .makeList ( "A" ), rev3 .getStrings () );
119+
120+ // NOTE: the only reason this assertion expects a null element is because the collection is indexed.
121+ // ORM will return a list that consists of { null, "D" } and Envers should effectively mimic that.
122+ final StringListEntity rev4 = auditReader .find ( StringListEntity .class , listId , 4 );
123+ assertEquals ( TestTools .makeList ( null , "D" ), rev4 .getStrings () );
124+ } );
122125 }
123126
124127 @ Test
125- public void testStringSetHistory () {
126- final List <Number > revisions = getAuditReader ().getRevisions ( StringSetEntity .class , setId );
127- assertEquals ( Arrays .asList ( 5 , 6 ), revisions );
128+ public void testStringSetHistory (EntityManagerFactoryScope scope ) {
129+ scope .inEntityManager ( entityManager -> {
130+ final var auditReader = AuditReaderFactory .get ( entityManager );
131+ final List <Number > revisions = auditReader .getRevisions ( StringSetEntity .class , setId );
132+ assertEquals ( Arrays .asList ( 5 , 6 ), revisions );
128133
129- final StringSetEntity rev5 = getAuditReader () .find ( StringSetEntity .class , setId , 5 );
130- assertEquals ( TestTools .makeSet ( "A" ), rev5 .getStrings () );
134+ final StringSetEntity rev5 = auditReader .find ( StringSetEntity .class , setId , 5 );
135+ assertEquals ( TestTools .makeSet ( "A" ), rev5 .getStrings () );
131136
132- final StringSetEntity rev6 = getAuditReader ().find ( StringSetEntity .class , setId , 6 );
133- assertEquals ( TestTools .makeSet ( "D" ), rev6 .getStrings () );
137+ final StringSetEntity rev6 = auditReader .find ( StringSetEntity .class , setId , 6 );
138+ assertEquals ( TestTools .makeSet ( "D" ), rev6 .getStrings () );
139+ } );
134140 }
135-
136141}
0 commit comments