+
+ @Test
+ public void testTransactionCommittedCallback() throws Exception {
+ TransactionResultCallback callback = mock(TransactionResultCallback.class);
+ builder.execute(new JpaUnitOfWork<Void>() {
+ public Void execute(EntityManager aEm) {
+ MyEntity entity = new MyEntity("a", "b");
+ aEm.persist(entity);
+ return null;
+ }
+ }, callback);
+ verify(callback).status(TransactionResult.COMMIT);
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void testTransactionMarkedForRollback() throws Exception {
+ TransactionResultCallback callback = mock(TransactionResultCallback.class);
+
+ builder.execute(new JpaUnitOfWork<Void>() {
+ public Void execute(EntityManager aEm) {
+ MyEntity entity = new MyEntity("a", "b");
+ aEm.persist(entity);
+ aEm.getTransaction().setRollbackOnly();
+ return null;
+ }
+ }, callback);
+ verify(callback).status(TransactionResult.ROLLBACK);
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void testTransactionRolledBack() throws Exception {
+ TransactionResultCallback callback = mock(TransactionResultCallback.class);
+
+ builder.execute(new JpaUnitOfWork<Void>() {
+ public Void execute(EntityManager aEm) {
+ MyEntity entity = new MyEntity("a", "b");
+ aEm.persist(entity);
+ aEm.getTransaction().rollback();
+ return null;
+ }
+ }, callback);
+ verify(callback).status(TransactionResult.UNKNOWN);
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void testTransactionCommitted() throws Exception {
+ TransactionResultCallback callback = mock(TransactionResultCallback.class);
+
+ builder.execute(new JpaUnitOfWork<Void>() {
+ public Void execute(EntityManager aEm) {
+ MyEntity entity = new MyEntity("a", "b");
+ aEm.persist(entity);
+ aEm.getTransaction().commit();
+ return null;
+ }
+ }, callback);
+ verify(callback).status(TransactionResult.UNKNOWN);
+ verifyNoMoreInteractions(callback);
+ }
+
+