From e607571702344713128bd3e1582d230821c84bf2 Mon Sep 17 00:00:00 2001 From: mawen12 <1181963012mw@gmail.com> Date: Thu, 17 Oct 2024 18:21:09 +0800 Subject: [PATCH 1/6] add TransactionFactory, Transaction test cases --- .../transaction/TransactionFactoryTest.java | 42 ++++ .../ibatis/transaction/TransactionTest.java | 39 ++++ .../jdbc/JdbcTransactionFactoryUnitTest.java | 114 +++++++++++ .../JdbcTransactionWithConnectionTest.java | 120 +++++++++++ .../JdbcTransactionWithDataSourceTest.java | 191 ++++++++++++++++++ .../ManagedTransactionFactoryUnitTest.java | 95 +++++++++ .../ManagedTransactionWithConnectionTest.java | 95 +++++++++ .../ManagedTransactionWithDataSourceTest.java | 112 ++++++++++ 8 files changed, 808 insertions(+) create mode 100644 src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/TransactionTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java create mode 100644 src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java diff --git a/src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java b/src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java new file mode 100644 index 00000000000..2cd2ca04336 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.lang.reflect.Field; +import java.sql.SQLException; + +/** + * @author mawen12 + * @see TransactionFactory + */ +@ExtendWith(MockitoExtension.class) +public abstract class TransactionFactoryTest { + + public abstract void shouldSetProperties() throws Exception; + + public abstract void shouldNewTransactionWithConnection() throws SQLException; + + public abstract void shouldNewTransactionWithDataSource() throws Exception; + + public static Object getValue(Field field, Object object) throws Exception { + field.setAccessible(true); + return field.get(object); + } + +} diff --git a/src/test/java/org/apache/ibatis/transaction/TransactionTest.java b/src/test/java/org/apache/ibatis/transaction/TransactionTest.java new file mode 100644 index 00000000000..ed4185bc534 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/TransactionTest.java @@ -0,0 +1,39 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.sql.SQLException; + +/** + * @author mawen12 + * @see Transaction + */ +@ExtendWith(MockitoExtension.class) +public abstract class TransactionTest { + + public abstract void shouldGetConnection() throws SQLException; + + public abstract void shouldCommit() throws SQLException; + + public abstract void shouldRollback() throws SQLException; + + public abstract void shouldClose() throws SQLException; + + public abstract void shouldGetTimeout() throws SQLException; +} diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java new file mode 100644 index 00000000000..d42f594e933 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java @@ -0,0 +1,114 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.jdbc; + +import org.apache.ibatis.session.TransactionIsolationLevel; +import org.apache.ibatis.transaction.Transaction; +import org.apache.ibatis.transaction.TransactionFactory; +import org.apache.ibatis.transaction.TransactionFactoryTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * @author mawen12 + * @see JdbcTransactionFactory + */ +class JdbcTransactionFactoryUnitTest extends TransactionFactoryTest { + + @Mock + private Properties properties; + + @Mock + private Connection connection; + + @Mock + private DataSource dataSource; + + private TransactionFactory transactionFactory; + + @BeforeEach + void setup() { + this.transactionFactory = new JdbcTransactionFactory(); + } + + @Test + @Override + public void shouldSetProperties() throws Exception { + when(properties.getProperty("skipSetAutoCommitOnClose")).thenReturn("true"); + + transactionFactory.setProperties(properties); + + assertTrue((Boolean) getValue(transactionFactory.getClass().getDeclaredField("skipSetAutoCommitOnClose"), transactionFactory)); + } + + @Test + @Override + public void shouldNewTransactionWithConnection() throws SQLException { + Transaction result = transactionFactory.newTransaction(connection); + + assertNotNull(result); + assertInstanceOf(JdbcTransaction.class, result); + assertEquals(connection, result.getConnection()); + } + + @Test + @Override + public void shouldNewTransactionWithDataSource() throws Exception { + when(dataSource.getConnection()).thenReturn(connection); + + Transaction result = transactionFactory.newTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, false); + + assertNotNull(result); + assertInstanceOf(JdbcTransaction.class, result); + assertEquals(connection, result.getConnection()); + verify(connection).setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); + + assertEquals(dataSource, getValue(result.getClass().getDeclaredField("dataSource"), result)); + assertEquals(TransactionIsolationLevel.READ_COMMITTED, getValue(result.getClass().getDeclaredField("level"), result)); + assertEquals(false, getValue(result.getClass().getDeclaredField("autoCommit"), result)); + assertEquals(false, getValue(result.getClass().getDeclaredField("skipSetAutoCommitOnClose"), result)); + } + + @Test + void shouldNewTransactionWithDataSourceAndCustomProperties() throws Exception { + when(dataSource.getConnection()).thenReturn(connection); + when(properties.getProperty("skipSetAutoCommitOnClose")).thenReturn("true"); + + transactionFactory.setProperties(properties); + Transaction result = transactionFactory.newTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, true); + + assertNotNull(result); + assertInstanceOf(JdbcTransaction.class, result); + assertEquals(connection, result.getConnection()); + verify(connection).setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); + + assertEquals(dataSource, getValue(result.getClass().getDeclaredField("dataSource"), result)); + assertEquals(TransactionIsolationLevel.READ_COMMITTED, getValue(result.getClass().getDeclaredField("level"), result)); + assertEquals(true, getValue(result.getClass().getDeclaredField("autoCommit"), result)); + assertEquals(true, getValue(result.getClass().getDeclaredField("skipSetAutoCommitOnClose"), result)); + } + +} diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java new file mode 100644 index 00000000000..8cf19bf59e3 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java @@ -0,0 +1,120 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.jdbc; + +import org.apache.ibatis.transaction.Transaction; +import org.apache.ibatis.transaction.TransactionTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import java.sql.Connection; +import java.sql.SQLException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.Mockito.*; + +/** + * @author mawen12 + * @see JdbcTransaction + */ +class JdbcTransactionWithConnectionTest extends TransactionTest { + + @Mock + private Connection connection; + + private Transaction transaction; + + @BeforeEach + void setup() { + this.transaction = new JdbcTransaction(connection); + } + + @Test + @Override + public void shouldGetConnection() throws SQLException { + Connection result = transaction.getConnection(); + + assertEquals(connection, result); + } + + @Test + @Override + public void shouldCommit() throws SQLException { + when(connection.getAutoCommit()).thenReturn(false); + + transaction.commit(); + + verify(connection).commit(); + } + + @Test + void shouldAutoCommit() throws SQLException { + when(connection.getAutoCommit()).thenReturn(true); + + transaction.commit(); + + verify(connection, never()).commit(); + } + + @Test + @Override + public void shouldRollback() throws SQLException { + when(connection.getAutoCommit()).thenReturn(false); + + transaction.rollback(); + + verify(connection).rollback(); + } + + @Test + void shouldAutoRollback() throws SQLException { + when(connection.getAutoCommit()).thenReturn(true); + + transaction.rollback(); + + verify(connection, never()).rollback(); + } + + @Test + @Override + public void shouldClose() throws SQLException { + when(connection.getAutoCommit()).thenReturn(false); + + transaction.close(); + + verify(connection).close(); + verify(connection).setAutoCommit(true); + } + + @Test + void shouldCloseWithAutoCommit() throws SQLException { + when(connection.getAutoCommit()).thenReturn(true); + + transaction.close(); + + verify(connection).close(); + verify(connection, never()).setAutoCommit(true); + } + + @Test + @Override + public void shouldGetTimeout() throws SQLException { + assertNull(transaction.getTimeout()); + } + +} diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java new file mode 100644 index 00000000000..1a635ea72f1 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java @@ -0,0 +1,191 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.jdbc; + +import org.apache.ibatis.session.TransactionIsolationLevel; +import org.apache.ibatis.transaction.Transaction; +import org.apache.ibatis.transaction.TransactionTest; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.function.BooleanSupplier; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.Mockito.*; + +/** + * @author mawen12 + * @see JdbcTransaction + */ +class JdbcTransactionWithDataSourceTest extends TransactionTest { + + @Mock + private DataSource dataSource; + + @Mock + private Connection connection; + + @Mock + private BooleanSupplier desiredAutoCommit; + + @Mock + private BooleanSupplier skipSetAutoCommitClose; + + private Transaction transaction; + + @Test + @Override + public void shouldGetConnection() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(desiredAutoCommit.getAsBoolean()).thenReturn(true); + when(connection.getAutoCommit()).thenReturn(false); + + buildTransaction(); + Connection result = transaction.getConnection(); + + assertEquals(connection, result); + verify(dataSource).getConnection(); + verify(connection).setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); + verify(connection).setAutoCommit(true); + } + + @Test + void shouldGetConnectionWithNotAutoCommit() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(desiredAutoCommit.getAsBoolean()).thenReturn(false); + when(connection.getAutoCommit()).thenReturn(true); + + buildTransaction(); + Connection result = transaction.getConnection(); + + assertEquals(connection, result); + verify(dataSource).getConnection(); + verify(connection).setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); + verify(connection).setAutoCommit(false); + } + + @Test + @Override + public void shouldCommit() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(connection.getAutoCommit()).thenReturn(false); + + buildTransaction(); + transaction.getConnection(); + transaction.commit(); + + verify(connection).commit(); + } + + @Test + void shouldAutoCommit() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(connection.getAutoCommit()).thenReturn(true); + + buildTransaction(); + transaction.getConnection(); + transaction.commit(); + + verify(connection, never()).commit(); + } + + @Test + @Override + public void shouldRollback() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(connection.getAutoCommit()).thenReturn(false); + + buildTransaction(); + transaction.getConnection(); + transaction.rollback(); + + verify(connection).rollback(); + } + + @Test + void shouldAutoRollback() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(connection.getAutoCommit()).thenReturn(true); + + buildTransaction(); + transaction.getConnection(); + transaction.commit(); + + verify(connection, never()).rollback(); + } + + @Test + @Override + public void shouldClose() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(desiredAutoCommit.getAsBoolean()).thenReturn(false); + when(skipSetAutoCommitClose.getAsBoolean()).thenReturn(false); + + buildTransaction(); + transaction.getConnection(); + transaction.close(); + + verify(connection).close(); + verify(connection).setAutoCommit(true); + } + + @Test + void shouldNotSetAutoCommitWhenConnectionIsAutoCommit() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(desiredAutoCommit.getAsBoolean()).thenReturn(false); + when(skipSetAutoCommitClose.getAsBoolean()).thenReturn(false); + when(connection.getAutoCommit()).thenReturn(false); + + buildTransaction(); + transaction.getConnection(); + transaction.close(); + + verify(connection).close(); + verify(connection).setAutoCommit(true); + } + + @Test + void shouldNotSetAutoCommitWhenSkipSetAutoCommit() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + when(desiredAutoCommit.getAsBoolean()).thenReturn(false); + when(skipSetAutoCommitClose.getAsBoolean()).thenReturn(false); + when(connection.getAutoCommit()).thenReturn(true); + + buildTransaction(); + transaction.getConnection(); + transaction.close(); + + verify(connection).close(); + verify(connection, never()).setAutoCommit(true); + } + + @Test + @Override + public void shouldGetTimeout() throws SQLException { + buildTransaction(); + + assertNull(transaction.getTimeout()); + } + + private void buildTransaction() { + this.transaction = new JdbcTransaction(dataSource, TransactionIsolationLevel.REPEATABLE_READ, desiredAutoCommit.getAsBoolean(), skipSetAutoCommitClose.getAsBoolean()); + } + +} diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java new file mode 100644 index 00000000000..003d64bf269 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java @@ -0,0 +1,95 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.managed; + +import org.apache.ibatis.session.TransactionIsolationLevel; +import org.apache.ibatis.transaction.Transaction; +import org.apache.ibatis.transaction.TransactionFactory; +import org.apache.ibatis.transaction.TransactionFactoryTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * @author mawen12 + * @see ManagedTransactionFactory + */ +class ManagedTransactionFactoryUnitTest extends TransactionFactoryTest { + + @Mock + private Properties properties; + + @Mock + private Connection connection; + + @Mock + private DataSource dataSource; + + private TransactionFactory transactionFactory; + + @BeforeEach + void setup() { + this.transactionFactory = new ManagedTransactionFactory(); + } + + @Test + @Override + public void shouldSetProperties() throws Exception { + when(properties.getProperty("closeConnection")).thenReturn("false"); + + transactionFactory.setProperties(properties); + + assertFalse((Boolean) getValue(transactionFactory.getClass().getDeclaredField("closeConnection"), transactionFactory)); + } + + @Test + @Override + public void shouldNewTransactionWithConnection() throws SQLException { + Transaction result = transactionFactory.newTransaction(connection); + + assertNotNull(result); + assertInstanceOf(ManagedTransaction.class, result); + assertEquals(connection, result.getConnection()); + } + + @Test + @Override + public void shouldNewTransactionWithDataSource() throws Exception { + when(dataSource.getConnection()).thenReturn(connection); + when(properties.getProperty("closeConnection")).thenReturn("false"); + + transactionFactory.setProperties(properties); + Transaction result = transactionFactory.newTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, true); + + assertNotNull(result); + assertInstanceOf(ManagedTransaction.class, result); + assertEquals(connection, result.getConnection()); + verify(connection).setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); + + assertEquals(dataSource, getValue(result.getClass().getDeclaredField("dataSource"), result)); + assertEquals(TransactionIsolationLevel.READ_COMMITTED, getValue(result.getClass().getDeclaredField("level"), result)); + assertEquals(false, getValue(result.getClass().getDeclaredField("closeConnection"), result)); + } +} diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java new file mode 100644 index 00000000000..1b5dd298bbd --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java @@ -0,0 +1,95 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.managed; + +import org.apache.ibatis.transaction.Transaction; +import org.apache.ibatis.transaction.TransactionTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import java.sql.Connection; +import java.sql.SQLException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +/** + * @author mawen12 + * @see ManagedTransaction + */ +class ManagedTransactionWithConnectionTest extends TransactionTest { + + @Mock + private Connection connection; + + private Transaction transaction; + + @BeforeEach + void setup() { + this.transaction = new ManagedTransaction(connection, true); + } + + @Test + @Override + public void shouldGetConnection() throws SQLException { + Connection result = transaction.getConnection(); + + assertEquals(connection, result); + } + + @Test + @Override + public void shouldCommit() throws SQLException { + transaction.commit(); + + verify(connection, never()).commit(); + } + + @Test + @Override + public void shouldRollback() throws SQLException { + transaction.commit(); + + verify(connection, never()).rollback(); + } + + @Test + @Override + public void shouldClose() throws SQLException { + transaction.close(); + + verify(connection).close(); + } + + @Test + void shouldNotCloseWhenSetNonCloseConnection() throws SQLException { + this.transaction = new ManagedTransaction(connection, false); + + transaction.close(); + + verify(connection, never()).close(); + } + + @Test + @Override + public void shouldGetTimeout() throws SQLException { + assertNull(transaction.getTimeout()); + } + +} diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java new file mode 100644 index 00000000000..f4d51717fce --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java @@ -0,0 +1,112 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.managed; + +import org.apache.ibatis.session.TransactionIsolationLevel; +import org.apache.ibatis.transaction.Transaction; +import org.apache.ibatis.transaction.TransactionTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.Mockito.*; + +/** + * @author mawen12 + * @see ManagedTransaction + */ +class ManagedTransactionWithDataSourceTest extends TransactionTest { + + @Mock + private DataSource dataSource; + + @Mock + private Connection connection; + + private Transaction transaction; + + @BeforeEach + void setup() { + this.transaction = new ManagedTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, true); + } + + @Test + @Override + public void shouldGetConnection() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + + Connection result = transaction.getConnection(); + + assertEquals(connection, result); + verify(connection).setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); + } + + @Test + @Override + public void shouldCommit() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + + transaction.getConnection(); + transaction.commit(); + + verify(connection, never()).commit(); + } + + @Test + @Override + public void shouldRollback() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + + transaction.getConnection(); + transaction.rollback(); + + verify(connection, never()).rollback(); + } + + @Test + @Override + public void shouldClose() throws SQLException { + when(dataSource.getConnection()).thenReturn(connection); + + transaction.getConnection(); + transaction.close(); + + verify(connection).close(); + } + + @Test + void shouldNotCloseWhenSetNonCloseConnection() throws SQLException { + this.transaction = new ManagedTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, false); + when(dataSource.getConnection()).thenReturn(connection); + + transaction.getConnection(); + transaction.close(); + + verify(connection, never()).close(); + } + + @Test + @Override + public void shouldGetTimeout() throws SQLException { + assertNull(transaction.getTimeout()); + } +} \ No newline at end of file From 90008efec59167e5cb27d8feff08d3bfcee23a8f Mon Sep 17 00:00:00 2001 From: mawen12 <1181963012mw@gmail.com> Date: Fri, 18 Oct 2024 09:30:17 +0800 Subject: [PATCH 2/6] rename base test class --- ...actionFactoryTest.java => BaseTransactionFactoryTest.java} | 2 +- .../{TransactionTest.java => BaseTransactionTest.java} | 2 +- .../transaction/jdbc/JdbcTransactionFactoryUnitTest.java | 4 ++-- .../transaction/jdbc/JdbcTransactionWithConnectionTest.java | 4 ++-- .../transaction/jdbc/JdbcTransactionWithDataSourceTest.java | 4 ++-- .../managed/ManagedTransactionFactoryUnitTest.java | 4 ++-- .../managed/ManagedTransactionWithConnectionTest.java | 4 ++-- .../managed/ManagedTransactionWithDataSourceTest.java | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) rename src/test/java/org/apache/ibatis/transaction/{TransactionFactoryTest.java => BaseTransactionFactoryTest.java} (96%) rename src/test/java/org/apache/ibatis/transaction/{TransactionTest.java => BaseTransactionTest.java} (96%) diff --git a/src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java b/src/test/java/org/apache/ibatis/transaction/BaseTransactionFactoryTest.java similarity index 96% rename from src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java rename to src/test/java/org/apache/ibatis/transaction/BaseTransactionFactoryTest.java index 2cd2ca04336..77386276224 100644 --- a/src/test/java/org/apache/ibatis/transaction/TransactionFactoryTest.java +++ b/src/test/java/org/apache/ibatis/transaction/BaseTransactionFactoryTest.java @@ -26,7 +26,7 @@ * @see TransactionFactory */ @ExtendWith(MockitoExtension.class) -public abstract class TransactionFactoryTest { +public abstract class BaseTransactionFactoryTest { public abstract void shouldSetProperties() throws Exception; diff --git a/src/test/java/org/apache/ibatis/transaction/TransactionTest.java b/src/test/java/org/apache/ibatis/transaction/BaseTransactionTest.java similarity index 96% rename from src/test/java/org/apache/ibatis/transaction/TransactionTest.java rename to src/test/java/org/apache/ibatis/transaction/BaseTransactionTest.java index ed4185bc534..7a5c5d11a53 100644 --- a/src/test/java/org/apache/ibatis/transaction/TransactionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/BaseTransactionTest.java @@ -25,7 +25,7 @@ * @see Transaction */ @ExtendWith(MockitoExtension.class) -public abstract class TransactionTest { +public abstract class BaseTransactionTest { public abstract void shouldGetConnection() throws SQLException; diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java index d42f594e933..0c42ec8e61c 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java @@ -18,7 +18,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; import org.apache.ibatis.transaction.TransactionFactory; -import org.apache.ibatis.transaction.TransactionFactoryTest; +import org.apache.ibatis.transaction.BaseTransactionFactoryTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -36,7 +36,7 @@ * @author mawen12 * @see JdbcTransactionFactory */ -class JdbcTransactionFactoryUnitTest extends TransactionFactoryTest { +class JdbcTransactionFactoryUnitTest extends BaseTransactionFactoryTest { @Mock private Properties properties; diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java index 8cf19bf59e3..b98af638f6d 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java @@ -16,7 +16,7 @@ package org.apache.ibatis.transaction.jdbc; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionTest; +import org.apache.ibatis.transaction.BaseTransactionTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -32,7 +32,7 @@ * @author mawen12 * @see JdbcTransaction */ -class JdbcTransactionWithConnectionTest extends TransactionTest { +class JdbcTransactionWithConnectionTest extends BaseTransactionTest { @Mock private Connection connection; diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java index 1a635ea72f1..ec772ee69ef 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java @@ -17,7 +17,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionTest; +import org.apache.ibatis.transaction.BaseTransactionTest; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -34,7 +34,7 @@ * @author mawen12 * @see JdbcTransaction */ -class JdbcTransactionWithDataSourceTest extends TransactionTest { +class JdbcTransactionWithDataSourceTest extends BaseTransactionTest { @Mock private DataSource dataSource; diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java index 003d64bf269..87315bbbf2c 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java @@ -18,7 +18,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; import org.apache.ibatis.transaction.TransactionFactory; -import org.apache.ibatis.transaction.TransactionFactoryTest; +import org.apache.ibatis.transaction.BaseTransactionFactoryTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -36,7 +36,7 @@ * @author mawen12 * @see ManagedTransactionFactory */ -class ManagedTransactionFactoryUnitTest extends TransactionFactoryTest { +class ManagedTransactionFactoryUnitTest extends BaseTransactionFactoryTest { @Mock private Properties properties; diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java index 1b5dd298bbd..1a67ada7e47 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java @@ -16,7 +16,7 @@ package org.apache.ibatis.transaction.managed; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionTest; +import org.apache.ibatis.transaction.BaseTransactionTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -33,7 +33,7 @@ * @author mawen12 * @see ManagedTransaction */ -class ManagedTransactionWithConnectionTest extends TransactionTest { +class ManagedTransactionWithConnectionTest extends BaseTransactionTest { @Mock private Connection connection; diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java index f4d51717fce..7ea99cea4c0 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java @@ -17,7 +17,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionTest; +import org.apache.ibatis.transaction.BaseTransactionTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -34,7 +34,7 @@ * @author mawen12 * @see ManagedTransaction */ -class ManagedTransactionWithDataSourceTest extends TransactionTest { +class ManagedTransactionWithDataSourceTest extends BaseTransactionTest { @Mock private DataSource dataSource; From 6754444c9b8aaa1610f05513eb4676e4cebc1fbc Mon Sep 17 00:00:00 2001 From: mawen12 <1181963012mw@gmail.com> Date: Fri, 18 Oct 2024 09:50:33 +0800 Subject: [PATCH 3/6] remove test suffix from base test class --- .../{BaseTransactionTest.java => TransactionBase.java} | 2 +- ...ransactionFactoryTest.java => TransactionFactoryBase.java} | 2 +- .../transaction/jdbc/JdbcTransactionFactoryUnitTest.java | 4 ++-- .../transaction/jdbc/JdbcTransactionWithConnectionTest.java | 4 ++-- .../transaction/jdbc/JdbcTransactionWithDataSourceTest.java | 4 ++-- .../managed/ManagedTransactionFactoryUnitTest.java | 4 ++-- .../managed/ManagedTransactionWithConnectionTest.java | 4 ++-- .../managed/ManagedTransactionWithDataSourceTest.java | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) rename src/test/java/org/apache/ibatis/transaction/{BaseTransactionTest.java => TransactionBase.java} (96%) rename src/test/java/org/apache/ibatis/transaction/{BaseTransactionFactoryTest.java => TransactionFactoryBase.java} (96%) diff --git a/src/test/java/org/apache/ibatis/transaction/BaseTransactionTest.java b/src/test/java/org/apache/ibatis/transaction/TransactionBase.java similarity index 96% rename from src/test/java/org/apache/ibatis/transaction/BaseTransactionTest.java rename to src/test/java/org/apache/ibatis/transaction/TransactionBase.java index 7a5c5d11a53..2ec56c80f83 100644 --- a/src/test/java/org/apache/ibatis/transaction/BaseTransactionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/TransactionBase.java @@ -25,7 +25,7 @@ * @see Transaction */ @ExtendWith(MockitoExtension.class) -public abstract class BaseTransactionTest { +public abstract class TransactionBase { public abstract void shouldGetConnection() throws SQLException; diff --git a/src/test/java/org/apache/ibatis/transaction/BaseTransactionFactoryTest.java b/src/test/java/org/apache/ibatis/transaction/TransactionFactoryBase.java similarity index 96% rename from src/test/java/org/apache/ibatis/transaction/BaseTransactionFactoryTest.java rename to src/test/java/org/apache/ibatis/transaction/TransactionFactoryBase.java index 77386276224..eb66bfcd5da 100644 --- a/src/test/java/org/apache/ibatis/transaction/BaseTransactionFactoryTest.java +++ b/src/test/java/org/apache/ibatis/transaction/TransactionFactoryBase.java @@ -26,7 +26,7 @@ * @see TransactionFactory */ @ExtendWith(MockitoExtension.class) -public abstract class BaseTransactionFactoryTest { +public abstract class TransactionFactoryBase { public abstract void shouldSetProperties() throws Exception; diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java index 0c42ec8e61c..174416ab7d6 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionFactoryUnitTest.java @@ -18,7 +18,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; import org.apache.ibatis.transaction.TransactionFactory; -import org.apache.ibatis.transaction.BaseTransactionFactoryTest; +import org.apache.ibatis.transaction.TransactionFactoryBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -36,7 +36,7 @@ * @author mawen12 * @see JdbcTransactionFactory */ -class JdbcTransactionFactoryUnitTest extends BaseTransactionFactoryTest { +class JdbcTransactionFactoryUnitTest extends TransactionFactoryBase { @Mock private Properties properties; diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java index b98af638f6d..51009d2f568 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java @@ -16,7 +16,7 @@ package org.apache.ibatis.transaction.jdbc; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.BaseTransactionTest; +import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -32,7 +32,7 @@ * @author mawen12 * @see JdbcTransaction */ -class JdbcTransactionWithConnectionTest extends BaseTransactionTest { +class JdbcTransactionWithConnectionTest extends TransactionBase { @Mock private Connection connection; diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java index ec772ee69ef..ad328c1ab66 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java @@ -17,7 +17,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.BaseTransactionTest; +import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -34,7 +34,7 @@ * @author mawen12 * @see JdbcTransaction */ -class JdbcTransactionWithDataSourceTest extends BaseTransactionTest { +class JdbcTransactionWithDataSourceTest extends TransactionBase { @Mock private DataSource dataSource; diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java index 87315bbbf2c..f264c643199 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactoryUnitTest.java @@ -18,7 +18,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; import org.apache.ibatis.transaction.TransactionFactory; -import org.apache.ibatis.transaction.BaseTransactionFactoryTest; +import org.apache.ibatis.transaction.TransactionFactoryBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -36,7 +36,7 @@ * @author mawen12 * @see ManagedTransactionFactory */ -class ManagedTransactionFactoryUnitTest extends BaseTransactionFactoryTest { +class ManagedTransactionFactoryUnitTest extends TransactionFactoryBase { @Mock private Properties properties; diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java index 1a67ada7e47..ca5473be6bd 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java @@ -16,7 +16,7 @@ package org.apache.ibatis.transaction.managed; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.BaseTransactionTest; +import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -33,7 +33,7 @@ * @author mawen12 * @see ManagedTransaction */ -class ManagedTransactionWithConnectionTest extends BaseTransactionTest { +class ManagedTransactionWithConnectionTest extends TransactionBase { @Mock private Connection connection; diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java index 7ea99cea4c0..7c650ba52d8 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java @@ -17,7 +17,7 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.BaseTransactionTest; +import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -34,7 +34,7 @@ * @author mawen12 * @see ManagedTransaction */ -class ManagedTransactionWithDataSourceTest extends BaseTransactionTest { +class ManagedTransactionWithDataSourceTest extends TransactionBase { @Mock private DataSource dataSource; From 201d6a57f1af6f9c3d66db5d989f06db4ad376a8 Mon Sep 17 00:00:00 2001 From: mawen12 <1181963012mw@gmail.com> Date: Fri, 18 Oct 2024 10:15:04 +0800 Subject: [PATCH 4/6] rename SqlNode, ObjectWrapper test class name --- .../apache/ibatis/reflection/wrapper/BeanWrapperUnitTest.java | 3 +-- .../ibatis/reflection/wrapper/CollectionWrapperUnitTest.java | 2 +- .../apache/ibatis/reflection/wrapper/MapWrapperUnitTest.java | 2 +- .../{ObjectWrapperBaseTest.java => ObjectWrapperBase.java} | 2 +- .../org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java | 2 +- .../apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java | 2 +- .../org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java | 2 +- .../org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java | 2 +- .../org/apache/ibatis/scripting/xmltags/SetSqlNodeTest.java | 2 +- .../scripting/xmltags/{SqlNodeTest.java => SqlNodeBase.java} | 3 ++- .../apache/ibatis/scripting/xmltags/StaticTextSqlNodeTest.java | 2 +- .../org/apache/ibatis/scripting/xmltags/TextSqlNodeTest.java | 2 +- .../org/apache/ibatis/scripting/xmltags/TrimSqlNodeTest.java | 2 +- .../apache/ibatis/scripting/xmltags/VarDeclSqlNodeTest.java | 2 +- .../org/apache/ibatis/scripting/xmltags/WhereSqlNodeTest.java | 2 +- 15 files changed, 16 insertions(+), 16 deletions(-) rename src/test/java/org/apache/ibatis/reflection/wrapper/{ObjectWrapperBaseTest.java => ObjectWrapperBase.java} (97%) rename src/test/java/org/apache/ibatis/scripting/xmltags/{SqlNodeTest.java => SqlNodeBase.java} (96%) diff --git a/src/test/java/org/apache/ibatis/reflection/wrapper/BeanWrapperUnitTest.java b/src/test/java/org/apache/ibatis/reflection/wrapper/BeanWrapperUnitTest.java index 79023a15236..eba68c91feb 100644 --- a/src/test/java/org/apache/ibatis/reflection/wrapper/BeanWrapperUnitTest.java +++ b/src/test/java/org/apache/ibatis/reflection/wrapper/BeanWrapperUnitTest.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; -import org.apache.ibatis.domain.blog.Author; import org.apache.ibatis.domain.misc.RichType; import org.apache.ibatis.reflection.SystemMetaObject; import org.apache.ibatis.reflection.property.PropertyTokenizer; @@ -35,7 +34,7 @@ * @author mawen12 * @see BeanWrapper */ -class BeanWrapperUnitTest extends ObjectWrapperBaseTest { +class BeanWrapperUnitTest extends ObjectWrapperBase { private RichType richType; diff --git a/src/test/java/org/apache/ibatis/reflection/wrapper/CollectionWrapperUnitTest.java b/src/test/java/org/apache/ibatis/reflection/wrapper/CollectionWrapperUnitTest.java index 24db547ed23..06ccf16952e 100644 --- a/src/test/java/org/apache/ibatis/reflection/wrapper/CollectionWrapperUnitTest.java +++ b/src/test/java/org/apache/ibatis/reflection/wrapper/CollectionWrapperUnitTest.java @@ -37,7 +37,7 @@ * @see CollectionWrapper */ @ExtendWith(MockitoExtension.class) -class CollectionWrapperUnitTest extends ObjectWrapperBaseTest { +class CollectionWrapperUnitTest extends ObjectWrapperBase { @Mock private Collection collection; diff --git a/src/test/java/org/apache/ibatis/reflection/wrapper/MapWrapperUnitTest.java b/src/test/java/org/apache/ibatis/reflection/wrapper/MapWrapperUnitTest.java index e36dd091941..5e88c18c121 100644 --- a/src/test/java/org/apache/ibatis/reflection/wrapper/MapWrapperUnitTest.java +++ b/src/test/java/org/apache/ibatis/reflection/wrapper/MapWrapperUnitTest.java @@ -38,7 +38,7 @@ * @author mawen12 * @see MapWrapper */ -class MapWrapperUnitTest extends ObjectWrapperBaseTest { +class MapWrapperUnitTest extends ObjectWrapperBase { @Mock private Map map; diff --git a/src/test/java/org/apache/ibatis/reflection/wrapper/ObjectWrapperBaseTest.java b/src/test/java/org/apache/ibatis/reflection/wrapper/ObjectWrapperBase.java similarity index 97% rename from src/test/java/org/apache/ibatis/reflection/wrapper/ObjectWrapperBaseTest.java rename to src/test/java/org/apache/ibatis/reflection/wrapper/ObjectWrapperBase.java index 438c1c22e8b..d7a975ea632 100644 --- a/src/test/java/org/apache/ibatis/reflection/wrapper/ObjectWrapperBaseTest.java +++ b/src/test/java/org/apache/ibatis/reflection/wrapper/ObjectWrapperBase.java @@ -23,7 +23,7 @@ * @see ObjectWrapper */ @ExtendWith(MockitoExtension.class) -abstract class ObjectWrapperBaseTest { +abstract class ObjectWrapperBase { abstract void shouldGet(); diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java index 6d3992d823a..8c52f75b2be 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java @@ -47,7 +47,7 @@ * @author mawen12 * @see choose */ -class ChooseSqlNodeTest extends SqlNodeTest{ +class ChooseSqlNodeTest extends SqlNodeBase { private static final String FIRST_TEXT = " AND title like #{title}"; private static final String SECOND_TEXT = " AND author_name like #{author.username}"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java index ab61d2e50d0..797c57f4d9b 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java @@ -40,7 +40,7 @@ * @author mawen12 * @see foreach */ -class ForEachSqlNodeTest extends SqlNodeTest{ +class ForEachSqlNodeTest extends SqlNodeBase { private SqlNode sqlNode; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java index 4e7760f667c..b00640cfa2c 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java @@ -33,7 +33,7 @@ * @author mawen12 * @see if */ -class IfSqlNodeTest extends SqlNodeTest { +class IfSqlNodeTest extends SqlNodeBase { private static final String CONDITION = "title != null"; private static final String TEXT = "AND title like #{title}"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java index 0c5579d823f..1d6fdc599c6 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java @@ -25,7 +25,7 @@ /** * @author mawen12 */ -class MixedSqlNodeTest extends SqlNodeTest{ +class MixedSqlNodeTest extends SqlNodeBase { private static final String FIRST_TEXT = "abc"; private static final String SECOND_TEXT = "bcd"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/SetSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/SetSqlNodeTest.java index 0249804d242..8834d349d94 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/SetSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/SetSqlNodeTest.java @@ -41,7 +41,7 @@ * @author mawen12 * @see trim-where-set */ -class SetSqlNodeTest extends SqlNodeTest { +class SetSqlNodeTest extends SqlNodeBase { private static final String FIRST_TEXT = " username = #{username},"; private static final String SECOND_TEXT = " password = #{password}"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/SqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/SqlNodeBase.java similarity index 96% rename from src/test/java/org/apache/ibatis/scripting/xmltags/SqlNodeTest.java rename to src/test/java/org/apache/ibatis/scripting/xmltags/SqlNodeBase.java index 8d3355209fc..e1da6ed152c 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/SqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/SqlNodeBase.java @@ -22,9 +22,10 @@ /** * @author mawen12 + * @see SqlNode */ @ExtendWith(MockitoExtension.class) -abstract class SqlNodeTest { +abstract class SqlNodeBase { @Mock protected Configuration configuration; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/StaticTextSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/StaticTextSqlNodeTest.java index e94ae5ec0b9..fa2146d5fc2 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/StaticTextSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/StaticTextSqlNodeTest.java @@ -23,7 +23,7 @@ /** * @author mawen12 */ -class StaticTextSqlNodeTest extends SqlNodeTest { +class StaticTextSqlNodeTest extends SqlNodeBase { private static final String TEXT = "select 1 from dual"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/TextSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/TextSqlNodeTest.java index e88e0dd68b2..8ab52531490 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/TextSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/TextSqlNodeTest.java @@ -25,7 +25,7 @@ /** * @author mawen12 */ -class TextSqlNodeTest extends SqlNodeTest { +class TextSqlNodeTest extends SqlNodeBase { private static final String TEXT = "select 1 from dual"; private static final String DYNAMIC_TEXT = "select * from user where id = ${id}"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/TrimSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/TrimSqlNodeTest.java index e3e2d72b438..50b116f00d1 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/TrimSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/TrimSqlNodeTest.java @@ -41,7 +41,7 @@ * @author mawen12 * @see trim-where-set */ -class TrimSqlNodeTest extends SqlNodeTest { +class TrimSqlNodeTest extends SqlNodeBase { private static final String FIRST_TEXT = " AND id = #{id}"; private static final String SECOND_TEXT = " AND name = #{name}"; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/VarDeclSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/VarDeclSqlNodeTest.java index 457fb41c0ee..46819507ab0 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/VarDeclSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/VarDeclSqlNodeTest.java @@ -33,7 +33,7 @@ * @author mawen12 * @see bind */ -class VarDeclSqlNodeTest extends SqlNodeTest { +class VarDeclSqlNodeTest extends SqlNodeBase { private SqlNode sqlNode; diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/WhereSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/WhereSqlNodeTest.java index 80f81af4ade..a49d221ab4c 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/WhereSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/WhereSqlNodeTest.java @@ -41,7 +41,7 @@ * @author mawen12 * @see trim-where-set */ -class WhereSqlNodeTest extends SqlNodeTest { +class WhereSqlNodeTest extends SqlNodeBase { private static final String FIRST_TEXT = " AND id = #{id}"; private static final String SECOND_TEXT = " AND name = #{name}"; From 067b46aba70bc1db3f88db9b3ce520ab19fde7f1 Mon Sep 17 00:00:00 2001 From: mawen12 <1181963012mw@gmail.com> Date: Mon, 21 Oct 2024 11:01:57 +0800 Subject: [PATCH 5/6] refactor JdbcTransaction and ManagedTransaction test case --- .../transaction/jdbc/JdbcTransactionBase.java | 45 +++++++++++++++++++ .../JdbcTransactionWithConnectionTest.java | 28 +++++++----- .../JdbcTransactionWithDataSourceTest.java | 38 +++++----------- .../ManagedTransactionBase.java} | 20 +++++---- .../ManagedTransactionWithConnectionTest.java | 22 ++++----- .../ManagedTransactionWithDataSourceTest.java | 21 ++++----- 6 files changed, 108 insertions(+), 66 deletions(-) create mode 100644 src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionBase.java rename src/test/java/org/apache/ibatis/transaction/{TransactionBase.java => managed/ManagedTransactionBase.java} (60%) diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionBase.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionBase.java new file mode 100644 index 00000000000..0c5ab632528 --- /dev/null +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionBase.java @@ -0,0 +1,45 @@ +/* + * Copyright 2009-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.transaction.jdbc; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.sql.SQLException; + +/** + * @author mawen12 + * @see JdbcTransaction + */ +@ExtendWith(MockitoExtension.class) +abstract class JdbcTransactionBase { + + abstract void shouldGetConnection() throws SQLException; + + abstract void shouldCommitWhenConnectionIsNotAutoCommit() throws SQLException; + + abstract void shouldAutoCommitWhenConnectionIsAutoCommit() throws SQLException; + + abstract void shouldRollbackWhenConnectionIsNotAutoCommit() throws SQLException; + + abstract void shouldAutoRollbackWhenConnectionIsAutoCommit() throws SQLException; + + abstract void shouldCloseAndSetAutoCommitWhenConnectionIsNotAutoCommit() throws SQLException; + + abstract void shouldCloseAndNotSetAutoCommitWhenConnectionIsAutoCommit() throws SQLException; + + abstract void shouldReturnNullWhenGetTimeout() throws SQLException; +} diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java index 51009d2f568..3b5b621a13d 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithConnectionTest.java @@ -16,7 +16,6 @@ package org.apache.ibatis.transaction.jdbc; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -32,7 +31,7 @@ * @author mawen12 * @see JdbcTransaction */ -class JdbcTransactionWithConnectionTest extends TransactionBase { +class JdbcTransactionWithConnectionTest extends JdbcTransactionBase { @Mock private Connection connection; @@ -46,7 +45,7 @@ void setup() { @Test @Override - public void shouldGetConnection() throws SQLException { + void shouldGetConnection() throws SQLException { Connection result = transaction.getConnection(); assertEquals(connection, result); @@ -54,66 +53,75 @@ public void shouldGetConnection() throws SQLException { @Test @Override - public void shouldCommit() throws SQLException { + void shouldCommitWhenConnectionIsNotAutoCommit() throws SQLException { when(connection.getAutoCommit()).thenReturn(false); transaction.commit(); verify(connection).commit(); + verify(connection).getAutoCommit(); } @Test - void shouldAutoCommit() throws SQLException { + @Override + void shouldAutoCommitWhenConnectionIsAutoCommit() throws SQLException { when(connection.getAutoCommit()).thenReturn(true); transaction.commit(); verify(connection, never()).commit(); + verify(connection).getAutoCommit(); } @Test @Override - public void shouldRollback() throws SQLException { + void shouldRollbackWhenConnectionIsNotAutoCommit() throws SQLException { when(connection.getAutoCommit()).thenReturn(false); transaction.rollback(); verify(connection).rollback(); + verify(connection).getAutoCommit(); } @Test - void shouldAutoRollback() throws SQLException { + @Override + void shouldAutoRollbackWhenConnectionIsAutoCommit() throws SQLException { when(connection.getAutoCommit()).thenReturn(true); transaction.rollback(); verify(connection, never()).rollback(); + verify(connection).getAutoCommit(); } @Test @Override - public void shouldClose() throws SQLException { + void shouldCloseAndSetAutoCommitWhenConnectionIsNotAutoCommit() throws SQLException { when(connection.getAutoCommit()).thenReturn(false); transaction.close(); verify(connection).close(); verify(connection).setAutoCommit(true); + verify(connection).getAutoCommit(); } @Test - void shouldCloseWithAutoCommit() throws SQLException { + @Override + void shouldCloseAndNotSetAutoCommitWhenConnectionIsAutoCommit() throws SQLException { when(connection.getAutoCommit()).thenReturn(true); transaction.close(); verify(connection).close(); verify(connection, never()).setAutoCommit(true); + verify(connection).getAutoCommit(); } @Test @Override - public void shouldGetTimeout() throws SQLException { + void shouldReturnNullWhenGetTimeout() throws SQLException { assertNull(transaction.getTimeout()); } diff --git a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java index ad328c1ab66..d7a247348ca 100644 --- a/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java +++ b/src/test/java/org/apache/ibatis/transaction/jdbc/JdbcTransactionWithDataSourceTest.java @@ -17,7 +17,6 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -34,7 +33,7 @@ * @author mawen12 * @see JdbcTransaction */ -class JdbcTransactionWithDataSourceTest extends TransactionBase { +class JdbcTransactionWithDataSourceTest extends JdbcTransactionBase { @Mock private DataSource dataSource; @@ -52,7 +51,7 @@ class JdbcTransactionWithDataSourceTest extends TransactionBase { @Test @Override - public void shouldGetConnection() throws SQLException { + void shouldGetConnection() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(desiredAutoCommit.getAsBoolean()).thenReturn(true); when(connection.getAutoCommit()).thenReturn(false); @@ -83,7 +82,7 @@ void shouldGetConnectionWithNotAutoCommit() throws SQLException { @Test @Override - public void shouldCommit() throws SQLException { + void shouldCommitWhenConnectionIsNotAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(connection.getAutoCommit()).thenReturn(false); @@ -95,7 +94,8 @@ public void shouldCommit() throws SQLException { } @Test - void shouldAutoCommit() throws SQLException { + @Override + void shouldAutoCommitWhenConnectionIsAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(connection.getAutoCommit()).thenReturn(true); @@ -108,7 +108,7 @@ void shouldAutoCommit() throws SQLException { @Test @Override - public void shouldRollback() throws SQLException { + void shouldRollbackWhenConnectionIsNotAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(connection.getAutoCommit()).thenReturn(false); @@ -120,7 +120,8 @@ public void shouldRollback() throws SQLException { } @Test - void shouldAutoRollback() throws SQLException { + @Override + void shouldAutoRollbackWhenConnectionIsAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(connection.getAutoCommit()).thenReturn(true); @@ -133,25 +134,10 @@ void shouldAutoRollback() throws SQLException { @Test @Override - public void shouldClose() throws SQLException { - when(dataSource.getConnection()).thenReturn(connection); - when(desiredAutoCommit.getAsBoolean()).thenReturn(false); - when(skipSetAutoCommitClose.getAsBoolean()).thenReturn(false); - - buildTransaction(); - transaction.getConnection(); - transaction.close(); - - verify(connection).close(); - verify(connection).setAutoCommit(true); - } - - @Test - void shouldNotSetAutoCommitWhenConnectionIsAutoCommit() throws SQLException { + void shouldCloseAndSetAutoCommitWhenConnectionIsNotAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(desiredAutoCommit.getAsBoolean()).thenReturn(false); when(skipSetAutoCommitClose.getAsBoolean()).thenReturn(false); - when(connection.getAutoCommit()).thenReturn(false); buildTransaction(); transaction.getConnection(); @@ -162,7 +148,8 @@ void shouldNotSetAutoCommitWhenConnectionIsAutoCommit() throws SQLException { } @Test - void shouldNotSetAutoCommitWhenSkipSetAutoCommit() throws SQLException { + @Override + void shouldCloseAndNotSetAutoCommitWhenConnectionIsAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); when(desiredAutoCommit.getAsBoolean()).thenReturn(false); when(skipSetAutoCommitClose.getAsBoolean()).thenReturn(false); @@ -178,7 +165,7 @@ void shouldNotSetAutoCommitWhenSkipSetAutoCommit() throws SQLException { @Test @Override - public void shouldGetTimeout() throws SQLException { + void shouldReturnNullWhenGetTimeout() throws SQLException { buildTransaction(); assertNull(transaction.getTimeout()); @@ -187,5 +174,4 @@ public void shouldGetTimeout() throws SQLException { private void buildTransaction() { this.transaction = new JdbcTransaction(dataSource, TransactionIsolationLevel.REPEATABLE_READ, desiredAutoCommit.getAsBoolean(), skipSetAutoCommitClose.getAsBoolean()); } - } diff --git a/src/test/java/org/apache/ibatis/transaction/TransactionBase.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionBase.java similarity index 60% rename from src/test/java/org/apache/ibatis/transaction/TransactionBase.java rename to src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionBase.java index 2ec56c80f83..75b9f544530 100644 --- a/src/test/java/org/apache/ibatis/transaction/TransactionBase.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ibatis.transaction; +package org.apache.ibatis.transaction.managed; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; @@ -22,18 +22,20 @@ /** * @author mawen12 - * @see Transaction + * @see ManagedTransaction */ @ExtendWith(MockitoExtension.class) -public abstract class TransactionBase { +abstract class ManagedTransactionBase { - public abstract void shouldGetConnection() throws SQLException; + abstract void shouldGetConnection() throws SQLException; - public abstract void shouldCommit() throws SQLException; + abstract void shouldNotCommitWhetherConnectionIsAutoCommit() throws SQLException; - public abstract void shouldRollback() throws SQLException; + abstract void shouldNotRollbackWhetherConnectionIsAutoCommit() throws SQLException; - public abstract void shouldClose() throws SQLException; + abstract void shouldCloseWhenSetCloseConnectionIsTrue() throws SQLException; - public abstract void shouldGetTimeout() throws SQLException; -} + abstract void shouldNotCloseWhenSetCloseConnectionIsFalse() throws SQLException; + + abstract void shouldReturnNullWhenGetTimeout() throws SQLException; +} \ No newline at end of file diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java index ca5473be6bd..e19f7a2b702 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithConnectionTest.java @@ -16,7 +16,6 @@ package org.apache.ibatis.transaction.managed; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -26,14 +25,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.*; /** * @author mawen12 * @see ManagedTransaction */ -class ManagedTransactionWithConnectionTest extends TransactionBase { +class ManagedTransactionWithConnectionTest extends ManagedTransactionBase { @Mock private Connection connection; @@ -46,8 +44,7 @@ void setup() { } @Test - @Override - public void shouldGetConnection() throws SQLException { + void shouldGetConnection() throws SQLException { Connection result = transaction.getConnection(); assertEquals(connection, result); @@ -55,30 +52,33 @@ public void shouldGetConnection() throws SQLException { @Test @Override - public void shouldCommit() throws SQLException { + void shouldNotCommitWhetherConnectionIsAutoCommit() throws SQLException { transaction.commit(); verify(connection, never()).commit(); + verify(connection, never()).getAutoCommit(); } @Test @Override - public void shouldRollback() throws SQLException { + void shouldNotRollbackWhetherConnectionIsAutoCommit() throws SQLException { transaction.commit(); verify(connection, never()).rollback(); + verify(connection, never()).getAutoCommit(); } @Test @Override - public void shouldClose() throws SQLException { + void shouldCloseWhenSetCloseConnectionIsTrue() throws SQLException { transaction.close(); verify(connection).close(); } @Test - void shouldNotCloseWhenSetNonCloseConnection() throws SQLException { + @Override + void shouldNotCloseWhenSetCloseConnectionIsFalse() throws SQLException { this.transaction = new ManagedTransaction(connection, false); transaction.close(); @@ -88,7 +88,7 @@ void shouldNotCloseWhenSetNonCloseConnection() throws SQLException { @Test @Override - public void shouldGetTimeout() throws SQLException { + void shouldReturnNullWhenGetTimeout() throws SQLException { assertNull(transaction.getTimeout()); } diff --git a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java index 7c650ba52d8..68df6cc7aa7 100644 --- a/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java +++ b/src/test/java/org/apache/ibatis/transaction/managed/ManagedTransactionWithDataSourceTest.java @@ -17,7 +17,6 @@ import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.transaction.Transaction; -import org.apache.ibatis.transaction.TransactionBase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -34,7 +33,7 @@ * @author mawen12 * @see ManagedTransaction */ -class ManagedTransactionWithDataSourceTest extends TransactionBase { +class ManagedTransactionWithDataSourceTest extends ManagedTransactionBase { @Mock private DataSource dataSource; @@ -50,8 +49,7 @@ void setup() { } @Test - @Override - public void shouldGetConnection() throws SQLException { + void shouldGetConnection() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); Connection result = transaction.getConnection(); @@ -62,29 +60,31 @@ public void shouldGetConnection() throws SQLException { @Test @Override - public void shouldCommit() throws SQLException { + void shouldNotCommitWhetherConnectionIsAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); transaction.getConnection(); transaction.commit(); verify(connection, never()).commit(); + verify(connection, never()).getAutoCommit(); } @Test @Override - public void shouldRollback() throws SQLException { + void shouldNotRollbackWhetherConnectionIsAutoCommit() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); transaction.getConnection(); transaction.rollback(); verify(connection, never()).rollback(); + verify(connection, never()).getAutoCommit(); } @Test @Override - public void shouldClose() throws SQLException { + void shouldCloseWhenSetCloseConnectionIsTrue() throws SQLException { when(dataSource.getConnection()).thenReturn(connection); transaction.getConnection(); @@ -94,8 +94,9 @@ public void shouldClose() throws SQLException { } @Test - void shouldNotCloseWhenSetNonCloseConnection() throws SQLException { - this.transaction = new ManagedTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, false); + @Override + void shouldNotCloseWhenSetCloseConnectionIsFalse() throws SQLException { + transaction = new ManagedTransaction(dataSource, TransactionIsolationLevel.READ_COMMITTED, false); when(dataSource.getConnection()).thenReturn(connection); transaction.getConnection(); @@ -106,7 +107,7 @@ void shouldNotCloseWhenSetNonCloseConnection() throws SQLException { @Test @Override - public void shouldGetTimeout() throws SQLException { + void shouldReturnNullWhenGetTimeout() throws SQLException { assertNull(transaction.getTimeout()); } } \ No newline at end of file From dcca250e0bc8979b6d0d2451e1770c765f813689 Mon Sep 17 00:00:00 2001 From: mawen12 <1181963012mw@gmail.com> Date: Sat, 28 Dec 2024 12:08:58 +0800 Subject: [PATCH 6/6] replace wildcard imports with concrete imports --- .../ibatis/scripting/xmltags/ChooseSqlNodeTest.java | 6 ++++-- .../ibatis/scripting/xmltags/ForEachSqlNodeTest.java | 8 ++++++-- .../apache/ibatis/scripting/xmltags/IfSqlNodeTest.java | 4 +++- .../apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java | 3 ++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java index 1db37cb4a13..4db247ab845 100644 --- a/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java +++ b/src/test/java/org/apache/ibatis/scripting/xmltags/ChooseSqlNodeTest.java @@ -23,8 +23,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + /** *
{@code
diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java
index 9e6842ee709..6ed6ed679bf 100644
--- a/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java
+++ b/src/test/java/org/apache/ibatis/scripting/xmltags/ForEachSqlNodeTest.java
@@ -23,8 +23,12 @@
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.verify;
+
 
 /**
  * 
{@code
diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java
index 70435d5ed78..af872f0e7a1 100644
--- a/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java
+++ b/src/test/java/org/apache/ibatis/scripting/xmltags/IfSqlNodeTest.java
@@ -17,7 +17,9 @@
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.never;
 
 import java.util.HashMap;
 
diff --git a/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java b/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java
index 1d6fdc599c6..5f73e1f7e5c 100644
--- a/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java
+++ b/src/test/java/org/apache/ibatis/scripting/xmltags/MixedSqlNodeTest.java
@@ -20,7 +20,8 @@
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.verify;
+
 
 /**
  * @author mawen12