package org.jbpm.persistence.db;
import java.sql.Connection;
import org.jbpm.AbstractJbpmTestCase;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
public class PersistenceDbServiceTest extends AbstractJbpmTestCase {
JbpmConfiguration jbpmConfiguration;
JbpmContext jbpmContext;
protected void setUp() throws Exception {
super.setUp();
jbpmConfiguration = JbpmConfiguration.parseXmlString("<jbpm-configuration/>");
jbpmContext = jbpmConfiguration.createJbpmContext();
jbpmContext.setSessionFactory(new MockSessionFactory());
}
protected void tearDown() throws Exception {
jbpmConfiguration.close();
super.tearDown();
}
// with hibernate transactions
// hibernate creates connections
public void testDefaultCommit() {
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.close();
assertTrue(mockSession.transaction.wasCommitted);
assertFalse(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
}
public void testDefaultRollback() {
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.setRollbackOnly();
jbpmContext.close();
assertFalse(mockSession.transaction.wasCommitted);
assertTrue(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
}
public void testDefaultCommitAfterGetConnection() {
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.getConnection();
jbpmContext.close();
assertTrue(mockSession.transaction.wasCommitted);
assertFalse(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
}
public void testDefaultFollbackAfterGetConnection() {
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.setRollbackOnly();
jbpmContext.getConnection();
jbpmContext.close();
assertFalse(mockSession.transaction.wasCommitted);
assertTrue(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
}
// with hibernate transactions
// given creates connections
public void testGivenConnectionCommit() {
// inject given session
MockConnectionHelper connectionHelper = new MockConnectionHelper();
Connection mockConnection = connectionHelper.createMockConnection();
jbpmContext.setConnection(mockConnection);
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.close();
assertTrue(mockSession.transaction.wasCommitted);
assertFalse(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
assertFalse(connectionHelper.wasClosed);
assertFalse(connectionHelper.wasCommitted);
assertFalse(connectionHelper.wasRolledBack);
}
public void testGivenConnectionRollback() {
// inject given session
MockConnectionHelper connectionHelper = new MockConnectionHelper();
Connection mockConnection = connectionHelper.createMockConnection();
jbpmContext.setConnection(mockConnection);
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.setRollbackOnly();
jbpmContext.close();
assertFalse(mockSession.transaction.wasCommitted);
assertTrue(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
assertFalse(connectionHelper.wasClosed);
assertFalse(connectionHelper.wasCommitted);
assertFalse(connectionHelper.wasRolledBack);
}
public void testGivenConnectionCommitAfterGetConnection() {
// inject given session
MockConnectionHelper connectionHelper = new MockConnectionHelper();
Connection mockConnection = connectionHelper.createMockConnection();
jbpmContext.setConnection(mockConnection);
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.getConnection();
jbpmContext.close();
assertTrue(mockSession.transaction.wasCommitted);
assertFalse(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
assertFalse(connectionHelper.wasClosed);
assertFalse(connectionHelper.wasCommitted);
assertFalse(connectionHelper.wasRolledBack);
}
public void testGivenConnectionRollbackAfterGetConnection() {
// inject given session
MockConnectionHelper connectionHelper = new MockConnectionHelper();
Connection mockConnection = connectionHelper.createMockConnection();
jbpmContext.setConnection(mockConnection);
MockSession mockSession = (MockSession) jbpmContext.getSession();
assertNotNull(mockSession.transaction);
jbpmContext.getConnection();
jbpmContext.setRollbackOnly();
jbpmContext.close();
assertFalse(mockSession.transaction.wasCommitted);
assertTrue(mockSession.transaction.wasRolledBack);
assertTrue(mockSession.isClosed);
assertFalse(mockSession.isFlushed);
assertFalse(connectionHelper.wasClosed);
assertFalse(connectionHelper.wasCommitted);
assertFalse(connectionHelper.wasRolledBack);
}
}