view state tests

This commit is contained in:
Keith Donald
2008-03-08 23:02:24 +00:00
parent a1d9f73ca9
commit 5ac261f6c8

View File

@@ -17,6 +17,7 @@ package org.springframework.webflow.engine;
import junit.framework.TestCase;
import org.springframework.webflow.TestBean;
import org.springframework.webflow.engine.support.DefaultTargetStateResolver;
import org.springframework.webflow.engine.support.EventIdTransitionCriteria;
import org.springframework.webflow.execution.RequestContext;
@@ -48,9 +49,7 @@ public class ViewStateTests extends TestCase {
}
public void restoreReferences(Object value, RequestContext context) {
}
}));
MockRequestControlContext context = new MockRequestControlContext(flow);
state.enter(context);
@@ -81,6 +80,19 @@ public class ViewStateTests extends TestCase {
assertFalse(context.getMockExternalContext().flowExecutionRedirectRequested());
}
public void testEnterViewStateRedirectInPopup() {
Flow flow = new Flow("myFlow");
StubViewFactory viewFactory = new StubViewFactory();
ViewState state = new ViewState(flow, "viewState", viewFactory);
state.setRedirect(Boolean.TRUE);
state.setPopup(true);
MockRequestControlContext context = new MockRequestControlContext(flow);
state.enter(context);
assertFalse("Render called", context.getFlowScope().contains("renderCalled"));
assertTrue(context.getMockExternalContext().flowExecutionRedirectRequested());
assertTrue(context.getMockExternalContext().redirectInPopup());
}
public void testEnterViewStateWithAlwaysRedirectOnPause() {
Flow flow = new Flow("myFlow");
StubViewFactory viewFactory = new StubViewFactory();
@@ -118,6 +130,28 @@ public class ViewStateTests extends TestCase {
assertFalse(context.getFlowExecutionRedirectSent());
}
public void testResumeViewStateRestoreVariables() {
Flow flow = new Flow("myFlow");
StubViewFactory viewFactory = new StubViewFactory();
ViewState state = new ViewState(flow, "viewState", viewFactory);
state.addVariable(new ViewVariable("foo", new VariableValueFactory() {
public Object createInitialValue(RequestContext context) {
return new TestBean();
}
public void restoreReferences(Object value, RequestContext context) {
((TestBean) value).datum1 = "Restored";
}
}));
MockRequestControlContext context = new MockRequestControlContext(flow);
state.enter(context);
context = new MockRequestControlContext(context.getFlowExecutionContext());
state.resume(context);
assertTrue("Render not called", context.getFlowScope().contains("renderCalled"));
assertFalse(context.getFlowExecutionRedirectSent());
assertEquals("Restored", ((TestBean) context.getFlowScope().get("foo")).datum1);
}
public void testResumeViewStateForEvent() {
Flow flow = new Flow("myFlow");
StubViewFactory viewFactory = new StubViewFactory();
@@ -132,6 +166,31 @@ public class ViewStateTests extends TestCase {
assertFalse(context.getFlowExecutionContext().isActive());
}
public void testResumeViewStateForEventDestroyVariables() {
Flow flow = new Flow("myFlow");
StubViewFactory viewFactory = new StubViewFactory();
ViewState state = new ViewState(flow, "viewState", viewFactory);
state.addVariable(new ViewVariable("foo", new VariableValueFactory() {
public Object createInitialValue(RequestContext context) {
return "bar";
}
public void restoreReferences(Object value, RequestContext context) {
}
}));
state.getTransitionSet().add(new Transition(on("submit"), to("next")));
new ViewState(flow, "next", viewFactory);
MockRequestControlContext context = new MockRequestControlContext(flow);
state.enter(context);
assertTrue(context.getFlowScope().contains("foo"));
context = new MockRequestControlContext(context.getFlowExecutionContext());
context.putRequestParameter("_eventId", "submit");
state.resume(context);
assertTrue(context.getFlowExecutionContext().isActive());
assertEquals("next", context.getCurrentState().getId());
assertFalse(context.getFlowScope().contains("foo"));
}
protected TransitionCriteria on(String event) {
return new EventIdTransitionCriteria(event);
}