package nl.ipo.cds.etl.util; import static org.junit.Assert.assertTrue; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import javax.sql.DataSource; import org.jmock.Expectations; import org.jmock.Mockery; import org.junit.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class ScriptExecutorTest { @Test public void testExecuter() throws Exception { Resource testScript = new ClassPathResource("nl/ipo/cds/etl/util/test-script.sql"); assertTrue(testScript.exists()); Mockery context = new Mockery(); final Connection connection = context.mock(Connection.class); final DataSource dataSource = context.mock(DataSource.class); final Statement statement = context.mock(Statement.class); final ResultSet resultSet = context.mock(ResultSet.class); context.checking(new Expectations() {{ oneOf(dataSource).getConnection(); will(returnValue(connection)); oneOf(connection).createStatement(); will(returnValue(statement)); oneOf(statement).executeQuery("select * from inspire.protected_site limit 10"); will(returnValue(resultSet)); oneOf(resultSet).close(); oneOf(statement).executeQuery("select * from bron.protected_site where id = 100"); will(returnValue(resultSet)); oneOf(resultSet).close(); oneOf(statement).executeQuery("select * from inspire.site_name where site_name = 'Bla;Bla'"); will(returnValue(resultSet)); oneOf(resultSet).close(); oneOf(statement).executeUpdate("update inspire.job set status = 'CREATED'"); oneOf(statement).close(); oneOf(connection).close(); }}); ScriptExecutor executer = new ScriptExecutor(dataSource); executer.executeScript(testScript); context.assertIsSatisfied(); } }