package org.test4j.module.dbfit.utility;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.test4j.module.database.annotations.Transactional;
import org.test4j.module.database.annotations.Transactional.TransactionMode;
import org.test4j.module.dbfit.IDbFit;
import org.test4j.module.dbfit.annotations.DbFit;
import org.test4j.module.dbfit.annotations.DbFit.AUTO;
import org.test4j.testng.Test4J;
import org.testng.annotations.Test;
@Test(groups = "test4j")
@DbFit(auto = AUTO.AUTO)
@SuppressWarnings({ "rawtypes" })
public class SqlRunnerTest extends Test4J implements IDbFit {
@Test
@Transactional(TransactionMode.COMMIT)
public void testExecute() throws SQLException {
fit.useDefaultDataSource();
fit.execute("delete from tdd_user where 1=1");
fit.execute("insert into tdd_user(id,first_name) values(1,'darui.wu')");
}
@Test
public void testQuery_ForMap() throws SQLException {
Map map = fit.query("select * from tdd_user", Map.class);
want.map(map).notNull().hasEntry("id", 1, "first_name", "dddd");
Timestamp time = (Timestamp) map.get("my_date");
want.string(time.toString()).start("2011-03-18");
}
@DbFit(when = "data/SqlRunnerTest/testQuery_ForMap.when.wiki")
@Test
public void testQueryList_MapList() throws SQLException {
List<Map> maps = (List<Map>) fit.queryList("select * from tdd_user", Map.class);
want.collection(maps).sizeEq(2).propertyEq("id", new Object[] { 1, 2 });
}
@DbFit(when = "data/SqlRunnerTest/testQuery_ForMap.when.wiki")
@Test
public void testQueryList_PoJoList() throws SQLException {
List<UserPoJo> users = (List<UserPoJo>) fit.queryList("select * from tdd_user", UserPoJo.class);
want.collection(users).sizeEq(2).propertyEq("id", new Object[] { 1, 2 });
}
@DbFit(when = "data/SqlRunnerTest/testQuery_ForMap.when.wiki")
@Test
public void testQuery_ForPoJo() throws SQLException {
UserPoJo user = fit.query("select * from tdd_user", UserPoJo.class);
want.object(user).notNull().propertyEq(new String[] { "id", "firstName" }, new Object[] { 1, "dddd" });
want.string(user.myDate.toString()).start("2011-03-18");
}
@Test
public void testExecuteFromFile() throws Exception {
fit.executeSQLFile("org/test4j/module/dbfit/utility/data/SqlRunnerTest/testExecuteFromFile.sql");
}
public static class UserPoJo {
int id;
String firstName;
Date myDate;
}
}