package org.nutz.trans; import static org.junit.Assert.*; import java.sql.Connection; import java.util.ArrayList; import org.junit.Test; import org.nutz.dao.DaoException; import org.nutz.dao.TableName; import org.nutz.dao.test.DaoCase; import org.nutz.dao.test.meta.Base; import org.nutz.dao.test.meta.Country; import org.nutz.dao.test.meta.Fighter; import org.nutz.dao.test.meta.Mission; import org.nutz.lang.Lang; public class BatchTransTest extends DaoCase { @Override protected void after() {} @Override protected void before() { dao.create(Company.class, true); dao.create(Master.class, true); dao.create(Cat.class, true); } @Test public void try_insert_static_objects_by_many_many() { pojos.init(); final Base b = Base.make("B"); b.setFighters(new ArrayList<Fighter>()); TableName.run(1, new Atom() { public void run() { Trans.exec(new Atom() { public void run() { dao.insert(Country.make("A")); try { dao.insert(Country.make("A")); } catch (DaoException e) {} dao.insert(Country.make("C")); dao.insert(Country.make("D")); } }); assertEquals(3, dao.count(Country.class)); } }); } @Test public void try_insert_multiple_dynamic_objects() { try { pojos.initPlatoon(1); TableName.run(1, new Atom() { public void run() { Trans.exec(new Atom() { public void run() { dao.insert(Mission.make("D1", "2008-12-21 20:15:26")); try { dao.insert(Mission.make("D1", "2008-9-21 17:12:23")); } catch (DaoException e) {} dao.insert(Mission.make("D2", "2008-10-21 18:13:24")); dao.insert(Mission.make("D3", "2008-11-21 19:14:25")); } }); assertEquals(3, dao.count(Mission.class)); } }); } catch (Exception e) { throw Lang.wrapThrow(e); } finally { pojos.dropPlatoon(1); } } @Test public void try_insert_multiple_companys() { Trans.exec(Connection.TRANSACTION_READ_COMMITTED,new Atom() { public void run() { dao.insert(Company.make("Google")); dao.insert(Company.make("Yahoo")); try { dao.insert(Company.make("Yahoo")); } catch (DaoException e) {} dao.insert(Company.make("Microsoft")); dao.insert(Company.make("Sun")); dao.insert(Company.make("IBM")); } }); assertEquals(5, dao.count(Company.class)); } }