package net.ttddyy.dsproxy.support;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.sameInstance;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import net.ttddyy.dsproxy.proxy.jdk.JdkJdbcProxyFactory;
import org.junit.Test;
import org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
/**
* @author Tadaya Tsuyukubo
*/
public class DataSourceProxyNativeJdbcExtractorMockTest {
@Test
public void testDoGetNativeConnection() throws Exception {
Connection org = mock(Connection.class);
Connection proxy = new JdkJdbcProxyFactory().createConnection(org, null);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
Connection result = extractor.doGetNativeConnection(proxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(org)));
Connection nonProxy = mock(Connection.class);
result = extractor.doGetNativeConnection(nonProxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(nonProxy)));
}
@Test
public void testDoGetNativeConnectionWithDelegate() throws Exception {
Connection org = mock(Connection.class);
Connection proxy = new JdkJdbcProxyFactory().createConnection(org, null);
NativeJdbcExtractor delegate = mock(NativeJdbcExtractor.class);
Connection expected = mock(Connection.class);
when(delegate.getNativeConnection(org)).thenReturn(expected);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
extractor.setDelegate(delegate);
Connection result = extractor.doGetNativeConnection(proxy);
verify(delegate).getNativeConnection(org);
assertThat(result, is(sameInstance(expected)));
}
@Test
public void testGetNativeStatement() throws Exception {
Statement org = mock(Statement.class);
Statement proxy = new JdkJdbcProxyFactory().createStatement(org, null);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
Statement result = extractor.getNativeStatement(proxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(org)));
Statement nonProxy = mock(Statement.class);
result = extractor.getNativeStatement(nonProxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(nonProxy)));
}
@Test
public void testGetNativeStatementWithDelegate() throws Exception {
Statement org = mock(Statement.class);
Statement proxy = new JdkJdbcProxyFactory().createStatement(org, null);
NativeJdbcExtractor delegate = mock(NativeJdbcExtractor.class);
Statement expected = mock(Statement.class);
when(delegate.getNativeStatement(org)).thenReturn(expected);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
extractor.setDelegate(delegate);
Statement result = extractor.getNativeStatement(proxy);
verify(delegate).getNativeStatement(org);
assertThat(result, is(sameInstance(expected)));
}
@Test
public void testGetNativePreparedStatement() throws Exception {
PreparedStatement org = mock(PreparedStatement.class);
PreparedStatement proxy = new JdkJdbcProxyFactory().createPreparedStatement(org, null, null);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
PreparedStatement result = extractor.getNativePreparedStatement(proxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(org)));
PreparedStatement nonProxy = mock(PreparedStatement.class);
result = extractor.getNativePreparedStatement(nonProxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(nonProxy)));
}
@Test
public void testGetNativePreparedStatementWithDelegate() throws Exception {
PreparedStatement org = mock(PreparedStatement.class);
PreparedStatement proxy = new JdkJdbcProxyFactory().createPreparedStatement(org, null, null);
NativeJdbcExtractor delegate = mock(NativeJdbcExtractor.class);
PreparedStatement expected = mock(PreparedStatement.class);
when(delegate.getNativePreparedStatement(org)).thenReturn(expected);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
extractor.setDelegate(delegate);
PreparedStatement result = extractor.getNativePreparedStatement(proxy);
verify(delegate).getNativePreparedStatement(org);
assertThat(result, is(sameInstance(expected)));
}
@Test
public void testGetNativeCallableStatement() throws Exception {
CallableStatement org = mock(CallableStatement.class);
CallableStatement proxy = new JdkJdbcProxyFactory().createCallableStatement(org, null, null, null);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
CallableStatement result = extractor.getNativeCallableStatement(proxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(org)));
CallableStatement nonProxy = mock(CallableStatement.class);
result = extractor.getNativeCallableStatement(nonProxy);
assertThat(result, is(notNullValue()));
assertThat(result, is(sameInstance(nonProxy)));
}
@Test
public void testGetNativeCallableStatementWithDelegate() throws Exception {
CallableStatement org = mock(CallableStatement.class);
CallableStatement proxy = new JdkJdbcProxyFactory().createCallableStatement(org, null, null, null);
NativeJdbcExtractor delegate = mock(NativeJdbcExtractor.class);
CallableStatement expected = mock(CallableStatement.class);
when(delegate.getNativeCallableStatement(org)).thenReturn(expected);
DataSourceProxyNativeJdbcExtractor extractor = new DataSourceProxyNativeJdbcExtractor();
extractor.setDelegate(delegate);
CallableStatement result = extractor.getNativeCallableStatement(proxy);
verify(delegate).getNativeCallableStatement(org);
assertThat(result, is(sameInstance(expected)));
}
}