package eu.ggnet.dwoss.stock.eao; import eu.ggnet.dwoss.stock.entity.StockTransactionStatusType; import eu.ggnet.dwoss.stock.entity.Stock; import eu.ggnet.dwoss.stock.entity.StockTransactionPosition; import eu.ggnet.dwoss.stock.entity.StockTransaction; import eu.ggnet.dwoss.stock.entity.StockTransactionStatus; import eu.ggnet.dwoss.stock.entity.StockLocation; import eu.ggnet.dwoss.stock.entity.LogicTransaction; import eu.ggnet.dwoss.stock.entity.StockUnit; import eu.ggnet.dwoss.stock.entity.StockTransactionType; import java.util.Date; import java.util.List; import javax.persistence.*; import org.junit.*; import eu.ggnet.dwoss.stock.assist.StockPu; import static org.junit.Assert.*; public class StockUnitEaoIT { private EntityManagerFactory emf; private EntityManager em; @Before public void before() { emf = Persistence.createEntityManagerFactory(StockPu.NAME, StockPu.JPA_IN_MEMORY); em = emf.createEntityManager(); } @After public void after() { em.close(); emf.close(); } @Test public void testFindByIdentifierAndStock() { StockUnitEao sus = new StockUnitEao(em); EntityTransaction tx = em.getTransaction(); tx.begin(); Stock s = new Stock(0, "TEEEEEEEEEEEEEEEST"); em.persist(s); tx.commit(); StockLocation sl = new StockLocation("Lagerplatz"); s.addStockLocation(sl); StockUnit s1 = new StockUnit("G1", 1); StockUnit s2 = new StockUnit("G2", 2); s.addUnit(s1, sl); s.addUnit(s2, sl); tx.begin(); em.persist(s); em.persist(new Stock(1,"TEEEEEEEEST")); tx.commit(); int id1 = s1.getId(); int id2 = s2.getId(); assertFalse(id1 == id2); s1 = sus.findByUniqueUnitId(1); s2 = sus.findByUniqueUnitId(2); assertNotNull(s1); assertNotNull(s2); assertEquals(id1, s1.getId()); assertEquals(id2, s2.getId()); List<StockUnit> units = sus.findByStockId(s.getId()); assertEquals(2, units.size()); } @Test public void testFindByUnitId() { StockUnitEao sus = new StockUnitEao(em); EntityTransaction tx = em.getTransaction(); tx.begin(); Stock s = new Stock(0, "TEEEEEEEEEEEEEEEEEST"); em.persist(s); tx.commit(); StockLocation sl = new StockLocation("Lagerplatz"); s.addStockLocation(sl); StockUnit s1 = new StockUnit("G1", 1); s1.setRefurbishId("23"); StockUnit s2 = new StockUnit("G2", 2); s2.setRefurbishId("42"); s.addUnit(s1, sl); s.addUnit(s2, sl); tx.begin(); em.persist(s); tx.commit(); int id1 = s1.getId(); int id2 = s2.getId(); assertFalse(id1 == id2); s1 = sus.findByRefurbishId("23"); s2 = sus.findByRefurbishId("42"); assertNotNull(s1); assertNotNull(s2); assertEquals(id1, s1.getId()); assertEquals(id2, s2.getId()); assertNull(sus.findByRefurbishId("123")); assertNull(sus.findByRefurbishId(null)); } @Test public void testSumByTransaction() { EntityTransaction tx = em.getTransaction(); tx.begin(); Stock s0 = new Stock(0, "1111111111111111111111111111"); Stock s1 = new Stock(1, "2222222222222222222222222222"); em.persist(s0); em.persist(s1); tx.commit(); StockLocation s0l0 = new StockLocation("Lagerplatz"); s0.addStockLocation(s0l0); StockUnit su0 = new StockUnit("g1", 1); su0.setRefurbishId("23"); su0.setName("Name"); StockUnit su1 = new StockUnit("g2", 2); su1.setRefurbishId("42"); su1.setName("Name"); StockUnit su2 = new StockUnit("g3", 3); su2.setRefurbishId("42"); su2.setName("Name"); s0.addUnit(su0, s0l0); s0.addUnit(su1, s0l0); s0.addUnit(su2, s0l0); tx.begin(); em.persist(s0); em.persist(s1); tx.commit(); tx = em.getTransaction(); tx.begin(); StockTransaction st = new StockTransaction(StockTransactionType.TRANSFER); st.setDestination(s1); st.setSource(s0); st.addStatus(new StockTransactionStatus(StockTransactionStatusType.PREPARED, new Date())); em.persist(st); st.addPosition(new StockTransactionPosition(su0)); st.addPosition(new StockTransactionPosition(su1)); tx.commit(); StockUnitEao sus = new StockUnitEao(em); assertEquals(2, sus.countByTransaction(s0.getId(), StockTransactionType.TRANSFER, StockTransactionStatusType.PREPARED)); } @Test public void testFindByNoLogicTransaction() { StockUnitEao sus = new StockUnitEao(em); EntityTransaction tx = em.getTransaction(); tx.begin(); Stock s = new Stock(0, "TEEEEEEEEEEEEEEEEEEEEEst"); em.persist(s); StockLocation sl = new StockLocation("Lagerplatz"); s.addStockLocation(sl); StockUnit s1 = new StockUnit("G1", 1); StockUnit s2 = new StockUnit("G2", 2); StockUnit s3 = new StockUnit("G3", 3); StockUnit s4 = new StockUnit("G4", 4); s.addUnit(s1, sl); s.addUnit(s2, sl); s.addUnit(s3, sl); s.addUnit(s4, sl); em.persist(s); em.persist(new Stock(1,"teeeeeeeeeeest")); LogicTransaction lt = new LogicTransaction(); lt.setDossierId(1); lt.add(s4); em.persist(lt); tx.commit(); tx.begin(); List<StockUnit> sts = sus.findByNoLogicTransaction(); assertEquals(3, sts.size()); List<Integer> uuids = sus.findByNoLogicTransactionAsUniqueUnitId(); assertEquals(3, uuids.size()); tx.commit(); } @Test public void testFindByNoTransaction() { StockUnitEao sus = new StockUnitEao(em); EntityTransaction tx = em.getTransaction(); tx.begin(); Stock s = new Stock(0, "TEEEEEEEEEEEEEEST"); em.persist(s); StockLocation sl = new StockLocation("Lagerplatz"); s.addStockLocation(sl); StockUnit s1 = new StockUnit("G1", 1); StockUnit s2 = new StockUnit("G2", 2); StockUnit s3 = new StockUnit("G3", 3); StockUnit s4 = new StockUnit("G4", 4); s.addUnit(s1, sl); s.addUnit(s2, sl); s.addUnit(s3, sl); s.addUnit(s4, sl); em.persist(s); em.persist(new Stock(1,"TEEEEEEEEEST2")); LogicTransaction lt = new LogicTransaction(); lt.setDossierId(1); lt.add(s4); em.persist(lt); StockTransaction st = new StockTransaction(StockTransactionType.TRANSFER); st.setSource(s); st.addStatus(new StockTransactionStatus(StockTransactionStatusType.PREPARED, new Date())); em.persist(st); st.addPosition(new StockTransactionPosition(s1)); tx.commit(); tx.begin(); List<StockUnit> sts = sus.findByNoTransaction(); assertEquals(2, sts.size()); tx.commit(); } }