package li.dao; import static org.junit.Assert.assertEquals; import javax.sql.DataSource; import li.ioc.Ioc; import li.model.Bean; import li.people.record.Account; import li.test.BaseTest; import org.junit.Before; import org.junit.Test; public class QueryBuilderTest extends BaseTest { DataSource dataSource = Ioc.get(DataSource.class); QueryBuilder queryBuilder = new QueryBuilder(); Account account = new Account(); @Before public void before() throws Exception { queryBuilder.beanMeta = Bean.getMeta(dataSource, Account.class); account.set("id", 1); account.set("username", "username-1"); account.set("password", "password-1"); account.set("email", "email-1"); } @Test public void 参数值中有问号() { String sql = queryBuilder.countBySql("WHERE id=? OR id=? OR id=? OR id=?", new Object[] { "aa?", "bbb", "ccc", "ddd" }); assertEquals("SELECT COUNT(*) FROM t_account WHERE id='aa?' OR id='bbb' OR id='ccc' OR id='ddd'", sql); } @Test public void countAll() { assertEquals("SELECT COUNT(*) FROM t_account", queryBuilder.countAll()); } @Test public void countBySql() { // assertEquals("SELECT COUNT(*) FROM t_account WHERE id>'1'", queryBuilder.countBySql("WHERE id>?", new Object[] { "1" })); // assertEquals("SELECT COUNT(1) FROM t_account", queryBuilder.countBySql("SELECT COUNT(1) FROM t_account", new Object[] {})); // assertEquals("SELECT COUNT(id) FROM t_account", queryBuilder.countBySql("SELECT COUNT(id) FROM t_account", new Object[] {})); // assertEquals("SELECT COUNT(DISTINCT id) FROM t_account", queryBuilder.countBySql("SELECT COUNT(DISTINCT id) FROM t_account", new Object[] {})); } @Test public void deleteById() { assertEquals("DELETE FROM t_account WHERE id=1", queryBuilder.deleteById(1)); } @Test public void deleteBySql() { // assertEquals("DELETE FROM t_account WHERE id='1'", queryBuilder.deleteBySql("WHERE id=?", new Object[] { "1" })); } @Test public void deleteBySql2() { // assertEquals("DELETE FROM t_account WHERE id='1'", queryBuilder.deleteBySql("WHERE url=? ORDER BY id LIMIT ?", new Object[] { "###???###", 2 })); } @Test public void findById() { assertEquals("SELECT * FROM t_account WHERE id=123", queryBuilder.findById(123)); } @Test public void findBySql() { // assertEquals("SELECT * FROM t_account WHERE id=1", queryBuilder.findBySql("WHERE id=?", new Object[] { 1 })); } @Test public void insert() { assertEquals("INSERT INTO t_account (id,username,password,email,role_id,flag) VALUES (NULL,'username-1','password-1','email-1',NULL,NULL)", queryBuilder.insert(account.set("id", null))); } @Test public void insertIgnoreNull() { assertEquals("INSERT INTO t_account (username,password,email) VALUES ('username-1','password-1','email-1')", queryBuilder.insertIgnoreNull(account.set("id", null))); } @Test public void list() { assertEquals("SELECT * FROM t_account LIMIT 0,10", queryBuilder.list(page)); } @Test public void listBySql() { // assertEquals("SELECT * FROM t_account WHERE id>'1' LIMIT 0,10", queryBuilder.listBySql(page, "WHERE id>?", new Object[] { "1" })); } @Test public void setArgMap() { // assertEquals("SELECT * FROM WHERE id=1 OR username LIKE '%li%'", queryBuilder.setArgMap("SELECT * FROM WHERE id=#id OR username LIKE #username", Convert.toMap("id", 1, "username", "%li%"))); } @Test public void setArgs() { // assertEquals("SELECT * FROM WHERE id=1 OR username LIKE '%li%'", queryBuilder.setArgs("SELECT * FROM WHERE id=? OR username LIKE ?", new Object[] { 1, "%li%" })); // assertEquals("SELECT * FROM t_account where username='uuu'", queryBuilder.setArgs("SELECT * FROM t_account where username=?", new Object[] { "uuu" })); // assertEquals("SELECT * FROM t_account where username='uuu'", queryBuilder.setArgMap("SELECT * FROM t_account where username=#username", Convert.toMap("username", "uuu"))); } @Test public void setPage() { assertEquals("SELECT * FROM t_account LIMIT 0,10", queryBuilder.setPage("SELECT * FROM t_account", page)); assertEquals("SELECT * FROM t_account LIMIT 0,1", queryBuilder.setPage("SELECT * FROM t_account", new Page(1, 1))); } @Test public void update() { assertEquals("UPDATE t_account SET username='username-1',password='password-1',email='email-1',role_id=NULL,flag=NULL WHERE id=1", queryBuilder.update(account)); } @Test public void updateBySql() { // assertEquals("UPDATE t_account SET email='eml' WHERE id>3", queryBuilder.updateBySql("SET email=? WHERE id>?", new Object[] { "eml", 3 })); } @Test public void updateIgnoreNull() { assertEquals("UPDATE t_account SET username='username-1',password='password-1',email='email-1' WHERE id=1", queryBuilder.updateIgnoreNull(account)); } @Test public void wrap() { assertEquals("123", queryBuilder.wrap(123)); assertEquals("'abc'", queryBuilder.wrap("abc")); } }