Spring Web Flow

org.springframework.webflow.test.execution
Class AbstractExternalizedFlowExecutionTests

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by org.springframework.webflow.test.execution.AbstractFlowExecutionTests
              extended by org.springframework.webflow.test.execution.AbstractExternalizedFlowExecutionTests
All Implemented Interfaces:
junit.framework.Test
Direct Known Subclasses:
AbstractXmlFlowExecutionTests

public abstract class AbstractExternalizedFlowExecutionTests
extends AbstractFlowExecutionTests

Base class for flow integration tests that verify an externalized flow definition executes as expected. Supports caching of the flow definition built from an externalized resource to speed up test execution.

Author:
Keith Donald, Scott Andrews

Constructor Summary
AbstractExternalizedFlowExecutionTests()
          Constructs a default externalized flow execution test.
AbstractExternalizedFlowExecutionTests(java.lang.String name)
          Constructs an externalized flow execution test with given name.
 
Method Summary
protected  Flow buildFlow()
          Factory method to assemble a flow definition from a resource.
protected  void configureFlowBuilderContext(MockFlowBuilderContext builderContext)
          Subclasses may override this hook to customize the builder context for the flow being tested.
protected abstract  FlowBuilder createFlowBuilder(FlowDefinitionResource resource)
          Create the flow builder to build the flow at the specified resource location.
protected  org.springframework.core.io.ResourceLoader createResourceLoader()
          Returns the ResourceLoader used by the FlowDefinitionResourceFactory to load flow resources from a path.
protected  Flow getFlow()
          Returns the flow definition being tested as a Flow implementation.
protected  FlowDefinition getFlowDefinition()
          Returns the flow definition to be tested.
protected  FlowDefinitionRegistry getFlowDefinitionRegistry()
          Returns a reference to the flow definition registry used by the flow being tested to load subflows.
protected abstract  FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory)
          Get the resource defining the flow to be tested.
protected  FlowDefinitionResourceFactory getResourceFactory()
          Returns the factory used to create pointers to externalized flow definition resources.
protected  boolean isCacheFlowDefinition()
          Returns if flow definition caching is turned on.
protected  void setCacheFlowDefinition(boolean cacheFlowDefinition)
          Sets the flag indicating if the flow definition built from an externalized resource as part of this test should be cached.
protected  void setFlowExecutionAttributes(AttributeMap<java.lang.Object> executionAttributes)
          Sets system attributes to be associated with the flow execution the next time one is started.
protected  void setFlowExecutionListener(FlowExecutionListener executionListener)
          Set a single listener to be attached to the flow execution the next time one is started by this test.
protected  void setFlowExecutionListeners(FlowExecutionListener[] executionListeners)
          Set the listeners to be attached to the flow execution the next time one is started.
 
Methods inherited from class org.springframework.webflow.test.execution.AbstractFlowExecutionTests
assertActiveFlowEquals, assertCurrentStateEquals, assertFlowExecutionActive, assertFlowExecutionEnded, assertFlowExecutionOutcomeEquals, assertResponseWrittenEquals, createFlowExecutionFactory, getConversationAttribute, getConversationScope, getFlowAttribute, getFlowExecution, getFlowExecutionFactory, getFlowExecutionOutcome, getFlowScope, getRequiredConversationAttribute, getRequiredConversationAttribute, getRequiredFlowAttribute, getRequiredFlowAttribute, getRequiredViewAttribute, getRequiredViewAttribute, getViewAttribute, getViewScope, resumeFlow, setCurrentState, startFlow, startFlow, updateFlowExecution
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, setUp, tearDown, toString
 
Methods inherited from class junit.framework.Assert
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail, failNotEquals, failNotSame, failSame
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractExternalizedFlowExecutionTests

public AbstractExternalizedFlowExecutionTests()
Constructs a default externalized flow execution test.

See Also:
TestCase.setName(String)

AbstractExternalizedFlowExecutionTests

public AbstractExternalizedFlowExecutionTests(java.lang.String name)
Constructs an externalized flow execution test with given name.

Parameters:
name - the name of the test
Method Detail

isCacheFlowDefinition

protected boolean isCacheFlowDefinition()
Returns if flow definition caching is turned on.


setCacheFlowDefinition

protected void setCacheFlowDefinition(boolean cacheFlowDefinition)
Sets the flag indicating if the flow definition built from an externalized resource as part of this test should be cached. Default is false.


setFlowExecutionAttributes

protected void setFlowExecutionAttributes(AttributeMap<java.lang.Object> executionAttributes)
Sets system attributes to be associated with the flow execution the next time one is started. by this test. Useful for assigning attributes that influence flow execution behavior.

Parameters:
executionAttributes - the system attributes to assign

setFlowExecutionListener

protected void setFlowExecutionListener(FlowExecutionListener executionListener)
Set a single listener to be attached to the flow execution the next time one is started by this test. Useful for attaching a listener that does test assertions during the execution of the flow.

Parameters:
executionListener - the listener to attach

setFlowExecutionListeners

protected void setFlowExecutionListeners(FlowExecutionListener[] executionListeners)
Set the listeners to be attached to the flow execution the next time one is started. by this test. Useful for attaching listeners that do test assertions during the execution of the flow.

Parameters:
executionListeners - the listeners to attach

getResourceFactory

protected FlowDefinitionResourceFactory getResourceFactory()
Returns the factory used to create pointers to externalized flow definition resources.

Returns:
the resource factory

createResourceLoader

protected org.springframework.core.io.ResourceLoader createResourceLoader()
Returns the ResourceLoader used by the FlowDefinitionResourceFactory to load flow resources from a path. Subclasses may override to customize the resource loader used.

Returns:
the resource loader
See Also:
getResourceFactory()

getFlowDefinition

protected final FlowDefinition getFlowDefinition()
Description copied from class: AbstractFlowExecutionTests
Returns the flow definition to be tested. Subclasses must implement.

Specified by:
getFlowDefinition in class AbstractFlowExecutionTests
Returns:
the flow definition

getFlow

protected final Flow getFlow()
Returns the flow definition being tested as a Flow implementation. Useful if you need to do specific assertions against the configuration of the implementation.


buildFlow

protected final Flow buildFlow()
Factory method to assemble a flow definition from a resource. Called by getFlowDefinition() to create the "main" flow to test. May also be called by subclasses to create subflow definitions whose executions should also be exercised by this test.

Returns:
the built flow definition, ready for execution

configureFlowBuilderContext

protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext)
Subclasses may override this hook to customize the builder context for the flow being tested. Useful for registering mock subflows or other flow builder services. By default, this method does nothing.

Parameters:
builderContext - the mock flow builder context to configure

getFlowDefinitionRegistry

protected FlowDefinitionRegistry getFlowDefinitionRegistry()
Returns a reference to the flow definition registry used by the flow being tested to load subflows. Allows late registration of dependent subflows on a per test-case basis. This is an alternative to registering such subflows upfront in configureFlowBuilderContext(MockFlowBuilderContext).

Returns:
the flow definition registry

getResource

protected abstract FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory)
Get the resource defining the flow to be tested.

Parameters:
resourceFactory - a helper for constructing the resource to be tested
Returns:
the flow definition resource

createFlowBuilder

protected abstract FlowBuilder createFlowBuilder(FlowDefinitionResource resource)
Create the flow builder to build the flow at the specified resource location.

Parameters:
resource - the resource location of the flow definition
Returns:
the flow builder that can build the flow definition

Spring Web Flow