1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.transaction.jdbc;
17
18 import static org.junit.Assert.*;
19 import static org.mockito.Mockito.*;
20
21 import javax.sql.DataSource;
22
23 import org.apache.ibatis.session.TransactionIsolationLevel;
24 import org.junit.jupiter.api.Test;
25
26 class JdbcTransactionTest {
27 @Test
28 void testSetAutoCommitOnClose() throws Exception {
29 testAutoCommit(true, false, true, false);
30 testAutoCommit(false, false, true, false);
31 testAutoCommit(true, true, true, false);
32 testAutoCommit(false, true, true, false);
33 testAutoCommit(true, false, false, true);
34 testAutoCommit(false, false, false, true);
35 testAutoCommit(true, true, true, true);
36 testAutoCommit(false, true, true, true);
37 }
38
39 private void testAutoCommit(boolean initialAutoCommit, boolean desiredAutoCommit, boolean resultAutoCommit,
40 boolean skipSetAutoCommitOnClose) throws Exception {
41 TestConnection con = new TestConnection(initialAutoCommit);
42 DataSource ds = mock(DataSource.class);
43 when(ds.getConnection()).thenReturn(con);
44
45 JdbcTransaction transaction = new JdbcTransaction(ds, TransactionIsolationLevel.NONE, desiredAutoCommit, skipSetAutoCommitOnClose);
46 transaction.getConnection();
47 transaction.commit();
48 transaction.close();
49
50 assertEquals(resultAutoCommit, con.getAutoCommit());
51 }
52 }