package com.aconex.scrutineer.jdbc;
import static com.aconex.scrutineer.HasIdAndVersionMatcher.hasIdAndVersion;
import static org.hamcrest.MatcherAssert.assertThat;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Iterator;
import com.aconex.scrutineer.IdAndVersion;
import com.aconex.scrutineer.IdAndVersionFactory;
import com.aconex.scrutineer.StringIdAndVersion;
import org.dbunit.DataSourceBasedDBTestCase;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.XmlDataSet;
public class JdbcIdAndVersionStreamIntegrationTest extends DataSourceBasedDBTestCase {
private static final String SQL = "Select id, version from test";
private final HSQLHelper HSQLHelper = new HSQLHelper();
private IdAndVersionFactory idAndVersionFactory = StringIdAndVersion.FACTORY;
public void testShouldReturnTuplesInCorrectOrder() throws SQLException {
JdbcIdAndVersionStream jdbcIdAndVersionStream = new JdbcIdAndVersionStream(getDataSource().getConnection(), SQL, idAndVersionFactory);
jdbcIdAndVersionStream.open();
Iterator<IdAndVersion> iterator = jdbcIdAndVersionStream.iterator();
assertThat(iterator.next(), hasIdAndVersion("1", 10));
assertThat(iterator.next(), hasIdAndVersion("2", 20));
assertThat(iterator.next(), hasIdAndVersion("3", 30));
jdbcIdAndVersionStream.close();
}
@Override
protected void setUp() throws Exception {
HSQLHelper.createHsqldbTables(getDataSet(), getDataSource().getConnection());
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
getDataSource().getConnection().createStatement().execute("SHUTDOWN");
}
@Override
protected DataSource getDataSource() {
return HSQLHelper.setupHSQLDBDataSource();
}
@Override
protected IDataSet getDataSet() throws Exception {
InputStream resourceAsStream = this.getClass().getResourceAsStream("dataset.xml");
return new XmlDataSet(resourceAsStream);
}
private DataSource setupHSQLDBDataSource() {
return HSQLHelper.setupHSQLDBDataSource();
}
}