package com.processpuzzle.sharedfixtures.domaintier;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.processpuzzle.address.domain.CountryFactory;
import com.processpuzzle.address.domain.SettlementFactory;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.configuration.domain.PropertyKeys;
import com.processpuzzle.application.domain.Application;
import com.processpuzzle.application.security.domain.UserFactory;
import com.processpuzzle.artifact.domain.DefaultArtifactRepository;
import com.processpuzzle.litest.fixture.GenericTestFixture;
import com.processpuzzle.litest.fixture.TransientFreshFixture;
import com.processpuzzle.persistence.domain.TestEntityRepository;
public class MockProcessPuzzleContext extends GenericTestFixture<ProcessPuzzleContext> implements TransientFreshFixture<ProcessPuzzleContext> {
private UserFactory userFactory;
private CountryFactory countryFactory;
private RequestContextInMockedApplicationFixture mockedReqestContext;
private Application mockApplication;
private ProcessPuzzleContext mockApplicationContext;
private DefaultArtifactRepository mockDefaultArtifactRepository;
private TestEntityRepository mockTestEntitityRepository;
private SettlementFactory settlementFactory;
public MockProcessPuzzleContext( RequestContextInMockedApplicationFixture mockedReqestContext ) {
super();
this.mockedReqestContext = mockedReqestContext;
}
public Application getApplication() { return mockApplication; }
public ProcessPuzzleContext getApplicationContext() { return mockApplicationContext; }
public DefaultArtifactRepository getMockDefaultArtifactRepository() { return mockDefaultArtifactRepository; }
public TestEntityRepository getMockTestEntityRepository() { return mockTestEntitityRepository; }
@Override
protected void configureAfterSutInstantiation() {
}
@Override
protected void configureBeforeSutInstantiation() {
mockApplicationContext = mockedReqestContext.getApplicationContext();
stubApplication();
stubApplicationContext();
}
@Override
protected ProcessPuzzleContext instantiateSUT() {
return mockApplicationContext;
}
protected void stubApplication() {
mockApplication = mockedReqestContext.getApplication();
}
protected void stubApplicationContext() {
when( mockApplicationContext.getProperty( PropertyKeys.PRRODUCT_CATALOG_SCHEMA_PATH.getDefaultKey() )).thenReturn( "classpath:ProductCatalog.xsd" );
stubFactories();
stubRepositories();
}
protected void stubFactories() {
userFactory = mock( UserFactory.class );
when( mockApplicationContext.getEntityFactory( UserFactory.class )).thenReturn( userFactory );
countryFactory = mock( CountryFactory.class );
when( mockApplicationContext.getEntityFactory( CountryFactory.class )).thenReturn( countryFactory );
settlementFactory = mock( SettlementFactory.class );
when( mockApplicationContext.getEntityFactory( SettlementFactory.class )).thenReturn( settlementFactory );
}
protected void stubRepositories() {
mockTestEntitityRepository = mock( TestEntityRepository.class );
when( mockApplicationContext.getRepository( TestEntityRepository.class )).thenReturn( mockTestEntitityRepository );
mockDefaultArtifactRepository = mock( DefaultArtifactRepository.class );
when( mockApplicationContext.getRepository( DefaultArtifactRepository.class )).thenReturn( mockDefaultArtifactRepository );
}
@Override
protected void releaseResources() {
// TODO Auto-generated method stub
}
}