Polishing

This commit is contained in:
Sam Brannen 2020-06-23 17:45:23 +02:00
parent f9331d921f
commit 1edc08fb84
1 changed files with 30 additions and 36 deletions

View File

@ -25,81 +25,75 @@ import javax.sql.DataSource;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
/** /**
* Mock object based test for {@code DatabaseStartupValidator}. * Mock object based tests for {@code DatabaseStartupValidator}.
* *
* @author Marten Deinum, * @author Marten Deinum
*/ */
class DatabaseStartupValidatorTests { class DatabaseStartupValidatorTests {
private Connection connection; private final DataSource dataSource = mock(DataSource.class);
private DataSource dataSource;
private final Connection connection = mock(Connection.class);
private final DatabaseStartupValidator validator = new DatabaseStartupValidator();
@BeforeEach @BeforeEach
public void setUp() throws Exception { void setUp() throws Exception {
connection = mock(Connection.class);
dataSource = mock(DataSource.class);
given(dataSource.getConnection()).willReturn(connection); given(dataSource.getConnection()).willReturn(connection);
}
@Test
public void properSetupForDataSource() {
DatabaseStartupValidator validator = new DatabaseStartupValidator();
assertThatThrownBy(validator::afterPropertiesSet)
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void shouldUseJdbc4IsValidByDefault() throws Exception {
given(connection.isValid(1)).willReturn(true);
DatabaseStartupValidator validator = new DatabaseStartupValidator();
validator.setDataSource(dataSource); validator.setDataSource(dataSource);
}
@Test
void properSetupForDataSource() {
assertThatIllegalArgumentException().isThrownBy(validator::afterPropertiesSet);
}
@Test
void shouldUseJdbc4IsValidByDefault() throws Exception {
given(connection.isValid(1)).willReturn(true);
validator.afterPropertiesSet(); validator.afterPropertiesSet();
verify(connection, times(1)).isValid(1); verify(connection, times(1)).isValid(1);
verify(connection, times(1)).close(); verify(connection, times(1)).close();
} }
@Test @Test
public void shouldCallValidatonTwiceWhenNotValid() throws Exception { void shouldCallValidatonTwiceWhenNotValid() throws Exception {
given(connection.isValid(1)).willReturn(false, true); given(connection.isValid(1)).willReturn(false, true);
DatabaseStartupValidator validator = new DatabaseStartupValidator();
validator.setDataSource(dataSource);
validator.afterPropertiesSet(); validator.afterPropertiesSet();
verify(connection, times(2)).isValid(1); verify(connection, times(2)).isValid(1);
verify(connection, times(2)).close(); verify(connection, times(2)).close();
} }
@Test @Test
public void shouldCallValidatonTwiceInCaseOfException() throws Exception { void shouldCallValidatonTwiceInCaseOfException() throws Exception {
given(connection.isValid(1)).willThrow(new SQLException("Test")).willReturn(true); given(connection.isValid(1)).willThrow(new SQLException("Test")).willReturn(true);
DatabaseStartupValidator validator = new DatabaseStartupValidator();
validator.setDataSource(dataSource);
validator.afterPropertiesSet(); validator.afterPropertiesSet();
verify(connection, times(2)).isValid(1); verify(connection, times(2)).isValid(1);
verify(connection, times(2)).close(); verify(connection, times(2)).close();
} }
@Test @Test
public void useValidationQueryInsteadOfIsValid() throws Exception { @SuppressWarnings("deprecation")
void useValidationQueryInsteadOfIsValid() throws Exception {
String validationQuery = "SELECT NOW() FROM DUAL"; String validationQuery = "SELECT NOW() FROM DUAL";
Statement statement = mock(Statement.class); Statement statement = mock(Statement.class);
given(connection.createStatement()).willReturn(statement); given(connection.createStatement()).willReturn(statement);
given(statement.execute(validationQuery)).willReturn(true); given(statement.execute(validationQuery)).willReturn(true);
DatabaseStartupValidator validator = new DatabaseStartupValidator();
validator.setDataSource(dataSource);
validator.setValidationQuery(validationQuery); validator.setValidationQuery(validationQuery);
validator.afterPropertiesSet(); validator.afterPropertiesSet();
@ -110,7 +104,8 @@ class DatabaseStartupValidatorTests {
} }
@Test @Test
public void shouldExecuteValidatonTwiceOnError() throws Exception { @SuppressWarnings("deprecation")
void shouldExecuteValidatonTwiceOnError() throws Exception {
String validationQuery = "SELECT NOW() FROM DUAL"; String validationQuery = "SELECT NOW() FROM DUAL";
Statement statement = mock(Statement.class); Statement statement = mock(Statement.class);
given(connection.createStatement()).willReturn(statement); given(connection.createStatement()).willReturn(statement);
@ -118,8 +113,6 @@ class DatabaseStartupValidatorTests {
.willThrow(new SQLException("Test")) .willThrow(new SQLException("Test"))
.willReturn(true); .willReturn(true);
DatabaseStartupValidator validator = new DatabaseStartupValidator();
validator.setDataSource(dataSource);
validator.setValidationQuery(validationQuery); validator.setValidationQuery(validationQuery);
validator.afterPropertiesSet(); validator.afterPropertiesSet();
@ -128,4 +121,5 @@ class DatabaseStartupValidatorTests {
verify(connection, times(2)).close(); verify(connection, times(2)).close();
verify(statement, times(2)).close(); verify(statement, times(2)).close();
} }
} }