diff --git a/spring-faces/src/test/java/org/springframework/faces/webflow/FlowViewResponseStateManagerTests.java b/spring-faces/src/test/java/org/springframework/faces/webflow/FlowViewResponseStateManagerTests.java new file mode 100644 index 00000000..4ba74dc0 --- /dev/null +++ b/spring-faces/src/test/java/org/springframework/faces/webflow/FlowViewResponseStateManagerTests.java @@ -0,0 +1,74 @@ +package org.springframework.faces.webflow; + +import junit.framework.TestCase; + +import org.easymock.EasyMock; +import org.springframework.web.context.support.StaticWebApplicationContext; +import org.springframework.webflow.core.collection.AttributeMap; +import org.springframework.webflow.core.collection.LocalAttributeMap; +import org.springframework.webflow.execution.FlowExecutionContext; +import org.springframework.webflow.execution.RequestContext; +import org.springframework.webflow.execution.RequestContextHolder; +import org.springframework.webflow.test.MockFlowExecutionKey; + +public class FlowViewResponseStateManagerTests extends TestCase { + + private JSFMockHelper jsfMock = new JSFMockHelper(); + + private FlowViewResponseStateManager responseStateManager; + + private RequestContext requestContext; + private FlowExecutionContext flowExecutionContext; + + protected void setUp() throws Exception { + jsfMock.setUp(); + StaticWebApplicationContext webappContext = new StaticWebApplicationContext(); + webappContext.setServletContext(jsfMock.servletContext()); + + requestContext = EasyMock.createMock(RequestContext.class); + RequestContextHolder.setRequestContext(requestContext); + flowExecutionContext = EasyMock.createMock(FlowExecutionContext.class); + + responseStateManager = new FlowViewResponseStateManager(null); + } + + protected void tearDown() throws Exception { + jsfMock.tearDown(); + } + + public void testWriteFlowSerializedView() throws Exception { + EasyMock.expect(flowExecutionContext.getKey()).andReturn(new MockFlowExecutionKey("e1s1")); + AttributeMap viewMap = new LocalAttributeMap(); + EasyMock.expect(requestContext.getViewScope()).andStubReturn(viewMap); + EasyMock.expect(requestContext.getFlowExecutionContext()).andReturn(flowExecutionContext); + EasyMock.replay(requestContext, flowExecutionContext); + + FlowSerializedView flowSerializedView = new FlowSerializedView("viewId", null, null); + responseStateManager.writeState(jsfMock.facesContext(), flowSerializedView); + + assertEquals(flowSerializedView, viewMap.get(FlowViewStateManager.SERIALIZED_VIEW_STATE)); + assertEquals( + "", + jsfMock.contentAsString()); + EasyMock.verify(flowExecutionContext, requestContext); + } + + public void testGetState() throws Exception { + Object treeStructure = new Object(); + Object componentState = new Object(); + FlowSerializedView flowSerializedView = new FlowSerializedView("viewId", treeStructure, componentState); + + LocalAttributeMap viewMap = new LocalAttributeMap(); + viewMap.put(FlowViewStateManager.SERIALIZED_VIEW_STATE, flowSerializedView); + EasyMock.expect(requestContext.getViewScope()).andStubReturn(viewMap); + EasyMock.replay(requestContext); + + Object state = responseStateManager.getState(jsfMock.facesContext(), "viewId"); + + assertTrue(state instanceof Object[]); + assertSame(treeStructure, ((Object[]) state)[0]); + assertSame(componentState, ((Object[]) state)[1]); + EasyMock.verify(requestContext); + } + +} diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/ViewStateTests.java b/spring-webflow/src/test/java/org/springframework/webflow/engine/ViewStateTests.java index 70157a5f..fc442dc8 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/engine/ViewStateTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/ViewStateTests.java @@ -297,6 +297,7 @@ public class ViewStateTests extends TestCase { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); + state.setRedirectInSameState(Boolean.TRUE); Transition t = new Transition(on("submit"), null); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); @@ -319,6 +320,7 @@ public class ViewStateTests extends TestCase { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); + state.setRedirectInSameState(Boolean.TRUE); Transition t = new Transition(on("submit"), null); TestAction action = new TestAction(); t.setExecutionCriteria(new ActionTransitionCriteria(action));