package com.processpuzzle.artifact.domain;
import com.processpuzzle.application.security.domain.User;
import com.processpuzzle.application.security.domain.UserFactory;
import com.processpuzzle.application.security.domain.UserRepository;
import com.processpuzzle.artifact_type.domain.ArtifactType;
import com.processpuzzle.artifact_type.domain.ArtifactTypeFactory;
import com.processpuzzle.artifact_type.domain.ArtifactTypeRepository;
import com.processpuzzle.litest.template.RepositoryTestEnvironment;
import com.processpuzzle.litest.template.RepositoryTestFixture;
import com.processpuzzle.party.artifact.PersonList;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
public class ArtifactFolderRepositoryTestFixture extends RepositoryTestFixture<ArtifactFolderRepository, ArtifactFolder> {
private static final String ARTIFACT_FOLDER_NAME = "ArtifactFolder";
private static final String ARTIFACT_ONE_NAME = "ArtifactOne";
private static final String ARTIFACT_TWO_NAME = "ArtifactTwo";
private static final String ARTIFACT_LIST_NAME = "ArtifactList";
private ArtifactFolderFactory artifactFolderFactory;
private ArtifactTypeRepository artifactTypeRepository;
private DefaultArtifactRepository artifactRepository;
private ArtifactTypeFactory artifactTypeFactory;
private UserFactory userFactory;
private UserRepository userRepository;
private ArtifactType folderType;
private ArtifactType subClassType;
private ArtifactType personListType;
private User creator;
private Artifact<?> artifactOne;
private Artifact<?> artifactTwo;
private ArtifactFolder artifactFolder;
private PersonList personList;
public ArtifactFolderRepositoryTestFixture( RepositoryTestEnvironment<ArtifactFolderRepository, RepositoryTestFixture<ArtifactFolderRepository,ArtifactFolder>> testEnvironment ) {
super( testEnvironment );
}
public ArtifactFolder getArtifactFolder() { return artifactFolder; }
public Artifact<?> getArtifactOne() { return artifactOne; }
public Artifact<?> getArtifactTwo() { return artifactTwo; }
public DefaultArtifactRepository getArtifactRepository() { return artifactRepository; }
public ArtifactType getFolderType(){ return folderType; }
@Override
protected void configureBeforeSutInstantiation() {
super.configureBeforeSutInstantiation();
artifactFolderFactory = applicationContext.getEntityFactory( ArtifactFolderFactory.class );
artifactTypeFactory = applicationContext.getEntityFactory( ArtifactTypeFactory.class );
artifactTypeRepository = applicationContext.getRepository( ArtifactTypeRepository.class );
artifactRepository = applicationContext.getRepository( DefaultArtifactRepository.class );
userFactory = applicationContext.getEntityFactory( UserFactory.class );
userRepository = applicationContext.getRepository( UserRepository.class );
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
folderType = artifactTypeRepository.findArtifactTypeByName( work, "ArtifactFolder" );
subClassType = artifactTypeFactory.create( "ArtifactSubClass", "SystemAdministration" );
subClassType.setArtifactClassName( ArtifactSubClass.class.getName() );
subClassType.setSystem( true );
artifactTypeRepository.addArtifactType( work, subClassType );
personListType = artifactTypeRepository.findArtifactTypeByName( work, "PersonList" );
creator = userFactory.createUser( "testPerson", "password" );
userRepository.add( work, creator );
work.finish();
}
@Override
protected ArtifactFolder createNewAggregate() throws Exception {
artifactFolder = artifactFolderFactory.create( ARTIFACT_FOLDER_NAME );
artifactOne = new ArtifactSubClass( ARTIFACT_ONE_NAME, subClassType, creator );
artifactFolder.addChildArtifact( artifactOne );
artifactTwo = new ArtifactSubClass( ARTIFACT_TWO_NAME, subClassType, creator );
artifactFolder.addChildArtifact( artifactTwo );
personList = new PersonList( ARTIFACT_LIST_NAME, personListType, creator );
artifactFolder.addChildArtifact( personList );
return artifactFolder;
}
@Override
protected void afterAggregateCreation() {
}
@Override
protected void afterAggregateDeletion() {
}
@Override
protected void beforeAggregateCreation() {
}
}