package org.springframework.webflow.config;
import junit.framework.TestCase;
import org.springframework.context.ApplicationContext;
import org.springframework.webflow.definition.FlowDefinition;
import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException;
import org.springframework.webflow.definition.registry.FlowDefinitionRegistry;
import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException;
public abstract class AbstractFlowRegistryConfigurationTests extends TestCase {
protected ApplicationContext context;
protected FlowDefinitionRegistry registry;
public void setUp() {
this.context = initApplicationContext();
this.registry = (FlowDefinitionRegistry) context.getBean("flowRegistry");
}
protected abstract ApplicationContext initApplicationContext();
public void testRegistryFlowLocationsPopulated() {
FlowDefinition flow = registry.getFlowDefinition("flow");
assertEquals("flow", flow.getId());
assertEquals("bar", flow.getAttributes().get("foo"));
assertEquals(new Integer(2), flow.getAttributes().get("bar"));
}
public void testRegistryFlowLocationPatternsPopulated() {
FlowDefinition flow1 = registry.getFlowDefinition("flow1");
assertEquals("flow1", flow1.getId());
FlowDefinition flow2 = registry.getFlowDefinition("flow2");
assertEquals("flow2", flow2.getId());
}
public void testRegistryFlowBuildersPopulated() {
FlowDefinition foo = registry.getFlowDefinition("foo");
assertEquals("foo", foo.getId());
}
public void testRegistryFlowBuildersPopulatedWithId() {
FlowDefinition foo = registry.getFlowDefinition("foo2");
assertEquals("foo2", foo.getId());
}
public void testRegistryFlowBuildersPopulatedWithAttributes() {
FlowDefinition foo3 = registry.getFlowDefinition("foo3");
assertEquals("foo3", foo3.getId());
assertEquals("bar", foo3.getAttributes().get("foo"));
assertEquals(new Integer(2), foo3.getAttributes().get("bar"));
}
public void testNoSuchFlow() {
try {
registry.getFlowDefinition("not there");
} catch (NoSuchFlowDefinitionException e) {
}
}
public void testBogusPath() {
try {
registry.getFlowDefinition("bogus");
fail("Should have failed");
} catch (FlowDefinitionConstructionException e) {
}
}
public void testParent() {
assertNotNull(registry.getParent());
assertEquals("parentFlow", registry.getParent().getFlowDefinition("parentFlow").getId());
}
}