package org.needle4j.db.operation; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class AbstractDBOperationTest { private static final JdbcConfiguration HSQL_DB_CONFIGURATION = new JdbcConfiguration( "jdbc:hsqldb:mem:AbstractDBOperationTestDB", "org.hsqldb.jdbcDriver", "sa", ""); private AbstractDBOperation dbOperation = new AbstractDBOperation(HSQL_DB_CONFIGURATION) { @Override public void tearDownOperation() throws SQLException { } @Override public void setUpOperation() throws SQLException { } }; @Before public void setUp() throws Exception { dbOperation.openConnection(); } @Test public void testGetTableNames() throws Exception { Connection connection = dbOperation.getConnection(); List<String> tableNames = dbOperation.getTableNames(connection); Assert.assertTrue(tableNames.isEmpty()); Statement statement = connection.createStatement(); dbOperation.executeScript("before.sql", statement); tableNames = dbOperation.getTableNames(connection); Assert.assertTrue(tableNames.contains("USER_TABLE")); Assert.assertTrue(tableNames.contains("ADDRESS_TABLE")); dbOperation.executeScript("after.sql", statement); statement.close(); } @Test(expected = SQLException.class) public void testExecuteScript() throws Exception { Statement statement = null; try { Connection connection = dbOperation.getConnection(); statement = connection.createStatement(); dbOperation.executeScript("exception.sql", statement); } finally { if (statement != null) { statement.close(); } } } @Test public void testExecuteScript_UnknownFileName() throws Exception { // expect logging and not an NullPointerException dbOperation.executeScript("unknown.sql", null); } @After public void tearDown() throws Exception { dbOperation.closeConnection(); } }