package com.processpuzzle.fitnesse.persistence;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import com.processpuzzle.commons.persistence.PersistentObject;
import com.processpuzzle.commons.persistence.RepositoryResultSet;
import com.processpuzzle.litest.fixture.GenericTestFixture;
import com.processpuzzle.litest.fixture.TransientFreshFixture;
import com.processpuzzle.persistence.domain.SimpleResultSet;
import com.processpuzzle.persistence.domain.TestEntity;
import com.processpuzzle.persistence.domain.TestEntityRepository;
import com.processpuzzle.sharedfixtures.domaintier.MockProcessPuzzleContext;
public class InstantiatedRepositoryTester extends GenericTestFixture<RepositoryTester> implements TransientFreshFixture<RepositoryTester> {
public static final String REPOSITORY_METHOD_NAME = "findTestEntityByName";
public static final String METHOD_PARAMETER_TYPE = "String";
public static final String METHOD_PARAMETER_NAME = "name";
public static final String METHOD_PARAMETER_VALUE = "blabla";
public static final String METHOD_PARAMETERS = METHOD_PARAMETER_NAME + ":" + METHOD_PARAMETER_TYPE + " = " + METHOD_PARAMETER_VALUE;
private static final String REPOSITORY_CLASS_NAME = TestEntityRepository.class.getName();
private MockProcessPuzzleContext mockApplicationContext;
private TestEntity foundEntity;
private RepositoryResultSet<? extends PersistentObject> expectedForFindTestEntityByName;
public InstantiatedRepositoryTester( MockProcessPuzzleContext mockApplicationContext ) {
super();
this.mockApplicationContext = mockApplicationContext;
}
public RepositoryResultSet<? extends PersistentObject> getExpectedForFindTestEntityByName() {
return expectedForFindTestEntityByName;
}
public TestEntity getFoundEntity() {
return foundEntity;
}
public String getRepositoryClassName() {
return REPOSITORY_CLASS_NAME;
}
@Override
protected void configureAfterSutInstantiation() {
foundEntity = mock( TestEntity.class );
TestEntityRepository mockTestEntityRepository = mockApplicationContext.getMockTestEntityRepository();
when( mockTestEntityRepository.findTestEntityByName( METHOD_PARAMETER_VALUE )).thenReturn( foundEntity );
// when( mockTestEntityRepository.getSupportedAggregateRootClass() ).thenReturn( (Class<? extends AggregateRoot>) TestEntity.class );
List<TestEntity> resultList = new ArrayList<TestEntity>();
resultList.add( foundEntity );
expectedForFindTestEntityByName = new SimpleResultSet<TestEntity>( resultList );
}
@Override
protected RepositoryTester instantiateSUT() {
return new RepositoryTester();
}
@Override
protected void configureBeforeSutInstantiation() {
// TODO Auto-generated method stub
}
@Override
protected void releaseResources() {
// TODO Auto-generated method stub
}
}