30
30
31
31
import javax .sql .DataSource ;
32
32
33
- import org .junit .jupiter .api .AfterEach ;
34
33
import org .junit .jupiter .api .BeforeEach ;
35
34
import org .junit .jupiter .api .Test ;
36
35
37
36
import static org .assertj .core .api .Assertions .assertThat ;
37
+ import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
38
38
import static org .mockito .ArgumentMatchers .anyString ;
39
39
import static org .mockito .BDDMockito .given ;
40
40
import static org .mockito .Mockito .mock ;
46
46
*/
47
47
public class JdbcClientQueryTests {
48
48
49
- private Connection connection = mock ();
50
-
51
49
private DataSource dataSource = mock ();
52
50
51
+ private Connection connection = mock ();
52
+
53
53
private PreparedStatement preparedStatement = mock ();
54
54
55
55
private ResultSet resultSet = mock ();
@@ -62,17 +62,10 @@ public class JdbcClientQueryTests {
62
62
@ BeforeEach
63
63
public void setup () throws Exception {
64
64
given (dataSource .getConnection ()).willReturn (connection );
65
- given (resultSetMetaData .getColumnCount ()).willReturn (1 );
66
- given (resultSetMetaData .getColumnLabel (1 )).willReturn ("age" );
67
65
given (connection .prepareStatement (anyString ())).willReturn (preparedStatement );
68
66
given (preparedStatement .executeQuery ()).willReturn (resultSet );
69
- }
70
-
71
- @ AfterEach
72
- public void verifyClose () throws Exception {
73
- verify (preparedStatement ).close ();
74
- verify (resultSet ).close ();
75
- verify (connection ).close ();
67
+ given (resultSetMetaData .getColumnCount ()).willReturn (1 );
68
+ given (resultSetMetaData .getColumnLabel (1 )).willReturn ("age" );
76
69
}
77
70
78
71
@@ -93,6 +86,9 @@ public void testQueryForListWithIndexedParam() throws Exception {
93
86
94
87
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
95
88
verify (preparedStatement ).setObject (1 , 3 );
89
+ verify (resultSet ).close ();
90
+ verify (preparedStatement ).close ();
91
+ verify (connection ).close ();
96
92
}
97
93
98
94
@ Test
@@ -105,6 +101,9 @@ public void testQueryForListWithIndexedParamAndEmptyResult() throws Exception {
105
101
assertThat (li .size ()).as ("All rows returned" ).isEqualTo (0 );
106
102
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
107
103
verify (preparedStatement ).setObject (1 , 3 );
104
+ verify (resultSet ).close ();
105
+ verify (preparedStatement ).close ();
106
+ verify (connection ).close ();
108
107
}
109
108
110
109
@ Test
@@ -120,6 +119,9 @@ public void testQueryForListWithIndexedParamAndSingleRow() throws Exception {
120
119
assertThat (li .get (0 ).get ("age" )).as ("First row is Integer" ).isEqualTo (11 );
121
120
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
122
121
verify (preparedStatement ).setObject (1 , 3 );
122
+ verify (resultSet ).close ();
123
+ verify (preparedStatement ).close ();
124
+ verify (connection ).close ();
123
125
}
124
126
125
127
@ Test
@@ -136,6 +138,9 @@ public void testQueryForListWithIndexedParamAndSingleColumn() throws Exception {
136
138
assertThat (li .get (0 )).as ("First row is Integer" ).isEqualTo (11 );
137
139
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
138
140
verify (preparedStatement ).setObject (1 , 3 );
141
+ verify (resultSet ).close ();
142
+ verify (preparedStatement ).close ();
143
+ verify (connection ).close ();
139
144
}
140
145
141
146
@ Test
@@ -151,10 +156,13 @@ public void testQueryForMapWithIndexedParamAndSingleRow() throws Exception {
151
156
assertThat (map .get ("age" )).as ("Row is Integer" ).isEqualTo (11 );
152
157
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
153
158
verify (preparedStatement ).setObject (1 , 3 );
159
+ verify (resultSet ).close ();
160
+ verify (preparedStatement ).close ();
161
+ verify (connection ).close ();
154
162
}
155
163
156
164
@ Test
157
- public void testQueryForObjectWithIndexedParamAndRowMapper () throws Exception {
165
+ public void testQueryForIntegerWithIndexedParamAndRowMapper () throws Exception {
158
166
given (resultSet .next ()).willReturn (true , false );
159
167
given (resultSet .getInt (1 )).willReturn (22 );
160
168
@@ -165,6 +173,9 @@ public void testQueryForObjectWithIndexedParamAndRowMapper() throws Exception {
165
173
assertThat (value ).isEqualTo (22 );
166
174
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
167
175
verify (preparedStatement ).setObject (1 , 3 );
176
+ verify (resultSet ).close ();
177
+ verify (preparedStatement ).close ();
178
+ verify (connection ).close ();
168
179
}
169
180
170
181
@ Test
@@ -179,10 +190,13 @@ public void testQueryForOptionalWithIndexedParamAndRowMapper() throws Exception
179
190
assertThat (value .get ()).isEqualTo (22 );
180
191
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
181
192
verify (preparedStatement ).setObject (1 , 3 );
193
+ verify (resultSet ).close ();
194
+ verify (preparedStatement ).close ();
195
+ verify (connection ).close ();
182
196
}
183
197
184
198
@ Test
185
- public void testQueryForObjectWithIndexedParamAndInteger () throws Exception {
199
+ public void testQueryForIntegerWithIndexedParam () throws Exception {
186
200
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
187
201
given (resultSet .next ()).willReturn (true , false );
188
202
given (resultSet .getObject (1 )).willReturn (22 );
@@ -194,6 +208,9 @@ public void testQueryForObjectWithIndexedParamAndInteger() throws Exception {
194
208
assertThat (value ).isEqualTo (22 );
195
209
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
196
210
verify (preparedStatement ).setObject (1 , 3 );
211
+ verify (resultSet ).close ();
212
+ verify (preparedStatement ).close ();
213
+ verify (connection ).close ();
197
214
}
198
215
199
216
@ Test
@@ -209,6 +226,15 @@ public void testQueryForIntWithIndexedParam() throws Exception {
209
226
assertThat (i ).as ("Return of an int" ).isEqualTo (22 );
210
227
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
211
228
verify (preparedStatement ).setObject (1 , 3 );
229
+ verify (resultSet ).close ();
230
+ verify (preparedStatement ).close ();
231
+ verify (connection ).close ();
232
+ }
233
+
234
+ @ Test
235
+ public void testQueryForObjectWithIndexedParamAndList () {
236
+ assertThatIllegalArgumentException ().isThrownBy (() ->
237
+ client .sql ("SELECT AGE FROM CUSTMR WHERE ID IN (?)" ).param (Arrays .asList (3 , 4 )).query ().singleValue ());
212
238
}
213
239
214
240
@@ -230,6 +256,9 @@ public void testQueryForListWithNamedParam() throws Exception {
230
256
231
257
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
232
258
verify (preparedStatement ).setObject (1 , 3 );
259
+ verify (resultSet ).close ();
260
+ verify (preparedStatement ).close ();
261
+ verify (connection ).close ();
233
262
}
234
263
235
264
@ Test
@@ -243,6 +272,9 @@ public void testQueryForListWithNamedParamAndEmptyResult() throws Exception {
243
272
assertThat (li .size ()).as ("All rows returned" ).isEqualTo (0 );
244
273
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
245
274
verify (preparedStatement ).setObject (1 , 3 );
275
+ verify (resultSet ).close ();
276
+ verify (preparedStatement ).close ();
277
+ verify (connection ).close ();
246
278
}
247
279
248
280
@ Test
@@ -259,6 +291,9 @@ public void testQueryForListWithNamedParamAndSingleRow() throws Exception {
259
291
assertThat (li .get (0 ).get ("age" )).as ("First row is Integer" ).isEqualTo (11 );
260
292
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
261
293
verify (preparedStatement ).setObject (1 , 3 );
294
+ verify (resultSet ).close ();
295
+ verify (preparedStatement ).close ();
296
+ verify (connection ).close ();
262
297
}
263
298
264
299
@ Test
@@ -275,6 +310,9 @@ public void testQueryForListWithNamedParamAndSingleColumn() throws Exception {
275
310
assertThat (li .get (0 )).as ("First row is Integer" ).isEqualTo (11 );
276
311
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
277
312
verify (preparedStatement ).setObject (1 , 3 );
313
+ verify (resultSet ).close ();
314
+ verify (preparedStatement ).close ();
315
+ verify (connection ).close ();
278
316
}
279
317
280
318
@ Test
@@ -290,10 +328,13 @@ public void testQueryForMapWithNamedParamAndSingleRow() throws Exception {
290
328
assertThat (map .get ("age" )).as ("Row is Integer" ).isEqualTo (11 );
291
329
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID < ?" );
292
330
verify (preparedStatement ).setObject (1 , 3 );
331
+ verify (resultSet ).close ();
332
+ verify (preparedStatement ).close ();
333
+ verify (connection ).close ();
293
334
}
294
335
295
336
@ Test
296
- public void testQueryForObjectWithNamedParamAndRowMapper () throws Exception {
337
+ public void testQueryForIntegerWithNamedParamAndRowMapper () throws Exception {
297
338
given (resultSet .next ()).willReturn (true , false );
298
339
given (resultSet .getInt (1 )).willReturn (22 );
299
340
@@ -305,10 +346,13 @@ public void testQueryForObjectWithNamedParamAndRowMapper() throws Exception {
305
346
assertThat (value ).isEqualTo (22 );
306
347
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
307
348
verify (preparedStatement ).setObject (1 , 3 );
349
+ verify (resultSet ).close ();
350
+ verify (preparedStatement ).close ();
351
+ verify (connection ).close ();
308
352
}
309
353
310
354
@ Test
311
- public void testQueryForObjectWithNamedParamAndMappedSimpleValue () throws Exception {
355
+ public void testQueryForIntegerWithNamedParamAndMappedSimpleValue () throws Exception {
312
356
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
313
357
given (resultSet .next ()).willReturn (true , false );
314
358
given (resultSet .getInt (1 )).willReturn (22 );
@@ -321,10 +365,13 @@ public void testQueryForObjectWithNamedParamAndMappedSimpleValue() throws Except
321
365
assertThat (value ).isEqualTo (22 );
322
366
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
323
367
verify (preparedStatement ).setObject (1 , 3 );
368
+ verify (resultSet ).close ();
369
+ verify (preparedStatement ).close ();
370
+ verify (connection ).close ();
324
371
}
325
372
326
373
@ Test
327
- public void testQueryForObjectWithNamedParamAndMappedRecord () throws Exception {
374
+ public void testQueryForMappedRecordWithNamedParam () throws Exception {
328
375
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
329
376
given (resultSet .findColumn ("age" )).willReturn (1 );
330
377
given (resultSet .next ()).willReturn (true , false );
@@ -338,10 +385,13 @@ public void testQueryForObjectWithNamedParamAndMappedRecord() throws Exception {
338
385
assertThat (value .age ()).isEqualTo (22 );
339
386
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
340
387
verify (preparedStatement ).setObject (1 , 3 );
388
+ verify (resultSet ).close ();
389
+ verify (preparedStatement ).close ();
390
+ verify (connection ).close ();
341
391
}
342
392
343
393
@ Test
344
- public void testQueryForObjectWithNamedParamAndMappedFieldHolder () throws Exception {
394
+ public void testQueryForMappedFieldHolderWithNamedParam () throws Exception {
345
395
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
346
396
given (resultSet .next ()).willReturn (true , false );
347
397
given (resultSet .getInt (1 )).willReturn (22 );
@@ -354,10 +404,13 @@ public void testQueryForObjectWithNamedParamAndMappedFieldHolder() throws Except
354
404
assertThat (value .age ).isEqualTo (22 );
355
405
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
356
406
verify (preparedStatement ).setObject (1 , 3 );
407
+ verify (resultSet ).close ();
408
+ verify (preparedStatement ).close ();
409
+ verify (connection ).close ();
357
410
}
358
411
359
412
@ Test
360
- public void testQueryForObjectWithNamedParamAndInteger () throws Exception {
413
+ public void testQueryForIntegerWithNamedParam () throws Exception {
361
414
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
362
415
given (resultSet .next ()).willReturn (true , false );
363
416
given (resultSet .getObject (1 )).willReturn (22 );
@@ -369,10 +422,13 @@ public void testQueryForObjectWithNamedParamAndInteger() throws Exception {
369
422
assertThat (value ).isEqualTo (22 );
370
423
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
371
424
verify (preparedStatement ).setObject (1 , 3 );
425
+ verify (resultSet ).close ();
426
+ verify (preparedStatement ).close ();
427
+ verify (connection ).close ();
372
428
}
373
429
374
430
@ Test
375
- public void testQueryForObjectWithNamedParamAndList () throws Exception {
431
+ public void testQueryForIntegerWithNamedParamAndList () throws Exception {
376
432
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
377
433
given (resultSet .next ()).willReturn (true , false );
378
434
given (resultSet .getObject (1 )).willReturn (22 );
@@ -384,10 +440,14 @@ public void testQueryForObjectWithNamedParamAndList() throws Exception {
384
440
assertThat (value ).isEqualTo (22 );
385
441
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID IN (?, ?)" );
386
442
verify (preparedStatement ).setObject (1 , 3 );
443
+ verify (preparedStatement ).setObject (2 , 4 );
444
+ verify (resultSet ).close ();
445
+ verify (preparedStatement ).close ();
446
+ verify (connection ).close ();
387
447
}
388
448
389
449
@ Test
390
- public void testQueryForObjectWithNamedParamAndListOfExpressionLists () throws Exception {
450
+ public void testQueryForIntegerWithNamedParamAndListOfExpressionLists () throws Exception {
391
451
given (resultSet .getMetaData ()).willReturn (resultSetMetaData );
392
452
given (resultSet .next ()).willReturn (true , false );
393
453
given (resultSet .getObject (1 )).willReturn (22 );
@@ -402,6 +462,12 @@ public void testQueryForObjectWithNamedParamAndListOfExpressionLists() throws Ex
402
462
assertThat (value ).isEqualTo (22 );
403
463
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE (ID, NAME) IN ((?, ?), (?, ?))" );
404
464
verify (preparedStatement ).setObject (1 , 3 );
465
+ verify (preparedStatement ).setString (2 , "Rod" );
466
+ verify (preparedStatement ).setObject (3 , 4 );
467
+ verify (preparedStatement ).setString (4 , "Juergen" );
468
+ verify (resultSet ).close ();
469
+ verify (preparedStatement ).close ();
470
+ verify (connection ).close ();
405
471
}
406
472
407
473
@ Test
@@ -417,6 +483,9 @@ public void testQueryForIntWithNamedParam() throws Exception {
417
483
assertThat (i ).as ("Return of an int" ).isEqualTo (22 );
418
484
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
419
485
verify (preparedStatement ).setObject (1 , 3 );
486
+ verify (resultSet ).close ();
487
+ verify (preparedStatement ).close ();
488
+ verify (connection ).close ();
420
489
}
421
490
422
491
@ Test
@@ -432,6 +501,9 @@ public void testQueryForLongWithParamBean() throws Exception {
432
501
assertThat (l ).as ("Return of a long" ).isEqualTo (87 );
433
502
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
434
503
verify (preparedStatement ).setObject (1 , 3 , Types .INTEGER );
504
+ verify (resultSet ).close ();
505
+ verify (preparedStatement ).close ();
506
+ verify (connection ).close ();
435
507
}
436
508
437
509
@ Test
@@ -448,6 +520,9 @@ public void testQueryForLongWithParamBeanWithCollection() throws Exception {
448
520
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID IN (?, ?)" );
449
521
verify (preparedStatement ).setObject (1 , 3 );
450
522
verify (preparedStatement ).setObject (2 , 5 );
523
+ verify (resultSet ).close ();
524
+ verify (preparedStatement ).close ();
525
+ verify (connection ).close ();
451
526
}
452
527
453
528
@ Test
@@ -463,6 +538,9 @@ public void testQueryForLongWithParamRecord() throws Exception {
463
538
assertThat (l ).as ("Return of a long" ).isEqualTo (87 );
464
539
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
465
540
verify (preparedStatement ).setObject (1 , 3 , Types .INTEGER );
541
+ verify (resultSet ).close ();
542
+ verify (preparedStatement ).close ();
543
+ verify (connection ).close ();
466
544
}
467
545
468
546
@ Test
@@ -478,6 +556,9 @@ public void testQueryForLongWithParamFieldHolder() throws Exception {
478
556
assertThat (l ).as ("Return of a long" ).isEqualTo (87 );
479
557
verify (connection ).prepareStatement ("SELECT AGE FROM CUSTMR WHERE ID = ?" );
480
558
verify (preparedStatement ).setObject (1 , 3 , Types .INTEGER );
559
+ verify (resultSet ).close ();
560
+ verify (preparedStatement ).close ();
561
+ verify (connection ).close ();
481
562
}
482
563
483
564
0 commit comments