package com.processpuzzle.litest.template;
import com.processpuzzle.commons.generics.GenericTypeParameterInvestigator;
import com.processpuzzle.litest.fixture.TestFixture;
import com.processpuzzle.litest.testcase.GenericTestSuite;
import com.processpuzzle.litest.testcase.NoSuchFixtureDefinitionException;
public abstract class ApplicationObjectTestTemplate<S, F extends ApplicationObjectTestFixture<S>> extends GenericTestSuite<S,F>{
private Class<F> domainObjectFixtureClass;
protected ApplicationObjectTestTemplate( String fixtureContainerConfigurationPath ) {
super( fixtureContainerConfigurationPath, ApplicationObjectTestEnvironment.class );
}
@SuppressWarnings("unchecked") @Override
public <B extends TestFixture<?>> B acquireFixture( Class<B> requiredType ) throws NoSuchFixtureDefinitionException {
if( requiredType.equals( ApplicationObjectTestEnvironment.class ))
return (B) createCompositeDomainFixture();
else return super.acquireFixture( requiredType );
}
@SuppressWarnings("unchecked")
public ApplicationObjectTestEnvironment<F, S> createCompositeDomainFixture() {
domainObjectFixtureClass = (Class<F>) GenericTypeParameterInvestigator.getTypeParameter( getClass(), 1 );
return new ApplicationObjectTestEnvironment<F, S>( domainObjectFixtureClass );
}
}