package org.nutz.dao.test.mapping; import static org.junit.Assert.*; import java.util.Iterator; import org.junit.Test; import org.nutz.dao.impl.entity.field.*; import org.nutz.dao.test.DaoCase; import org.nutz.dao.test.meta.Base; import org.nutz.dao.test.meta.Fighter; public class ManyManyTest extends DaoCase { @Override protected void before() { pojos.initData(); } @Override protected void after() {} @Test public void fetch_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "fighters"); assertEquals(6, b.getFighters().size()); assertEquals(1, b.countFighter(Fighter.TYPE.SU_35)); } @Test public void delete_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "fighters"); dao.deleteLinks(b, "fighters"); assertEquals(7, dao.count(Fighter.class)); assertEquals( 7, dao.count(((ManyManyLinkField) dao.getEntity(Base.class) .getLinkFields("fighters") .get(0)).getRelationName())); } @Test public void delete_links_partly() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "fighters"); b.getFighters().remove(0); b.getFighters().remove(0); dao.deleteLinks(b, "fighters"); assertEquals(9, dao.count(Fighter.class)); } @Test public void delete_with() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "fighters"); dao.deleteWith(b, "fighters"); assertEquals(7, dao.count(Fighter.class)); assertEquals(1, dao.count(Base.class)); } @Test public void delete_with_partly() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "fighters"); b.getFighters().remove(0); b.getFighters().remove(0); dao.deleteWith(b, "fighters"); assertEquals(9, dao.count(Fighter.class)); assertEquals(1, dao.count(Base.class)); } @Test public void clear_links() { Base b = dao.fetch(Base.class, "red"); dao.clearLinks(b, "fighters"); assertEquals(13, dao.count(Fighter.class)); assertEquals( 7, dao.count(((ManyManyLinkField) dao.getEntity(Base.class) .getLinkFields("fighters") .get(0)).getRelationName())); } @Test public void update_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "blue"), "fighters"); int lv = b.getLevel(); b.setLevel(45); for (Iterator<Fighter> it = b.getFighters().iterator(); it.hasNext();) { it.next().setType(Fighter.TYPE.F22); } dao.updateLinks(b, "fighters"); b = dao.fetch(Base.class, "blue"); assertEquals(lv, b.getLevel()); b = dao.fetchLinks(dao.fetch(Base.class, "blue"), "fighters"); assertEquals(7, b.countFighter(Fighter.TYPE.F22)); } @Test public void update_with() { Base b = dao.fetchLinks(dao.fetch(Base.class, "blue"), "fighters"); b.setLevel(45); for (Iterator<Fighter> it = b.getFighters().iterator(); it.hasNext();) { it.next().setType(Fighter.TYPE.F22); } dao.updateWith(b, "fighters"); b = dao.fetch(Base.class, "blue"); assertEquals(45, b.getLevel()); b = dao.fetchLinks(dao.fetch(Base.class, "blue"), "fighters"); assertEquals(7, b.countFighter(Fighter.TYPE.F22)); } }