package org.springframework.webflow.expression.el; import java.util.List; import javax.el.ELContext; import javax.el.ELResolver; import junit.framework.TestCase; import org.springframework.binding.expression.el.DefaultELContext; import org.springframework.binding.expression.el.DefaultELResolver; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.test.MockFlowSession; import org.springframework.webflow.test.MockRequestContext; public abstract class FlowDependentELResolverTestCase extends TestCase { protected ELContext context; public void setUp() { context = new DefaultELContext(new DefaultELResolver(getCustomResolvers()), null, null); } public void tearDown() { RequestContextHolder.setRequestContext(null); } public void testGetType_NoActiveFlow() { assertNull("getType should return null when no flow is active", context.getELResolver().getType(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testGetValue_NoActiveFlow() { assertNull("getValue should return null when no flow is active", context.getELResolver().getValue(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testIsReadOnly_NoActiveFlow() { assertFalse("isReadOnly should return false when no flow is active", context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testSetValue_NoActiveFlow() { context.getELResolver().setValue(context, null, getBaseVariable(), null); assertFalse("setValue should be a no-op when no flow is active", context.isPropertyResolved()); } protected void initView(MockRequestContext requestContext) { ((MockFlowSession) requestContext.getFlowExecutionContext().getActiveSession()).setState(new ViewState( requestContext.getRootFlow(), "view", new ViewFactory() { public View getView(RequestContext context) { throw new UnsupportedOperationException("Auto-generated method stub"); } })); } protected abstract String getBaseVariable(); protected abstract List<ELResolver> getCustomResolvers(); }