16
16
17
17
package org.springframework.jdbc.core
18
18
19
+ import io.mockk.every
19
20
import io.mockk.mockk
20
21
import io.mockk.verify
21
22
import org.junit.Assert.assertEquals
23
+ import org.junit.Assert.assertNull
22
24
import org.junit.Test
23
25
import java.sql.*
24
26
@@ -30,91 +32,96 @@ import java.sql.*
30
32
*/
31
33
class JdbcOperationsExtensionsTests {
32
34
33
- val template = mockk<JdbcTemplate >(relaxed = true )
35
+ val template = mockk<JdbcTemplate >()
36
+
37
+ val sql = " select age from customer where id = 3"
34
38
35
39
@Test
36
40
fun `queryForObject with reified type parameters` () {
37
- val sql = " select age from customer where id = 3 "
38
- template.queryForObject<Int >(sql)
39
- verify { template.queryForObject(sql, Integer :: class .java ) }
41
+ every { template.queryForObject( sql, any< Class < Int >>()) } returns 2
42
+ assertEquals( 2 , template.queryForObject<Int >(sql) )
43
+ verify { template.queryForObject(sql, any< Class < Int >>() ) }
40
44
}
41
45
42
46
@Test
43
47
fun `queryForObject with RowMapper-like function` () {
44
- val sql = " select age from customer where id = ? "
45
- template.queryForObject(sql, 3 ) { rs: ResultSet , _: Int -> rs.getInt(1 ) }
48
+ every { template.queryForObject( sql, any< RowMapper < Int >>(), any< Int >()) } returns 2
49
+ assertEquals( 2 , template.queryForObject(sql, 3 ) { rs: ResultSet , _: Int -> rs.getInt(1 ) })
46
50
verify { template.queryForObject(eq(sql), any<RowMapper <Int >>(), eq(3 )) }
47
51
}
48
52
49
53
@Test // gh-22682
50
54
fun `queryForObject with nullable RowMapper-like function` () {
51
- val sql = " select age from customer where id = ? "
52
- template.queryForObject(sql, 3 ) { _, _ -> null as Int? }
55
+ every { template.queryForObject( sql, any< RowMapper < Int >>(), 3 ) } returns null
56
+ assertNull( template.queryForObject(sql, 3 ) { _, _ -> null as Int? })
53
57
verify { template.queryForObject(eq(sql), any<RowMapper <Int ?>>(), eq(3 )) }
54
58
}
55
59
56
60
@Test
57
61
fun `queryForObject with reified type parameters and argTypes` () {
58
- val sql = " select age from customer where id = ?"
59
62
val args = arrayOf(3 )
60
63
val argTypes = intArrayOf(JDBCType .INTEGER .vendorTypeNumber)
61
- template.queryForObject<Int >(sql, args, argTypes)
62
- verify { template.queryForObject(sql, args, argTypes, Integer ::class .java) }
64
+ every { template.queryForObject(sql, args, argTypes, any<Class <Int >>()) } returns 2
65
+ assertEquals(2 , template.queryForObject<Int >(sql, args, argTypes))
66
+ verify { template.queryForObject(sql, args, argTypes, any<Class <Int >>()) }
63
67
}
64
68
65
69
@Test
66
70
fun `queryForObject with reified type parameters and args` () {
67
- val sql = " select age from customer where id = ?"
68
71
val args = arrayOf(3 )
69
- template.queryForObject<Int >(sql, args)
70
- verify { template.queryForObject(sql, args, Integer ::class .java) }
72
+ every { template.queryForObject(sql, args, any<Class <Int >>()) } returns 2
73
+ assertEquals(2 , template.queryForObject<Int >(sql, args))
74
+ verify { template.queryForObject(sql, args, any<Class <Int >>()) }
71
75
}
72
76
73
77
@Test
74
78
fun `queryForList with reified type parameters` () {
75
- val sql = " select age from customer where id = 3"
76
- template.queryForList<Int >(sql)
77
- verify { template.queryForList(sql, Integer ::class .java) }
79
+ val list = listOf (1 , 2 , 3 )
80
+ every { template.queryForList(sql, any<Class <Int >>()) } returns list
81
+ assertEquals(list, template.queryForList<Int >(sql))
82
+ verify { template.queryForList(sql, any<Class <Int >>()) }
78
83
}
79
84
80
85
@Test
81
86
fun `queryForList with reified type parameters and argTypes` () {
82
- val sql = " select age from customer where id = ? "
87
+ val list = listOf ( 1 , 2 , 3 )
83
88
val args = arrayOf(3 )
84
89
val argTypes = intArrayOf(JDBCType .INTEGER .vendorTypeNumber)
85
- template.queryForList<Int >(sql, args, argTypes)
86
- verify { template.queryForList(sql, args, argTypes, Integer ::class .java) }
90
+ every { template.queryForList(sql, args, argTypes, any<Class <Int >>()) } returns list
91
+ assertEquals(list, template.queryForList<Int >(sql, args, argTypes))
92
+ verify { template.queryForList(sql, args, argTypes, any<Class <Int >>()) }
87
93
}
88
94
89
95
@Test
90
96
fun `queryForList with reified type parameters and args` () {
91
- val sql = " select age from customer where id = ? "
97
+ val list = listOf ( 1 , 2 , 3 )
92
98
val args = arrayOf(3 )
99
+ every { template.queryForList(sql, args, any<Class <Int >>()) } returns list
93
100
template.queryForList<Int >(sql, args)
94
- verify { template.queryForList(sql, args, Integer :: class .java ) }
101
+ verify { template.queryForList(sql, args, any< Class < Int >>() ) }
95
102
}
96
103
97
104
@Test
98
105
fun `query with ResultSetExtractor-like function` () {
99
- val sql = " select age from customer where id = ? "
100
- template.query<Int >(sql, 3 ) { rs ->
106
+ every { template.query(eq( sql), any< ResultSetExtractor < Int >>(), eq( 3 )) } returns 2
107
+ assertEquals( 2 , template.query<Int >(sql, 3 ) { rs ->
101
108
rs.next()
102
109
rs.getInt(1 )
103
- }
110
+ })
104
111
verify { template.query(eq(sql), any<ResultSetExtractor <Int >>(), eq(3 )) }
105
112
}
106
113
107
114
@Test // gh-22682
108
115
fun `query with nullable ResultSetExtractor-like function` () {
109
- val sql = " select age from customer where id = ? "
110
- template.query<Int ?>(sql, 3 ) { _ -> null }
116
+ every { template.query(eq( sql), any< ResultSetExtractor < Int ?>>(), eq( 3 )) } returns null
117
+ assertNull( template.query<Int ?>(sql, 3 ) { _ -> null })
111
118
verify { template.query(eq(sql), any<ResultSetExtractor <Int ?>>(), eq(3 )) }
112
119
}
113
120
114
121
@Suppress(" RemoveExplicitTypeArguments" )
115
122
@Test
116
123
fun `query with RowCallbackHandler-like function` () {
117
- val sql = " select age from customer where id = ? "
124
+ every { template.query( sql, ofType< RowCallbackHandler >(), 3 ) } returns Unit
118
125
template.query(sql, 3 ) { rs ->
119
126
assertEquals(22 , rs.getInt(1 ))
120
127
}
@@ -123,10 +130,11 @@ class JdbcOperationsExtensionsTests {
123
130
124
131
@Test
125
132
fun `query with RowMapper-like function` () {
126
- val sql = " select age from customer where id = ?"
127
- template.query(sql, 3 ) { rs, _ ->
133
+ val list = listOf (1 , 2 , 3 )
134
+ every { template.query(sql, ofType<RowMapper <* >>(), 3 ) } returns list
135
+ assertEquals(list, template.query(sql, 3 ) { rs, _ ->
128
136
rs.getInt(1 )
129
- }
137
+ })
130
138
verify { template.query(sql, ofType<RowMapper <* >>(), 3 ) }
131
139
}
132
140
0 commit comments