package eu.ggnet.dwoss.stock.emo;
import eu.ggnet.dwoss.stock.entity.Stock;
import eu.ggnet.dwoss.stock.entity.LogicTransaction;
import eu.ggnet.dwoss.stock.entity.StockUnit;
import java.util.Arrays;
import javax.persistence.*;
import org.junit.*;
import eu.ggnet.dwoss.stock.assist.StockPu;
import eu.ggnet.dwoss.stock.eao.LogicTransactionEao;
import static org.junit.Assert.*;
/**
*
* @author pascal.perau
*/
public class LogicTransactionEmoIT {
private EntityManager em;
private EntityManagerFactory emf;
@Before
public void setUp() {
emf = Persistence.createEntityManagerFactory(StockPu.NAME, StockPu.JPA_IN_MEMORY);
em = emf.createEntityManager();
}
@After
public void tearDown() {
if ( em != null ) em.close();
if ( emf != null ) emf.close();
}
@Test
public void testRequest() {
LogicTransactionEmo ltEmo = new LogicTransactionEmo(em);
em.getTransaction().begin();
LogicTransaction lt1 = new LogicTransaction();
lt1.setDossierId(1);
LogicTransaction lt2 = ltEmo.request(2);
em.persist(lt1);
assertNotNull(lt1);
assertNotNull(lt2);
em.getTransaction().commit();
}
@Test
public void testEquilibrate() throws InterruptedException {
em.getTransaction().begin();
Stock s = new Stock(0);
s.setName("Test-0");
em.persist(s);
// StockEntityHelper.createOrUpdateMasterData(em);
em.getTransaction().commit();
em.getTransaction().begin();
LogicTransaction logicTransaction = new LogicTransaction();
LogicTransaction logicTransaction1 = new LogicTransaction();
LogicTransaction logicTransaction2 = new LogicTransaction();
StockUnit stockUnit1 = new StockUnit("Unit1", "Unit1", 1);
StockUnit stockUnit2 = new StockUnit("Unit2", "Unit2", 2);
StockUnit stockUnit3 = new StockUnit("Unit3", "Unit3", 3);
StockUnit stockUnit4 = new StockUnit("Unit4", "Unit4", 4);
StockUnit stockUnit5 = new StockUnit("Unit5", "Unit5", 5);
StockUnit stockUnit6 = new StockUnit("Unit6", "Unit6", 6);
StockUnit stockUnit7 = new StockUnit("Unit7", "Unit7", 7);
StockUnit stockUnit8 = new StockUnit("Unit8", "Unit8", 8);
stockUnit1.setStock(s);
stockUnit2.setStock(s);
stockUnit3.setStock(s);
stockUnit4.setStock(s);
stockUnit5.setStock(s);
stockUnit6.setStock(s);
stockUnit7.setStock(s);
stockUnit8.setStock(s);
logicTransaction.setDossierId(1l);
logicTransaction1.setDossierId(1l);
logicTransaction2.setDossierId(1l);
em.persist(logicTransaction);
em.persist(logicTransaction1);
em.persist(logicTransaction2);
em.persist(stockUnit1);
em.persist(stockUnit2);
em.persist(stockUnit3);
em.persist(stockUnit4);
em.persist(stockUnit5);
em.persist(stockUnit6);
em.persist(stockUnit7);
em.persist(stockUnit8);
logicTransaction.add(stockUnit1);
logicTransaction.add(stockUnit2);
logicTransaction1.add(stockUnit3);
logicTransaction1.add(stockUnit4);
logicTransaction2.add(stockUnit5);
logicTransaction2.add(stockUnit6);
em.getTransaction().commit();
em.getTransaction().begin();
LogicTransaction find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 2. find=" + find, find.getUnits().size() == 2);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find,
find.getUnits().containsAll(Arrays.asList(new StockUnit[]{stockUnit1, stockUnit2})));
em.getTransaction().commit();
LogicTransactionEmo emo = new LogicTransactionEmo(em);
em.getTransaction().begin();
emo.equilibrate(1l, Arrays.asList(new Integer[]{1, 2, 7, 8}));
em.getTransaction().commit();
em.getTransaction().begin();
find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 4. find=" + find, find.getUnits().size() == 4);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find,
find.getUnits().containsAll(Arrays.asList(new StockUnit[]{stockUnit1, stockUnit2, stockUnit7, stockUnit8})));
em.getTransaction().commit();
em.getTransaction().begin();
emo.equilibrate(1l, Arrays.asList(new Integer[]{1, 2, 8}));
em.getTransaction().commit();
em.getTransaction().begin();
find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 3. find=" + find, find.getUnits().size() == 3);
assertTrue("It wasnt All Units correctly in the Transaction. find="
+ find, find.getUnits().containsAll(Arrays.asList(new StockUnit[]{stockUnit1, stockUnit2, stockUnit8})));
em.getTransaction().commit();
em.getTransaction().begin();
emo.equilibrate(1l, Arrays.asList(new Integer[]{1, 7, 8}));
em.getTransaction().commit();
em.getTransaction().begin();
find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 3. find=" + find, find.getUnits().size() == 3);
assertTrue("It wasnt All Units correctly in the Transaction. find="
+ find, find.getUnits().containsAll(Arrays.asList(new StockUnit[]{stockUnit1, stockUnit7, stockUnit8})));
em.getTransaction().commit();
em.getTransaction().begin();
emo.equilibrate(1l, Arrays.asList(new Integer[]{}));
em.getTransaction().commit();
em.getTransaction().begin();
find = em.find(LogicTransaction.class, 1l);
assertTrue("LT was not null. find=" + find, find == null);
em.getTransaction().commit();
em.getTransaction().begin();
emo.equilibrate(5l, Arrays.asList(new Integer[]{1, 2, 7, 8}));
em.getTransaction().commit();
em.getTransaction().begin();
find = new LogicTransactionEao(em).findByDossierId(5l);
assertTrue("LT was Null.", find != null);
assertTrue("Size was not 4. find=" + find, find.getUnits().size() == 4);
assertTrue("It wasnt All Units correctly in the Transaction. find="
+ find, find.getUnits().containsAll(Arrays.asList(new StockUnit[]{stockUnit1, stockUnit2, stockUnit7, stockUnit8})));
em.getTransaction().commit();
}
}