Package org.nutz.dao.test.mapping

Source Code of org.nutz.dao.test.mapping.DynamicManyTest

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.Gun;
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 DynamicManyTest 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_null_field_links() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Platoon p = dao.fetchLinks(dao.fetch(Platoon.class), "tanks|soliders");
        assertEquals(2, p.getTanks().size());
        assertEquals(5, p.getSoliders().size());
      }
    });
  }

  @Test
  public void delete_links() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Soldier s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        assertEquals(3, s.getGuns().length);
        dao.deleteLinks(s, "guns");
        assertEquals(8, dao.count(Gun.class));
      }
    });
  }

  @Test
  public void delete_null_field_links() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Platoon p = dao.fetchLinks(dao.fetch(Platoon.class), "tanks|soliders");
        dao.deleteLinks(p, "tanks|soliders");
        assertEquals(1, dao.count(Platoon.class));
        assertEquals(0, dao.count(Soldier.class));
        assertEquals(0, dao.count(Tank.class));
      }
    });
  }

  @Test
  public void delete_links_partly() {
    TableName.run(platoon, new Atom() {
      public void run() {
        TableName.run(platoon, new Atom() {
          public void run() {
            Soldier s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
            s.getGuns()[1] = null;
            dao.deleteLinks(s, "guns");
            assertEquals(9, dao.count(Gun.class));
          }
        });
      }
    });
  }

  @Test
  public void delete_null_field_links_partly() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Platoon p = dao.fetchLinks(dao.fetch(Platoon.class), "tanks|soliders");
        p.getTanks().remove("M1-A1");
        p.getSoliders().remove(0);
        dao.deleteLinks(p, "tanks|soliders");
        assertEquals(1, dao.count(Platoon.class));
        assertEquals(1, dao.count(Soldier.class));
        assertEquals(1, dao.count(Tank.class));
        assertEquals(6, dao.count("dao_d_m_soldier_tank_" + platoon.getId()));
      }
    });
  }

  @Test
  public void delete_with() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Soldier s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        dao.deleteWith(s, "guns");
        assertEquals(4, dao.count(Soldier.class));
        assertEquals(8, dao.count(Gun.class));
      }
    });
  }

  @Test
  public void delete_with_partly() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Soldier s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        s.getGuns()[1] = null;
        dao.deleteWith(s, "guns");
        assertEquals(4, dao.count(Soldier.class));
        assertEquals(9, dao.count(Gun.class));
      }
    });
  }

  @Test
  public void clear_links() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Soldier s = dao.fetch(Soldier.class, "ZZH");
        dao.clearLinks(s, "guns");
        assertEquals(5, dao.count(Soldier.class));
        assertEquals(8, dao.count(Gun.class));
      }
    });
  }

  @Test
  public void clear_null_field_links() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Platoon p = dao.fetch(Platoon.class);
        dao.clearLinks(p, "tanks|soliders");
        assertEquals(1, dao.count(Platoon.class));
        /*
         * null field, so relative object will be clear
         */
        assertEquals(0, dao.count(Soldier.class));
        assertEquals(0, dao.count(Tank.class));
      }
    });
  }

  @Test
  public void update_links() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Soldier s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        s.setAge(25);
        s.getGuns()[0].setType(Gun.TYPE.AK47);
        s.getGuns()[1].setType(Gun.TYPE.AK47);
        s.getGuns()[2].setType(Gun.TYPE.AK47);
        dao.updateLinks(s, "guns");
        s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        assertEquals(0, s.getAge());
        assertEquals(3, s.getGuns().length);
        for (Gun gun : s.getGuns()) {
          assertEquals(Gun.TYPE.AK47, gun.getType());
        }
      }
    });
  }

  @Test
  public void update_with() {
    TableName.run(platoon, new Atom() {
      public void run() {
        Soldier s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        s.setAge(25);
        s.getGuns()[0].setType(Gun.TYPE.AK47);
        s.getGuns()[1].setType(Gun.TYPE.AK47);
        s.getGuns()[2].setType(Gun.TYPE.AK47);
        dao.updateWith(s, "guns");
        s = dao.fetchLinks(dao.fetch(Soldier.class, "ZZH"), "guns");
        assertEquals(25, s.getAge());
        assertEquals(3, s.getGuns().length);
        for (Gun gun : s.getGuns()) {
          assertEquals(Gun.TYPE.AK47, gun.getType());
        }
      }
    });
  }

}
TOP

Related Classes of org.nutz.dao.test.mapping.DynamicManyTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.