package org.nutz.dao.test.mapping; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Iterator; import org.junit.Test; import org.nutz.dao.Cnd; import org.nutz.dao.test.DaoCase; import org.nutz.dao.test.meta.Base; import org.nutz.dao.test.meta.Master; import org.nutz.dao.test.meta.Pet; import org.nutz.dao.test.meta.Platoon; import org.nutz.dao.test.meta.WaveBand; public class ManyTest extends DaoCase { @Override protected void before() { pojos.initData(); } @Override protected void after() {} @Test public void insert_links() { dao.create(Pet.class, true); dao.create(Master.class, true); Master m = new Master(); m.setName("zozoh"); m.setPets(new ArrayList<Pet>(2)); Pet pet = new Pet(); pet.setAge(25); pet.setName("Wendal"); m.getPets().add(pet); pet = new Pet(); pet.setAge(25); pet.setName("Juqkai"); m.getPets().add(pet); dao.insertWith(m, "pets"); assertTrue(m.getId() > 0); assertEquals(2, dao.count(Pet.class, Cnd.where("masterId", "=", m.getId()))); } @Test public void fetch_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); assertEquals(3, b.getPlatoons().size()); assertEquals(b.getName(), b.getPlatoons().get("C").getBaseName()); assertEquals(b.getName(), b.getPlatoons().get("ES").getBaseName()); assertEquals(b.getName(), b.getPlatoons().get("DT").getBaseName()); } @Test public void fetch_null_field_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "wavebands"); assertEquals(4, b.getWavebands().size()); Base b2 = dao.fetchLinks(dao.fetch(Base.class, "blue"), "wavebands"); assertEquals(4, b2.getWavebands().size()); } @Test public void delete_links() { assertEquals(6, dao.count(Platoon.class)); Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); dao.deleteLinks(b, "platoons"); assertEquals(3, dao.count(Platoon.class)); } @Test public void delete_null_field_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "wavebands"); dao.deleteLinks(b, "wavebands"); assertEquals(0, dao.count(WaveBand.class)); } @Test public void delete_links_partly() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); b.getPlatoons().remove("C"); dao.deleteLinks(b, "platoons"); assertEquals(4, dao.count(Platoon.class)); } @Test public void delete_null_field_links_partly() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "wavebands"); b.getWavebands().remove(0); dao.deleteLinks(b, "wavebands"); assertEquals(1, dao.count(WaveBand.class)); } @Test public void delete_with() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); dao.deleteWith(b, "platoons"); assertEquals(3, dao.count(Platoon.class)); assertEquals(1, dao.count(Base.class)); } @Test public void delete_with_partly() { Base b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); b.getPlatoons().remove("C"); dao.deleteWith(b, "platoons"); assertEquals(4, dao.count(Platoon.class)); assertEquals(1, dao.count(Base.class)); } @Test public void clear_links() { Base b = dao.fetch(Base.class, "red"); dao.clearLinks(b, "platoons"); assertEquals(3, dao.count(Platoon.class)); } @Test public void clear_null_field_links() { Base b = dao.fetch(Base.class, "red"); dao.clearLinks(b, "wavebands"); assertEquals(0, dao.count(WaveBand.class)); } @Test public void update_links() { Base b = dao.fetchLinks(dao.fetch(Base.class, "blue"), "platoons"); int lv = b.getLevel(); b.setLevel(45); for (Iterator<Platoon> it = b.getPlatoons().values().iterator(); it.hasNext();) { it.next().setBaseName("red"); } dao.updateLinks(b, "platoons"); b = dao.fetch(Base.class, "blue"); assertEquals(lv, b.getLevel()); b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); assertEquals(6, b.getPlatoons().size()); } @Test public void update_with() { Base b = dao.fetchLinks(dao.fetch(Base.class, "blue"), "platoons"); b.setLevel(45); for (Iterator<Platoon> it = b.getPlatoons().values().iterator(); it.hasNext();) { it.next().setBaseName("red"); } dao.updateWith(b, "platoons"); b = dao.fetch(Base.class, "blue"); assertEquals(45, b.getLevel()); b = dao.fetchLinks(dao.fetch(Base.class, "red"), "platoons"); assertEquals(6, b.getPlatoons().size()); } }