package eu.ggnet.dwoss.redtape.emo; import eu.ggnet.dwoss.redtape.emo.DossierEmo; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.tools.Diagnostic; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import eu.ggnet.dwoss.redtape.assist.RedTapePu; import eu.ggnet.dwoss.redtape.eao.DossierEao; import eu.ggnet.dwoss.redtape.entity.Document; import eu.ggnet.dwoss.redtape.entity.DocumentHistory; import eu.ggnet.dwoss.redtape.entity.Dossier; import eu.ggnet.dwoss.redtape.entity.Position; import eu.ggnet.dwoss.redtape.entity.PositionBuilder; import eu.ggnet.dwoss.rules.PositionType; import eu.ggnet.dwoss.rules.DocumentType; import static org.junit.Assert.*; /** * * @author pascal.perau */ @Category(Diagnostic.class) public class DossierEmoIT { private EntityManager em; private EntityManagerFactory emf; @Before public void setUp() { emf = Persistence.createEntityManagerFactory(RedTapePu.NAME, RedTapePu.JPA_IN_MEMORY); em = emf.createEntityManager(); } @After public void tearDown() { em.close(); emf.close(); } @Test public void testRequest() { DossierEmo dossierEmo = new DossierEmo(em); em.getTransaction().begin(); Document document = dossierEmo.requestActiveDocumentBlock(1, "Addresse", "Comment", "Test"); assertNotNull(document); Dossier dossier = document.getDossier(); assertTrue(dossier.getId() > 0); assertNotNull(dossier.getActiveDocuments()); assertFalse(dossier.getActiveDocuments().isEmpty()); em.getTransaction().commit(); em.getTransaction().begin(); Document document2 = dossierEmo.requestActiveDocumentBlock(1, "Addresse", "Comment", "Test"); assertNotNull(document2); Dossier dossier2 = document2.getDossier(); assertEquals(dossier.getId(),dossier2.getId()); em.getTransaction().commit(); } @Test public void testRemoveHistory() { DossierEmo dossierEmo = new DossierEmo(em); em.getTransaction().begin(); Document last = dossierEmo.requestActiveDocumentBlock(1, "Addresse", "Comment", "Test"); last.setActive(false); Dossier dossier = last.getDossier(); for (int i = 0; i < 20; i++) { Document d = new Document(DocumentType.BLOCK, Document.Directive.NONE, new DocumentHistory("JUnit", "JUnit")); d.append(new PositionBuilder().setType(PositionType.COMMENT).setName("JUnit").setDescription("JUnit").createPosition()); d.setActive(false); d.setInvoiceAddress(last.getInvoiceAddress()); d.setShippingAddress(last.getShippingAddress()); d.setPredecessor(last); dossier.add(d); em.persist(d); last = d; } last.setActive(true); em.getTransaction().commit(); em.getTransaction().begin(); dossier = new DossierEao(em).findById(dossier.getId()); assertTrue(dossier.getDocuments().size() > 10); dossierEmo.removeHistoryFromBlock(dossier.getId()); em.getTransaction().commit(); em.close(); em = emf.createEntityManager(); em.getTransaction().begin(); dossier = new DossierEao(em).findById(dossier.getId()); assertEquals(1,dossier.getDocuments().size()); em.getTransaction().commit(); } }