1
1
/*
2
- * Copyright 2002-2019 the original author or authors.
2
+ * Copyright 2002-2024 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
38
38
import static org .mockito .Mockito .withSettings ;
39
39
40
40
/**
41
- * Unit tests for {@link SharedEntityManagerCreator}.
41
+ * Tests for {@link SharedEntityManagerCreator}.
42
42
*
43
43
* @author Oliver Gierke
44
44
* @author Juergen Hoeller
45
45
*/
46
46
@ ExtendWith (MockitoExtension .class )
47
- public class SharedEntityManagerCreatorTests {
47
+ class SharedEntityManagerCreatorTests {
48
48
49
49
@ Test
50
- public void proxyingWorksIfInfoReturnsNullEntityManagerInterface () {
50
+ void proxyingWorksIfInfoReturnsNullEntityManagerInterface () {
51
51
EntityManagerFactory emf = mock (EntityManagerFactory .class ,
52
52
withSettings ().extraInterfaces (EntityManagerFactoryInfo .class ));
53
53
// EntityManagerFactoryInfo.getEntityManagerInterface returns null
54
54
assertThat (SharedEntityManagerCreator .createSharedEntityManager (emf )).isNotNull ();
55
55
}
56
56
57
57
@ Test
58
- public void transactionRequiredExceptionOnJoinTransaction () {
58
+ void transactionRequiredExceptionOnJoinTransaction () {
59
59
EntityManagerFactory emf = mock (EntityManagerFactory .class );
60
60
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
61
61
assertThatExceptionOfType (TransactionRequiredException .class ).isThrownBy (
62
62
em ::joinTransaction );
63
63
}
64
64
65
65
@ Test
66
- public void transactionRequiredExceptionOnFlush () {
66
+ void transactionRequiredExceptionOnFlush () {
67
67
EntityManagerFactory emf = mock (EntityManagerFactory .class );
68
68
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
69
69
assertThatExceptionOfType (TransactionRequiredException .class ).isThrownBy (
70
70
em ::flush );
71
71
}
72
72
73
73
@ Test
74
- public void transactionRequiredExceptionOnPersist () {
74
+ void transactionRequiredExceptionOnPersist () {
75
75
EntityManagerFactory emf = mock (EntityManagerFactory .class );
76
76
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
77
77
assertThatExceptionOfType (TransactionRequiredException .class ).isThrownBy (() ->
78
78
em .persist (new Object ()));
79
79
}
80
80
81
81
@ Test
82
- public void transactionRequiredExceptionOnMerge () {
82
+ void transactionRequiredExceptionOnMerge () {
83
83
EntityManagerFactory emf = mock (EntityManagerFactory .class );
84
84
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
85
85
assertThatExceptionOfType (TransactionRequiredException .class ).isThrownBy (() ->
86
86
em .merge (new Object ()));
87
87
}
88
88
89
89
@ Test
90
- public void transactionRequiredExceptionOnRemove () {
90
+ void transactionRequiredExceptionOnRemove () {
91
91
EntityManagerFactory emf = mock (EntityManagerFactory .class );
92
92
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
93
93
assertThatExceptionOfType (TransactionRequiredException .class ).isThrownBy (() ->
94
94
em .remove (new Object ()));
95
95
}
96
96
97
97
@ Test
98
- public void transactionRequiredExceptionOnRefresh () {
98
+ void transactionRequiredExceptionOnRefresh () {
99
99
EntityManagerFactory emf = mock (EntityManagerFactory .class );
100
100
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
101
101
assertThatExceptionOfType (TransactionRequiredException .class ).isThrownBy (() ->
102
102
em .refresh (new Object ()));
103
103
}
104
104
105
105
@ Test
106
- public void deferredQueryWithUpdate () {
106
+ void deferredQueryWithUpdate () {
107
107
EntityManagerFactory emf = mock (EntityManagerFactory .class );
108
108
EntityManager targetEm = mock (EntityManager .class );
109
- Query query = mock (Query .class );
109
+ Query targetQuery = mock (Query .class );
110
110
given (emf .createEntityManager ()).willReturn (targetEm );
111
- given (targetEm .createQuery ("x" )).willReturn (query );
111
+ given (targetEm .createQuery ("x" )).willReturn (targetQuery );
112
112
given (targetEm .isOpen ()).willReturn (true );
113
+ given ((Query ) targetQuery .unwrap (targetQuery .getClass ())).willReturn (targetQuery );
113
114
114
115
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
115
- em .createQuery ("x" ).executeUpdate ();
116
+ Query query = em .createQuery ("x" );
117
+ assertThat ((Query ) query .unwrap (null )).isSameAs (targetQuery );
118
+ assertThat ((Query ) query .unwrap (targetQuery .getClass ())).isSameAs (targetQuery );
119
+ assertThat (query .unwrap (Query .class )).isSameAs (query );
120
+ query .executeUpdate ();
116
121
117
- verify (query ).executeUpdate ();
122
+ verify (targetQuery ).executeUpdate ();
118
123
verify (targetEm ).close ();
119
124
}
120
125
121
126
@ Test
122
- public void deferredQueryWithSingleResult () {
127
+ void deferredQueryWithSingleResult () {
123
128
EntityManagerFactory emf = mock (EntityManagerFactory .class );
124
129
EntityManager targetEm = mock (EntityManager .class );
125
- Query query = mock (Query .class );
130
+ Query targetQuery = mock (Query .class );
126
131
given (emf .createEntityManager ()).willReturn (targetEm );
127
- given (targetEm .createQuery ("x" )).willReturn (query );
132
+ given (targetEm .createQuery ("x" )).willReturn (targetQuery );
128
133
given (targetEm .isOpen ()).willReturn (true );
134
+ given ((Query ) targetQuery .unwrap (targetQuery .getClass ())).willReturn (targetQuery );
129
135
130
136
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
131
- em .createQuery ("x" ).getSingleResult ();
137
+ Query query = em .createQuery ("x" );
138
+ assertThat ((Query ) query .unwrap (null )).isSameAs (targetQuery );
139
+ assertThat ((Query ) query .unwrap (targetQuery .getClass ())).isSameAs (targetQuery );
140
+ assertThat (query .unwrap (Query .class )).isSameAs (query );
141
+ query .getSingleResult ();
132
142
133
- verify (query ).getSingleResult ();
143
+ verify (targetQuery ).getSingleResult ();
134
144
verify (targetEm ).close ();
135
145
}
136
146
137
147
@ Test
138
- public void deferredQueryWithResultList () {
148
+ void deferredQueryWithResultList () {
139
149
EntityManagerFactory emf = mock (EntityManagerFactory .class );
140
150
EntityManager targetEm = mock (EntityManager .class );
141
- Query query = mock (Query .class );
151
+ Query targetQuery = mock (Query .class );
142
152
given (emf .createEntityManager ()).willReturn (targetEm );
143
- given (targetEm .createQuery ("x" )).willReturn (query );
153
+ given (targetEm .createQuery ("x" )).willReturn (targetQuery );
144
154
given (targetEm .isOpen ()).willReturn (true );
155
+ given ((Query ) targetQuery .unwrap (targetQuery .getClass ())).willReturn (targetQuery );
145
156
146
157
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
147
- em .createQuery ("x" ).getResultList ();
158
+ Query query = em .createQuery ("x" );
159
+ assertThat ((Query ) query .unwrap (null )).isSameAs (targetQuery );
160
+ assertThat ((Query ) query .unwrap (targetQuery .getClass ())).isSameAs (targetQuery );
161
+ assertThat (query .unwrap (Query .class )).isSameAs (query );
162
+ query .getResultList ();
148
163
149
- verify (query ).getResultList ();
164
+ verify (targetQuery ).getResultList ();
150
165
verify (targetEm ).close ();
151
166
}
152
167
153
168
@ Test
154
- public void deferredQueryWithResultStream () {
169
+ void deferredQueryWithResultStream () {
155
170
EntityManagerFactory emf = mock (EntityManagerFactory .class );
156
171
EntityManager targetEm = mock (EntityManager .class );
157
- Query query = mock (Query .class );
172
+ Query targetQuery = mock (Query .class );
158
173
given (emf .createEntityManager ()).willReturn (targetEm );
159
- given (targetEm .createQuery ("x" )).willReturn (query );
174
+ given (targetEm .createQuery ("x" )).willReturn (targetQuery );
160
175
given (targetEm .isOpen ()).willReturn (true );
176
+ given ((Query ) targetQuery .unwrap (targetQuery .getClass ())).willReturn (targetQuery );
161
177
162
178
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
163
- em .createQuery ("x" ).getResultStream ();
179
+ Query query = em .createQuery ("x" );
180
+ assertThat ((Query ) query .unwrap (null )).isSameAs (targetQuery );
181
+ assertThat ((Query ) query .unwrap (targetQuery .getClass ())).isSameAs (targetQuery );
182
+ assertThat (query .unwrap (Query .class )).isSameAs (query );
183
+ query .getResultStream ();
164
184
165
- verify (query ).getResultStream ();
185
+ verify (targetQuery ).getResultStream ();
166
186
verify (targetEm ).close ();
167
187
}
168
188
169
189
@ Test
170
- public void deferredStoredProcedureQueryWithIndexedParameters () {
190
+ void deferredStoredProcedureQueryWithIndexedParameters () {
171
191
EntityManagerFactory emf = mock (EntityManagerFactory .class );
172
192
EntityManager targetEm = mock (EntityManager .class );
173
- StoredProcedureQuery query = mock (StoredProcedureQuery .class );
193
+ StoredProcedureQuery targetQuery = mock (StoredProcedureQuery .class );
174
194
given (emf .createEntityManager ()).willReturn (targetEm );
175
- given (targetEm .createStoredProcedureQuery ("x" )).willReturn (query );
176
- willReturn ("y" ).given (query ).getOutputParameterValue (0 );
177
- willReturn ("z" ).given (query ).getOutputParameterValue (2 );
195
+ given (targetEm .createStoredProcedureQuery ("x" )).willReturn (targetQuery );
196
+ willReturn ("y" ).given (targetQuery ).getOutputParameterValue (0 );
197
+ willReturn ("z" ).given (targetQuery ).getOutputParameterValue (2 );
178
198
given (targetEm .isOpen ()).willReturn (true );
179
199
180
200
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
@@ -188,24 +208,24 @@ public void deferredStoredProcedureQueryWithIndexedParameters() {
188
208
spq .getOutputParameterValue (1 ));
189
209
assertThat (spq .getOutputParameterValue (2 )).isEqualTo ("z" );
190
210
191
- verify (query ).registerStoredProcedureParameter (0 , String .class , ParameterMode .OUT );
192
- verify (query ).registerStoredProcedureParameter (1 , Number .class , ParameterMode .IN );
193
- verify (query ).registerStoredProcedureParameter (2 , Object .class , ParameterMode .INOUT );
194
- verify (query ).execute ();
211
+ verify (targetQuery ).registerStoredProcedureParameter (0 , String .class , ParameterMode .OUT );
212
+ verify (targetQuery ).registerStoredProcedureParameter (1 , Number .class , ParameterMode .IN );
213
+ verify (targetQuery ).registerStoredProcedureParameter (2 , Object .class , ParameterMode .INOUT );
214
+ verify (targetQuery ).execute ();
195
215
verify (targetEm ).close ();
196
- verifyNoMoreInteractions (query );
216
+ verifyNoMoreInteractions (targetQuery );
197
217
verifyNoMoreInteractions (targetEm );
198
218
}
199
219
200
220
@ Test
201
- public void deferredStoredProcedureQueryWithNamedParameters () {
221
+ void deferredStoredProcedureQueryWithNamedParameters () {
202
222
EntityManagerFactory emf = mock (EntityManagerFactory .class );
203
223
EntityManager targetEm = mock (EntityManager .class );
204
- StoredProcedureQuery query = mock (StoredProcedureQuery .class );
224
+ StoredProcedureQuery targetQuery = mock (StoredProcedureQuery .class );
205
225
given (emf .createEntityManager ()).willReturn (targetEm );
206
- given (targetEm .createStoredProcedureQuery ("x" )).willReturn (query );
207
- willReturn ("y" ).given (query ).getOutputParameterValue ("a" );
208
- willReturn ("z" ).given (query ).getOutputParameterValue ("c" );
226
+ given (targetEm .createStoredProcedureQuery ("x" )).willReturn (targetQuery );
227
+ willReturn ("y" ).given (targetQuery ).getOutputParameterValue ("a" );
228
+ willReturn ("z" ).given (targetQuery ).getOutputParameterValue ("c" );
209
229
given (targetEm .isOpen ()).willReturn (true );
210
230
211
231
EntityManager em = SharedEntityManagerCreator .createSharedEntityManager (emf );
@@ -219,12 +239,12 @@ public void deferredStoredProcedureQueryWithNamedParameters() {
219
239
spq .getOutputParameterValue ("b" ));
220
240
assertThat (spq .getOutputParameterValue ("c" )).isEqualTo ("z" );
221
241
222
- verify (query ).registerStoredProcedureParameter ("a" , String .class , ParameterMode .OUT );
223
- verify (query ).registerStoredProcedureParameter ("b" , Number .class , ParameterMode .IN );
224
- verify (query ).registerStoredProcedureParameter ("c" , Object .class , ParameterMode .INOUT );
225
- verify (query ).execute ();
242
+ verify (targetQuery ).registerStoredProcedureParameter ("a" , String .class , ParameterMode .OUT );
243
+ verify (targetQuery ).registerStoredProcedureParameter ("b" , Number .class , ParameterMode .IN );
244
+ verify (targetQuery ).registerStoredProcedureParameter ("c" , Object .class , ParameterMode .INOUT );
245
+ verify (targetQuery ).execute ();
226
246
verify (targetEm ).close ();
227
- verifyNoMoreInteractions (query );
247
+ verifyNoMoreInteractions (targetQuery );
228
248
verifyNoMoreInteractions (targetEm );
229
249
}
230
250
0 commit comments