|
4 | 4 | */ |
5 | 5 | package org.hibernate.orm.test.component.cascading.collection; |
6 | 6 |
|
7 | | -import java.util.Locale; |
8 | | - |
9 | | -import org.junit.Test; |
| 7 | +import org.hibernate.testing.orm.junit.DomainModel; |
| 8 | +import org.hibernate.testing.orm.junit.SessionFactory; |
| 9 | +import org.hibernate.testing.orm.junit.SessionFactoryScope; |
| 10 | +import org.junit.jupiter.api.Test; |
10 | 11 |
|
11 | | -import org.hibernate.Session; |
12 | | -import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; |
| 12 | +import java.util.Locale; |
13 | 13 |
|
14 | | -import static org.junit.Assert.assertEquals; |
| 14 | +import static org.assertj.core.api.Assertions.assertThat; |
15 | 15 |
|
16 | 16 | /** |
17 | 17 | * @author Steve Ebersole |
18 | 18 | */ |
19 | | -public class CascadeToComponentCollectionTest extends BaseCoreFunctionalTestCase { |
20 | | - |
21 | | - @Override |
22 | | - protected String getBaseForMappings() { |
23 | | - return "org/hibernate/orm/test/"; |
24 | | - } |
25 | | - |
26 | | - @Override |
27 | | - public String[] getMappings() { |
28 | | - return new String[] { "component/cascading/collection/Mappings.hbm.xml" }; |
29 | | - } |
| 19 | +@DomainModel( |
| 20 | + xmlMappings = "org/hibernate/orm/test/component/cascading/collection/Mappings.hbm.xml" |
| 21 | +) |
| 22 | +@SessionFactory |
| 23 | +public class CascadeToComponentCollectionTest { |
30 | 24 |
|
31 | 25 | @Test |
32 | | - public void testMerging() { |
| 26 | + public void testMerging(SessionFactoryScope scope) { |
33 | 27 | // step1, we create a definition with one value |
34 | | - Session session = openSession(); |
35 | | - session.beginTransaction(); |
36 | | - Definition definition = new Definition(); |
37 | | - Value value1 = new Value( definition ); |
38 | | - value1.getLocalizedStrings().addString( new Locale( "en_US" ), "hello" ); |
39 | | - session.persist( definition ); |
40 | | - session.getTransaction().commit(); |
41 | | - session.close(); |
| 28 | + Definition d = new Definition(); |
| 29 | + |
| 30 | + scope.inTransaction( session -> { |
| 31 | + Value value1 = new Value( d ); |
| 32 | + value1.getLocalizedStrings().addString( new Locale( "en_US" ), "hello" ); |
| 33 | + session.persist( d ); |
| 34 | + } |
| 35 | + ); |
42 | 36 |
|
43 | 37 | // step2, we verify that the definition has one value; then we detach it |
44 | | - session = openSession(); |
45 | | - session.beginTransaction(); |
46 | | - definition = ( Definition ) session.get( Definition.class, definition.getId() ); |
47 | | - assertEquals( 1, definition.getValues().size() ); |
48 | | - session.getTransaction().commit(); |
49 | | - session.close(); |
| 38 | + Definition def = scope.fromTransaction( session -> { |
| 39 | + Definition definition = session.find( Definition.class, d.getId() ); |
| 40 | + assertThat( definition.getValues() ).hasSize( 1 ); |
| 41 | + return definition; |
| 42 | + } |
| 43 | + ); |
50 | 44 |
|
51 | 45 | // step3, we add a new value during detachment |
52 | | - Value value2 = new Value( definition ); |
| 46 | + Value value2 = new Value( def ); |
53 | 47 | value2.getLocalizedStrings().addString( new Locale( "es" ), "hola" ); |
54 | 48 |
|
55 | 49 | // step4 we merge the definition |
56 | | - session = openSession(); |
57 | | - session.beginTransaction(); |
58 | | - session.merge( definition ); |
59 | | - session.getTransaction().commit(); |
60 | | - session.close(); |
| 50 | + scope.inTransaction( session -> |
| 51 | + session.merge( def ) |
| 52 | + ); |
61 | 53 |
|
62 | 54 | // step5, final test |
63 | | - session = openSession(); |
64 | | - session.beginTransaction(); |
65 | | - definition = ( Definition ) session.get( Definition.class, definition.getId() ); |
66 | | - assertEquals( 2, definition.getValues().size() ); |
67 | | - for ( Object o : definition.getValues() ) { |
68 | | - assertEquals( 1, ((Value) o).getLocalizedStrings().getStringsCopy().size() ); |
69 | | - } |
70 | | - session.getTransaction().commit(); |
71 | | - session.close(); |
| 55 | + scope.inTransaction( session -> { |
| 56 | + Definition definition = session.find( Definition.class, d.getId() ); |
| 57 | + assertThat( definition.getValues() ).hasSize( 2 ); |
| 58 | + for ( Value o : definition.getValues() ) { |
| 59 | + assertThat( o.getLocalizedStrings().getStringsCopy() ).hasSize( 1 ); |
| 60 | + } |
| 61 | + } |
| 62 | + ); |
72 | 63 | } |
73 | 64 |
|
74 | 65 | @SuppressWarnings("unused") |
75 | 66 | @Test |
76 | | - public void testMergingOriginallyNullComponent() { |
| 67 | + public void testMergingOriginallyNullComponent(SessionFactoryScope scope) { |
77 | 68 | // step1, we create a definition with one value, but with a null component |
78 | | - Session session = openSession(); |
79 | | - session.beginTransaction(); |
80 | | - Definition definition = new Definition(); |
81 | | - Value value1 = new Value( definition ); |
82 | | - session.persist( definition ); |
83 | | - session.getTransaction().commit(); |
84 | | - session.close(); |
| 69 | + Definition d = new Definition(); |
| 70 | + scope.inTransaction( session -> { |
| 71 | + Value value1 = new Value( d ); |
| 72 | + session.persist( d ); |
| 73 | + } |
| 74 | + ); |
85 | 75 |
|
86 | 76 | // step2, we verify that the definition has one value; then we detach it |
87 | | - session = openSession(); |
88 | | - session.beginTransaction(); |
89 | | - definition = ( Definition ) session.get( Definition.class, definition.getId() ); |
90 | | - assertEquals( 1, definition.getValues().size() ); |
91 | | - session.getTransaction().commit(); |
92 | | - session.close(); |
| 77 | + Definition def = scope.fromTransaction( session -> { |
| 78 | + Definition definition = session.find( Definition.class, d.getId() ); |
| 79 | + assertThat( definition.getValues() ).hasSize( 1 ); |
| 80 | + return definition; |
| 81 | + } |
| 82 | + ); |
93 | 83 |
|
94 | 84 | // step3, we add a new value during detachment |
95 | | - ( ( Value ) definition.getValues().iterator().next() ).getLocalizedStrings().addString( new Locale( "en_US" ), "hello" ); |
96 | | - Value value2 = new Value( definition ); |
| 85 | + def.getValues().iterator().next().getLocalizedStrings() |
| 86 | + .addString( new Locale( "en_US" ), "hello" ); |
| 87 | + Value value2 = new Value( def ); |
97 | 88 | value2.getLocalizedStrings().addString( new Locale( "es" ), "hola" ); |
98 | 89 |
|
99 | 90 | // step4 we merge the definition |
100 | | - session = openSession(); |
101 | | - session.beginTransaction(); |
102 | | - session.merge( definition ); |
103 | | - session.getTransaction().commit(); |
104 | | - session.close(); |
| 91 | + scope.inTransaction( session -> |
| 92 | + session.merge( def ) |
| 93 | + ); |
105 | 94 |
|
106 | 95 | // step5, final test |
107 | | - session = openSession(); |
108 | | - session.beginTransaction(); |
109 | | - definition = ( Definition ) session.get( Definition.class, definition.getId() ); |
110 | | - assertEquals( 2, definition.getValues().size() ); |
111 | | - for ( Object o : definition.getValues() ) { |
112 | | - assertEquals( 1, ((Value) o).getLocalizedStrings().getStringsCopy().size() ); |
113 | | - } |
114 | | - session.getTransaction().commit(); |
115 | | - session.close(); |
| 96 | + scope.inTransaction( |
| 97 | + session -> { |
| 98 | + Definition definition = session.find( Definition.class, def.getId() ); |
| 99 | + assertThat( definition.getValues().size() ).isEqualTo( 2 ); |
| 100 | + for ( Value o : definition.getValues() ) { |
| 101 | + assertThat( o.getLocalizedStrings().getStringsCopy() ).hasSize( 1 ); |
| 102 | + } |
| 103 | + } |
| 104 | + ); |
116 | 105 | } |
117 | 106 | } |
0 commit comments