package org.springframework.webflow.engine.model.registry; import junit.framework.TestCase; import org.springframework.core.io.Resource; import org.springframework.webflow.engine.model.FlowModel; public class FlowModelRegistryImplTests extends TestCase { private FlowModelRegistryImpl registry = new FlowModelRegistryImpl(); private FlowModel fooFlow; private FlowModel barFlow; protected void setUp() { fooFlow = new FlowModel(); barFlow = new FlowModel(); } public void testNoSuchFlowDefinition() { try { registry.getFlowModel("bogus"); fail("Should've bombed with NoSuchFlow"); } catch (NoSuchFlowModelException e) { } } public void testRegisterFlow() { registry.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); assertEquals(fooFlow, registry.getFlowModel("foo")); } public void testRegisterFlowSameIds() { registry.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); FlowModel newFlow = new FlowModel(); registry.registerFlowModel("foo", new StaticFlowModelHolder(newFlow)); assertSame(newFlow, registry.getFlowModel("foo")); } public void testRegisterMultipleFlows() { registry.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); registry.registerFlowModel("bar", new StaticFlowModelHolder(barFlow)); assertEquals(fooFlow, registry.getFlowModel("foo")); assertEquals(barFlow, registry.getFlowModel("bar")); } public void testParentHierarchy() { testRegisterMultipleFlows(); FlowModelRegistryImpl child = new FlowModelRegistryImpl(); child.setParent(registry); FlowModel fooFlow = new FlowModel(); child.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); assertSame(fooFlow, child.getFlowModel("foo")); assertEquals(barFlow, child.getFlowModel("bar")); } private static class StaticFlowModelHolder implements FlowModelHolder { private FlowModel model; public StaticFlowModelHolder(FlowModel model) { this.model = model; } public FlowModel getFlowModel() { return model; } public Resource getFlowModelResource() { return null; } public boolean hasFlowModelChanged() { return false; } public void refresh() { } } }