/* * Created on Mar 20, 2005 * */ package org.springframework.orm.toplink; import junit.framework.TestCase; import org.aopalliance.intercept.MethodInvocation; import org.easymock.MockControl; import org.springframework.transaction.support.TransactionSynchronizationManager; import oracle.toplink.sessions.Session; /** * @author Juergen Hoeller * @author <a href="mailto:james.x.clark@oracle.com">James Clark</a> * @since 28.04.2005 */ public class TopLinkInterceptorTests extends TestCase { public void testInterceptorWithNoSessionBoundAndNoSynchronizations() throws Throwable { MockControl sessionControl = MockControl.createControl(Session.class); Session session = (Session) sessionControl.getMock(); MockControl methodInvocationControl = MockControl.createControl(MethodInvocation.class); MethodInvocation methodInvocation = (MethodInvocation) methodInvocationControl.getMock(); SessionFactory factory = new SingleSessionFactory(session); TopLinkInterceptor interceptor = new TopLinkInterceptor(); interceptor.setSessionFactory(factory); methodInvocation.proceed(); methodInvocationControl.setReturnValue(null, 1); session.release(); sessionControl.setVoidCallable(1); methodInvocationControl.replay(); sessionControl.replay(); try { interceptor.invoke(methodInvocation); } catch (Throwable t) { System.out.println(t); t.printStackTrace(); fail(); } assertFalse(TransactionSynchronizationManager.hasResource(factory)); sessionControl.verify(); methodInvocationControl.verify(); sessionControl.verify(); } public void testInterceptorWithNoSessionBoundAndSynchronizationsActive() { MockControl sessionControl = MockControl.createControl(Session.class); Session session = (Session) sessionControl.getMock(); MockControl methodInvocationControl = MockControl.createControl(MethodInvocation.class); MethodInvocation methodInvocation = (MethodInvocation) methodInvocationControl.getMock(); SessionFactory factory = new SingleSessionFactory(session); TopLinkInterceptor interceptor = new TopLinkInterceptor(); interceptor.setSessionFactory(factory); try { methodInvocation.proceed(); } catch (Throwable e) { fail(); } methodInvocationControl.setReturnValue(null, 1); methodInvocationControl.replay(); sessionControl.replay(); TransactionSynchronizationManager.initSynchronization(); try { interceptor.invoke(methodInvocation); } catch (Throwable t) { fail(); } assertTrue(TransactionSynchronizationManager.hasResource(factory)); assertTrue(TransactionSynchronizationManager.getSynchronizations().size() == 1); TransactionSynchronizationManager.clearSynchronization(); TransactionSynchronizationManager.unbindResource(factory); sessionControl.verify(); methodInvocationControl.verify(); } }