import javax.persistence.EntityManager;
import javax.transaction.UserTransaction;
+import junit.framework.AssertionFailedError;
+
import org.dbunit.IDatabaseTester;
import org.dbunit.dataset.ITable;
import org.junit.After;
assertEquals(1, dbutils.getTableSize("XYZ_MYENTITY"));
}
-
+
@Test
- public void testEntityPersistenceWithContextualEntityManager() throws Exception {
+ public void testEntityPersistenceWithContextualEntityManager()
+ throws Exception {
// Use the JPA builder to create a transaction scoped entity manager for
// as and execute the
// unit of work.
builder.begin();
- EntityManager em = builder.getContextualEntityManager();
+ EntityManager em = builder.getContextualEntityManager();
MyEntity entity = new MyEntity("a", "b");
em.persist(entity);
assertEquals(1, dbutils.getTableSize("XYZ_MYENTITY"));
}
-
+
@Test
public void testEntityPersistenceWithUserTransactions() throws Exception {
- SimpleTransactionManager manager = new SimpleTransactionManager(new DefaultUserTransactionFactory());
+ SimpleTransactionManager manager = new SimpleTransactionManager(
+ new DefaultUserTransactionFactory());
manager.addResource(jpaTester.getJpaBuilder());
-
+
UserTransaction transaction = manager.getTransaction();
transaction.begin();
- EntityManager em = builder.getContextualEntityManager();
+ EntityManager em = builder.getContextualEntityManager();
MyEntity entity = new MyEntity("a", "b");
em.persist(entity);
assertEquals(1, dbutils.getTableSize("XYZ_MYENTITY"));
}
-
- @Test
+
+ @Test
public void testTransactionCommittedCallback() throws Exception {
TransactionResultCallback callback = mock(TransactionResultCallback.class);
builder.execute(new JpaUnitOfWork<Void>() {
verify(callback).status(TransactionResult.COMMIT);
verifyNoMoreInteractions(callback);
}
-
- @Test
- public void testTransactionMarkedForRollback() throws Exception {
+
+ @Test
+ public void testTransactionMarkedForRollback() throws Exception {
TransactionResultCallback callback = mock(TransactionResultCallback.class);
builder.execute(new JpaUnitOfWork<Void>() {
verify(callback).status(TransactionResult.ROLLBACK);
verifyNoMoreInteractions(callback);
}
-
- @Test
- public void testTransactionRolledBack() throws Exception {
+
+ @Test
+ public void testTransactionRolledBack() throws Exception {
TransactionResultCallback callback = mock(TransactionResultCallback.class);
builder.execute(new JpaUnitOfWork<Void>() {
verify(callback).status(TransactionResult.UNKNOWN);
verifyNoMoreInteractions(callback);
}
-
- @Test
- public void testTransactionCommitted() throws Exception {
+
+ @Test
+ public void testTransactionCommitted() throws Exception {
TransactionResultCallback callback = mock(TransactionResultCallback.class);
builder.execute(new JpaUnitOfWork<Void>() {
verify(callback).status(TransactionResult.UNKNOWN);
verifyNoMoreInteractions(callback);
}
-
-
+
+ @Test(expected = AssertionFailedError.class)
+ public void testTransactionNotCommittedUnexpectedly() throws Exception {
+ builder.execute(new JpaUnitOfWork<Void>() {
+ public Void execute(EntityManager aEm) {
+ MyEntity entity = new MyEntity("a", "b");
+ aEm.persist(entity);
+ aEm.getTransaction().rollback();
+ return null;
+ }
+ });
+ }
+
}