package com.processpuzzle.artifact.domain;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
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.ArtifactTypeTestFixture;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration;
import com.processpuzzle.sharedfixtures.domaintier.ProcessPuzzleContextFixture;
public class ArtifactListViewTest {
private ProcessPuzzleContextFixture applicationContextFixture;
private ArtifactTypeTestFixture typeFixture = null;
private static String FIRST_ARTIFACT_NAME = "First artifact";
private static String SECOND_ARTIFACT_NAME = "Second artifact";
private static String BULK_ARTIFACT_NAME_PREFIX = "Bulk_artifact_";
private ArtifactSubClass parentArtifact = null;
private ArtifactListView<?> listView = null;
private ProcessPuzzleContext applicationContext;
private UserFactory userFactory;
private static ArtifactSubClassRepository repository = null;
private ArtifactSubClass firstArtifact = null;
private ArtifactSubClass secondArtifact = null;
private static UserRepository userRepository = null;
private User user;
@Before
public void setUp() throws Exception {
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
applicationContextFixture = ProcessPuzzleContextFixture.getInstance( DomainTierTestConfiguration.APPLICATION_CONFIGURATION_DESCRIPTOR_PATH );
applicationContextFixture.setUp();
applicationContext = applicationContextFixture.getApplicationContext();
typeFixture = new ArtifactTypeTestFixture( null );
typeFixture.setUp();
userFactory = applicationContext.getEntityFactory( UserFactory.class );
repository = applicationContext.getRepository( ArtifactSubClassRepository.class );
userRepository = applicationContext.getRepository( UserRepository.class );
user = userFactory.createUser( "P", "B" );
userRepository.addUser( work, user );
parentArtifact = new ArtifactSubClass( "anArtifact", typeFixture.getArtifactSubClassType(), user );
createSubjectArtifacts();
// listView = new ArtifactListViewSubClass( parentArtifact, "aListView", null );
listView = new ArtifactListViewSubClass( null, "aListView", null );
listView.query();
work.finish();
}
@After
public void tearDown() throws Exception {
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
parentArtifact = null;
listView = null;
deleteSubjectArtifacts();
userRepository.deleteUser( work, user );
work.finish();
typeFixture.tearDown();
}
@Ignore
@Test
public void getListedArtifactsPropertyView_ForDefaultSettings() {
// assertEquals("", 53, repository.findAllArtifactSubClass().size());
List<?> artifacts = listView.getListedArtifactsPropertyViews();
assertEquals( "By default the ArtifactListView searches for the first 50 artifacts", 50, artifacts.size() );
assertEquals( "By default the ArtifactListView starts with the", FIRST_ARTIFACT_NAME, ((PropertyView<?>) artifacts.get( 0 ))
.getArtifactName() );
assertEquals( "By default the artifact returned in the order they are created. So the second artifact is:", SECOND_ARTIFACT_NAME,
((PropertyView<?>) artifacts.get( 1 )).getArtifactName() );
}
@Ignore
@Test
public void query_ForSizeSpecification() {
listView.setMaxReturnSize( new Integer( 20 ) );
listView.query();
assertEquals( "The number of object we requested is:", 20, listView.getListedArtifactsPropertyViews().size() );
}
@Ignore
@Test
public final void query_ForStart() {
listView.setStartQueryFrom( new Integer( 5 ) );
listView.query();
List<?> artifacts = listView.getListedArtifactsPropertyViews();
assertEquals( "Now the third object form the bulk artifacts is expected to return first", BULK_ARTIFACT_NAME_PREFIX + 3,
((PropertyView<?>) artifacts.get( 0 )).getArtifactName() );
}
@Ignore
@Test
public final void query_ForStatement() {
listView.setQueryStatement( "" );
}
private void createSubjectArtifacts() {
// Create named artifacts
firstArtifact = new ArtifactSubClass( FIRST_ARTIFACT_NAME, typeFixture.getArtifactSubClassType(), user );
repository.addArtifactSubClass( firstArtifact );
secondArtifact = new ArtifactSubClass( SECOND_ARTIFACT_NAME, typeFixture.getArtifactSubClassType(), user );
repository.addArtifactSubClass( secondArtifact );
// Create numbered artifacts
for( int i = 0; i < 51; i++ ){
ArtifactSubClass anArtifact = new ArtifactSubClass( BULK_ARTIFACT_NAME_PREFIX + i, typeFixture.getArtifactSubClassType(), user );
repository.addArtifactSubClass( anArtifact );
}
}
private void deleteSubjectArtifacts() {
// delete named artifacts
repository.deletedArtifactSubClass( firstArtifact );
repository.deletedArtifactSubClass( secondArtifact );
// delete numbered artifacts
for( int i = 0; i < 51; i++ ){
ArtifactSubClass bulkArtifact = repository.findArtifactSubClassByName( BULK_ARTIFACT_NAME_PREFIX + i );
if( bulkArtifact != null ){
repository.deleteArtifactSubClass( bulkArtifact );
}
}
}
}