package com.softwaremill.common.dbtest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.softwaremill.common.dbtest.util.DbMode; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import static org.assertj.core.api.Assertions.assertThat; /** * @author Pawel Stawicki * @since 7/27/12 1:59 PM */ public class DbConnectorTest { private static final long ID = 1L; private static final long ID2 = 2L; private EntityManagerFactory emf; @BeforeClass private void createEntityManagerFactoryFromDbConnector() { DbConnector connector = new DbConnector(); connector.getConfiguration().addAnnotatedClass(TestEntity1.class); connector.setCompatibilityMode(DbMode.DB2); emf = connector.createEntityManagerFactory(); } @Test public void shouldNotSeeChangesInUncommitedTransactionFromAnotherTransaction() { // Given EntityManager em1 = emf.createEntityManager(); EntityManager em2 = emf.createEntityManager(); // When em1.getTransaction().begin(); TestEntity1 entity = new TestEntity1(); entity.setId(ID); em1.persist(entity); em2.getTransaction().begin(); TestEntity1 entityFromSecondTransaction = em2.find(TestEntity1.class, ID); // Then assertThat(entityFromSecondTransaction).isNull(); // Cleanup em1.getTransaction().rollback(); em2.getTransaction().rollback(); } @Test public void shouldSeeChangesInCommitedTransactionFromAnotherTransaction() { // Given EntityManager em1 = emf.createEntityManager(); EntityManager em2 = emf.createEntityManager(); // When em1.getTransaction().begin(); TestEntity1 entity = new TestEntity1(); entity.setId(ID2); em1.persist(entity); em1.getTransaction().commit(); em2.getTransaction().begin(); TestEntity1 entityFromSecondTransaction = em2.find(TestEntity1.class, ID2); // Then assertThat(entityFromSecondTransaction).isNotNull(); // Cleanup em2.getTransaction().rollback(); } }