package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestControlContext; public class ViewVariableTests extends TestCase { private boolean restoreCalled; public void testCreateVariable() { ViewVariable var = new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } }); Flow flow = new Flow("flow"); ViewState view = new ViewState(flow, "view", new StubViewFactory()); MockRequestControlContext context = new MockRequestControlContext(flow); view.enter(context); var.create(context); assertEquals("bar", context.getViewScope().get("foo")); } public void testDestroyVariable() { ViewVariable var = new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } }); Flow flow = new Flow("flow"); ViewState view = new ViewState(flow, "view", new StubViewFactory()); MockRequestControlContext context = new MockRequestControlContext(flow); view.enter(context); var.create(context); assertEquals("bar", context.getViewScope().get("foo")); var.destroy(context); assertFalse(context.getViewScope().contains("foo")); } public void testRestoreVariable() { ViewVariable var = new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { restoreCalled = true; assertEquals("bar", value); } }); Flow flow = new Flow("flow"); ViewState view = new ViewState(flow, "view", new StubViewFactory()); MockRequestControlContext context = new MockRequestControlContext(flow); view.enter(context); var.create(context); var.restore(context); assertEquals("bar", context.getViewScope().get("foo")); assertTrue(restoreCalled); } }