diff --git a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/query/JDBCStreamQueryBuilderTest.java b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/query/JDBCStreamQueryBuilderTest.java new file mode 100644 index 0000000000000..f840206ebd2e1 --- /dev/null +++ b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/query/JDBCStreamQueryBuilderTest.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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.shardingsphere.data.pipeline.core.query; + +import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader; +import org.apache.shardingsphere.infra.database.core.type.DatabaseType; +import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; +import org.apache.shardingsphere.test.mock.AutoMockExtension; +import org.apache.shardingsphere.test.mock.StaticMockSettings; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Optional; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@ExtendWith(AutoMockExtension.class) +@StaticMockSettings(DatabaseTypedSPILoader.class) +class JDBCStreamQueryBuilderTest { + + private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "FIXTURE"); + + @Mock + private Connection connection; + + @Mock + private PreparedStatement preparedStatement; + + @Test + void assertBuildWithDialectJDBCStreamQueryBuilder() throws SQLException { + DialectJDBCStreamQueryBuilder builder = mock(DialectJDBCStreamQueryBuilder.class); + when(builder.build(connection, "SELECT 1", 1)).thenReturn(preparedStatement); + when(DatabaseTypedSPILoader.findService(DialectJDBCStreamQueryBuilder.class, databaseType)).thenReturn(Optional.of(builder)); + assertThat(JDBCStreamQueryBuilder.build(databaseType, connection, "SELECT 1", 1), is(preparedStatement)); + } + + @Test + void assertBuildWithoutDialectJDBCStreamQueryBuilder() throws SQLException { + when(connection.prepareStatement("SELECT 1", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)).thenReturn(preparedStatement); + assertThat(JDBCStreamQueryBuilder.build(databaseType, connection, "SELECT 1", 1), is(preparedStatement)); + } +} diff --git a/kernel/data-pipeline/core/src/test/resources/logback-test.xml b/kernel/data-pipeline/core/src/test/resources/logback-test.xml index c9f7bcd99393c..3e541402c02b4 100644 --- a/kernel/data-pipeline/core/src/test/resources/logback-test.xml +++ b/kernel/data-pipeline/core/src/test/resources/logback-test.xml @@ -27,6 +27,7 @@ +