package org.nutz.dao.test.mapping; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.nutz.dao.TableName; import org.nutz.dao.test.DaoCase; import org.nutz.dao.test.meta.Base; import org.nutz.dao.test.meta.Platoon; import org.nutz.dao.test.meta.Soldier; import org.nutz.dao.test.meta.Tank; import org.nutz.trans.Atom; public class DynamicOneTest extends DaoCase { private Platoon platoon; @Override protected void before() { pojos.init(); platoon = pojos.create4Platoon(Base.make("blue"), "seals"); } @Override protected void after() { Platoon p = dao.fetch(Platoon.class, "seals"); pojos.dropPlatoon(p.getId()); } @Test public void fetch_links() { TableName.run(platoon, new Atom() { public void run() { Platoon p = dao.fetchLinks(dao.fetch(Platoon.class), "leader"); assertEquals("ZZH", p.getLeaderName()); assertEquals("ZZH", p.getLeader().getName()); } }); } @Test public void delete_links() { TableName.run(platoon, new Atom() { public void run() { Tank t = dao.fetchLinks(dao.fetch(Tank.class, "M1-A1"), "motorman"); dao.deleteLinks(t, "motorman"); assertEquals(4, dao.count(Soldier.class)); assertEquals(2, dao.count(Tank.class)); } }); } @Test public void delete_with() { TableName.run(platoon, new Atom() { public void run() { Tank t = dao.fetchLinks(dao.fetch(Tank.class, "M1-A1"), "motorman"); dao.deleteWith(t, "motorman"); assertEquals(4, dao.count(Soldier.class)); assertEquals(1, dao.count(Tank.class)); } }); } @Test public void clear_links() { TableName.run(platoon, new Atom() { public void run() { Tank t = dao.fetch(Tank.class, "M1-A1"); dao.clearLinks(t, "motorman"); assertEquals(4, dao.count(Soldier.class)); assertEquals(2, dao.count(Tank.class)); } }); } @Test public void update_links() { TableName.run(platoon, new Atom() { public void run() { Tank t = dao.fetchLinks(dao.fetch(Tank.class, "M1-A1"), "motorman"); t.getMotorman().setAge(32); dao.updateLinks(t, "motorman"); Soldier s = dao.fetch(Soldier.class, t.getMotorName()); assertEquals(32, s.getAge()); } }); } @Test public void update_with() { TableName.run(platoon, new Atom() { public void run() { Tank t = dao.fetchLinks(dao.fetch(Tank.class, "M1-A1"), "motorman"); t.getMotorman().setAge(32); t.setWeight(50); dao.updateWith(t, "motorman"); Soldier s = dao.fetch(Soldier.class, t.getMotorName()); assertEquals(32, s.getAge()); t = dao.fetch(Tank.class, t.getId()); assertEquals(50, t.getWeight()); } }); } }