Skip to content

Commit de3311c

Browse files
committed
Add some more unit-tests
1 parent 1bd0f48 commit de3311c

File tree

1 file changed

+102
-29
lines changed

1 file changed

+102
-29
lines changed
Lines changed: 102 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.utplsql.api.db;
22

33
import oracle.jdbc.OracleConnection;
4+
import org.junit.jupiter.api.Nested;
45
import org.junit.jupiter.api.Test;
56

67
import java.sql.CallableStatement;
@@ -11,47 +12,119 @@
1112

1213
public class DynamicParameterListTest {
1314

14-
@Test
15-
void call_with_three_different_types() throws SQLException {
15+
@Nested
16+
class single_parameters {
17+
@Test
18+
void can_add_string() throws SQLException {
19+
CallableStatement stmt = mock(CallableStatement.class);
1620

17-
CallableStatement mockedStatement = mock(CallableStatement.class);
18-
OracleConnection mockedConn = mock(OracleConnection.class);
21+
DynamicParameterList paramList = DynamicParameterList.builder()
22+
.add("a_param", "MyString")
23+
.build();
1924

20-
Object[] numArr = new Object[]{1, 2};
25+
assertEquals("a_param => ?", paramList.getSql());
2126

22-
DynamicParameterList parameterList = DynamicParameterList.builder()
23-
.add("a_object_owner", "MyOwner")
24-
.add("a_num_param", 123)
25-
.add("a_num_array", numArr, "MY_NUM_ARR", mockedConn)
26-
.build();
27+
paramList.setParamsStartWithIndex(stmt, 5);
28+
verify(stmt).setString(5, "MyString");
29+
}
2730

28-
assertEquals("a_object_owner => ?, a_num_param => ?, a_num_array => ?", parameterList.getSql());
31+
@Test
32+
void can_add_int() throws SQLException {
33+
CallableStatement stmt = mock(CallableStatement.class);
2934

30-
parameterList.setParamsStartWithIndex(mockedStatement, 5);
35+
DynamicParameterList paramList = DynamicParameterList.builder()
36+
.add("a_param", 1234)
37+
.build();
3138

32-
verify(mockedStatement).setString(5, "MyOwner");
33-
verify(mockedStatement).setInt(6, 123);
34-
verify(mockedConn).createOracleArray("MY_NUM_ARR", numArr);
35-
verify(mockedStatement).setArray(7, null);
39+
assertEquals("a_param => ?", paramList.getSql());
40+
41+
paramList.setParamsStartWithIndex(stmt, 10);
42+
verify(stmt).setInt(10, 1234);
43+
}
44+
45+
@Test
46+
void can_add_array() throws SQLException {
47+
CallableStatement stmt = mock(CallableStatement.class);
48+
OracleConnection conn = mock(OracleConnection.class);
49+
50+
Object[] numArr = new Object[]{1, 2};
51+
52+
DynamicParameterList paramList = DynamicParameterList.builder()
53+
.add("a_param", numArr, "MY_TYPE", conn)
54+
.build();
55+
56+
assertEquals("a_param => ?", paramList.getSql());
57+
58+
paramList.setParamsStartWithIndex(stmt, 3);
59+
verify(conn).createOracleArray("MY_TYPE", numArr);
60+
verify(stmt).setArray(3, null);
61+
}
3662
}
3763

38-
@Test
39-
void when_not_accept_empty_filter_empty_elements() throws SQLException {
64+
@Nested
65+
class mutliple_parameters {
66+
67+
@Test
68+
void several_parameters_are_issued_in_the_correct_order() throws SQLException {
69+
CallableStatement mockedStatement = mock(CallableStatement.class);
70+
71+
DynamicParameterList parameterList = DynamicParameterList.builder()
72+
.add("a_param1", "Param1")
73+
.add("a_param2", "Param2")
74+
.add("a_param3", "Param3")
75+
.build();
76+
77+
assertEquals("a_param1 => ?, a_param2 => ?, a_param3 => ?", parameterList.getSql());
78+
79+
parameterList.setParamsStartWithIndex(mockedStatement, 10);
80+
81+
verify(mockedStatement).setString(10, "Param1");
82+
verify(mockedStatement).setString(11, "Param2");
83+
verify(mockedStatement).setString(12, "Param3");
84+
}
85+
86+
@Test
87+
void call_with_three_different_types() throws SQLException {
88+
89+
CallableStatement mockedStatement = mock(CallableStatement.class);
90+
OracleConnection mockedConn = mock(OracleConnection.class);
91+
92+
Object[] numArr = new Object[]{1, 2};
93+
94+
DynamicParameterList parameterList = DynamicParameterList.builder()
95+
.add("a_object_owner", "MyOwner")
96+
.add("a_num_param", 123)
97+
.add("a_num_array", numArr, "MY_NUM_ARR", mockedConn)
98+
.build();
99+
100+
assertEquals("a_object_owner => ?, a_num_param => ?, a_num_array => ?", parameterList.getSql());
101+
102+
parameterList.setParamsStartWithIndex(mockedStatement, 5);
103+
104+
verify(mockedStatement).setString(5, "MyOwner");
105+
verify(mockedStatement).setInt(6, 123);
106+
verify(mockedConn).createOracleArray("MY_NUM_ARR", numArr);
107+
verify(mockedStatement).setArray(7, null);
108+
}
109+
110+
@Test
111+
void when_not_accept_empty_filter_empty_elements() throws SQLException {
40112

41-
CallableStatement mockedStatement = mock(CallableStatement.class);
42-
OracleConnection mockedConn = mock(OracleConnection.class);
113+
CallableStatement mockedStatement = mock(CallableStatement.class);
114+
OracleConnection mockedConn = mock(OracleConnection.class);
43115

44-
DynamicParameterList parameterList = DynamicParameterList.builder()
45-
.addIfNotEmpty("a_object_owner", (String)null)
46-
.addIfNotEmpty("a_num_param", (Integer)null)
47-
.addIfNotEmpty("a_num_array", new Object[]{}, "MY_NUM_ARR", mockedConn)
48-
.build();
116+
DynamicParameterList parameterList = DynamicParameterList.builder()
117+
.addIfNotEmpty("a_object_owner", (String) null)
118+
.addIfNotEmpty("a_num_param", (Integer) null)
119+
.addIfNotEmpty("a_num_array", new Object[]{}, "MY_NUM_ARR", mockedConn)
120+
.build();
49121

50-
assertEquals("", parameterList.getSql());
122+
assertEquals("", parameterList.getSql());
51123

52-
parameterList.setParamsStartWithIndex(mockedStatement, 2);
124+
parameterList.setParamsStartWithIndex(mockedStatement, 2);
53125

54-
verifyNoMoreInteractions(mockedStatement);
55-
verifyNoMoreInteractions(mockedConn);
126+
verifyNoMoreInteractions(mockedStatement);
127+
verifyNoMoreInteractions(mockedConn);
128+
}
56129
}
57130
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy