package com.processpuzzle.litest.template;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mockrunner.mock.web.WebMockObjectFactory;
import com.processpuzzle.application.control.control.CommandInterface;
import com.processpuzzle.commons.generics.GenericTypeParameterInvestigator;
import com.processpuzzle.litest.template.GenericTestEnvironment;
import com.processpuzzle.sharedfixtures.domaintier.MockProcessPuzzleContext;
import com.processpuzzle.sharedfixtures.domaintier.RequestContextInMockedApplicationFixture;
public class FrontCommandTestEnvironment<S extends CommandInterface, F extends FrontCommandTestFixture<S>> extends GenericTestEnvironment<S> {
protected F commandTestFixture;
protected Class<F> commandTestFixtureClass;
protected MockServletRunner servletRunner;
@SuppressWarnings( "unchecked" )
public FrontCommandTestEnvironment( Class<F> commandTestFixtureClass ){
super();
this.commandTestFixtureClass = commandTestFixtureClass;
this.sutClass = (Class<S>) GenericTypeParameterInvestigator.getTypeParameter( commandTestFixtureClass, 0 );
}
//Public accessors and mutators
public ServletContext getServletContext() { return servletRunner.getServletContext(); }
public HttpServletRequest getRequest() { return servletRunner.getRequest(); }
public HttpServletResponse getResponse() { return servletRunner.getResponse(); }
public WebMockObjectFactory getWebMockObjectFactory() { return servletRunner.getWebMockObjectFactory(); }
//Protected, private helper methods
@Override protected void configureAfterSutInstantiation() {
}
@Override protected void configureBeforeSutInstantiation() {
servletRunner = this.getFixture( MockServletRunner.class );
commandTestFixture = this.getFixture( commandTestFixtureClass );
}
@Override protected void defineComponentTypes() {
componentTypes.add( RequestContextInMockedApplicationFixture.class );
componentTypes.add( MockProcessPuzzleContext.class );
componentTypes.add( MockServletRunner.class );
componentTypes.add( commandTestFixtureClass );
}
@Override protected void releaseResources() {
}
}