package org.springframework.webflow.engine.builder;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.springframework.webflow.engine.Flow;
import org.springframework.webflow.test.MockFlowBuilderContext;
public class FlowAssemblerTests extends TestCase {
private FlowBuilder builder;
private FlowAssembler assembler;
private FlowBuilderContext builderContext;
protected void setUp() {
builder = EasyMock.createMock(FlowBuilder.class);
builderContext = new MockFlowBuilderContext("search");
assembler = new FlowAssembler(builder, builderContext);
}
public void testAssembleFlow() {
builder.init(builderContext);
builder.dispose();
builder.buildVariables();
builder.buildInputMapper();
builder.buildStartActions();
builder.buildStates();
builder.buildGlobalTransitions();
builder.buildEndActions();
builder.buildOutputMapper();
builder.buildExceptionHandlers();
EasyMock.expect(builder.getFlow()).andReturn(new Flow("search"));
EasyMock.replay(new Object[] { builder });
Flow flow = assembler.assembleFlow();
assertEquals("search", flow.getId());
EasyMock.verify(new Object[] { builder });
}
public void testDisposeCalledOnException() {
builder.init(builderContext);
EasyMock.expectLastCall().andThrow(new IllegalArgumentException());
builder.dispose();
EasyMock.replay(new Object[] { builder });
try {
assembler.assembleFlow();
fail("Should have failed");
} catch (IllegalArgumentException e) {
EasyMock.verify(new Object[] { builder });
}
}
}