package org.sql2o;
import junit.framework.TestCase;
import org.h2.jdbcx.JdbcConnectionPool;
import javax.sql.DataSource;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: lars
* Date: 10/5/12
* Time: 10:54 PM
* To change this template use File | Settings | File Templates.
*/
public class Sql2oDataSourceTest extends TestCase {
private Sql2o sql2o;
private String url = "jdbc:h2:mem:test2;DB_CLOSE_DELAY=-1";
private String user = "sa";
private String pass = "";
@Override
protected void setUp() throws Exception {
DataSource ds = JdbcConnectionPool.create(url, user, pass);
sql2o = new Sql2o(ds);
}
public void testExecuteAndFetchWithNulls(){
String sql =
"create table testExecWithNullsTbl (" +
"id int identity primary key, " +
"text varchar(255), " +
"aNumber int, " +
"aLongNumber bigint)";
sql2o.createQuery(sql).setName("testExecuteAndFetchWithNulls").executeUpdate();
sql2o.runInTransaction(new StatementRunnable() {
public void run(Connection connection, Object argument) throws Throwable {
Query insQuery = connection.createQuery("insert into testExecWithNullsTbl (text, aNumber, aLongNumber) values(:text, :number, :lnum)");
insQuery.addParameter("text", "some text").addParameter("number", 2).addParameter("lnum", 10L).executeUpdate();
insQuery.addParameter("text", "some text").addParameter("number", (Integer)null).addParameter("lnum", 10L).executeUpdate();
insQuery.addParameter("text", (String)null).addParameter("number", 21).addParameter("lnum", (Long)null).executeUpdate();
insQuery.addParameter("text", "some text").addParameter("number", 1221).addParameter("lnum", 10).executeUpdate();
insQuery.addParameter("text", "some text").addParameter("number", 2311).addParameter("lnum", 12).executeUpdate();
}
});
List<Entity> fetched = sql2o.createQuery("select * from testExecWithNullsTbl").executeAndFetch(Entity.class);
assertTrue(fetched.size() == 5);
assertNull(fetched.get(2).text);
assertNotNull(fetched.get(3).text);
assertNull(fetched.get(1).aNumber);
assertNotNull(fetched.get(2).aNumber);
assertNull(fetched.get(2).aLongNumber);
assertNotNull(fetched.get(3).aLongNumber);
}
}