package org.nutz.dao.test.normal;
import static org.junit.Assert.*;
import org.junit.Test;
import org.nutz.dao.test.DaoCase;
public class AutoGenerateValueTest extends DaoCase {
@Override
protected void before() {
dao.create(Killer.class, true);
dao.create(Resident.class, true);
}
@Override
protected void after() {}
@Test
public void test_var_in_prev() {
dao.create(Pet2.class, true);
// TODO Oracle 那个 @Prev 有问题,暂时先忽略
// TODO HSQL 也不认这样的语句 SELECT 'dog.xb'
// TODO DB2 同样不认
if (dao.meta().isOracle() || dao.meta().isHsql()
|| dao.meta().isDB2())
return;
pojos.initPet();
Pet2 pet = new Pet2();
pet.setName("xb").setAge(10);
dao.insert(pet);
assertEquals("dog.xb", pet.getNickName());
}
@Test
public void test_simple() {
Resident xh = new Resident("XH");
Resident xw = new Resident("XW");
dao.insert(xh);
dao.insert(xw);
Killer zzh = new Killer("zzh");
zzh.kill(xh);
zzh.kill(xw);
dao.insertRelation(zzh, "killeds");
dao.insert(zzh);
zzh = dao.fetch(Killer.class, zzh.getId());
assertEquals(2, zzh.getKilledCount());
assertEquals("XW", zzh.getLastKillName());
Resident gfw = new Resident("GFW");
Resident bs = new Resident("BS");
dao.insert(gfw);
dao.insert(bs);
Killer cnm = new Killer("CNM");
cnm.kill(gfw);
cnm.kill(bs);
dao.insertRelation(cnm, "killeds");
dao.insert(cnm);
cnm = dao.fetch(Killer.class, cnm.getId());
assertEquals(2, cnm.getKilledCount());
assertEquals("GFW", cnm.getLastKillName());
}
// 重构后的 Dao 将不再支持这个用例
// TODO 在正式发布 1.b.38 时删除这个用例
// @Test
public void test_insert_prev_by_fastInsert() {
Resident xh = new Resident("XH");
Resident xw = new Resident("XW");
dao.insert(xh);
dao.insert(xw);
Killer zzh = new Killer("zzh");
zzh.kill(xh);
zzh.kill(xw);
dao.insertRelation(zzh, "killeds");
dao.fastInsert(zzh);
zzh = dao.fetch(Killer.class, "zzh");
assertEquals(2, zzh.getKilledCount());
assertEquals("XW", zzh.getLastKillName());
}
}