package com.processpuzzle.artifact_management.control;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import com.mockrunner.servlet.BasicServletTestCaseAdapter;
import com.processpuzzle.application.configuration.domain.ApplicationContextFactory;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.control.control.CommandControllerServlet;
import com.processpuzzle.application.domain.Application;
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.domain.Artifact;
import com.processpuzzle.artifact.domain.DefaultArtifactRepository;
import com.processpuzzle.artifact.domain.Document;
import com.processpuzzle.artifact_type.domain.ArtifactTypeRepository;
import com.processpuzzle.artifact_type.domain.DocumentType;
import com.processpuzzle.configuration.webtier.ConfigurationConstants;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
/**
* @author zsolt.zsuffa
*/
public class ShowArtifactCommandTest extends BasicServletTestCaseAdapter {
private static ProcessPuzzleContext config = null;
@Mock private Application mockApplication;
private UserFactory userFactory;
private DefaultArtifactRepository artifactRepository;
private ArtifactTypeRepository artifactTypeRepository;
private UserRepository userRepository;
private Integer artifactId;
private String artifactName;
private Integer documentTypeId;
private User user;
@Before
public void setUp() throws Exception {
super.setUp();
DefaultUnitOfWork work = new DefaultUnitOfWork(true);
MockitoAnnotations.initMocks( ShowArtifactCommandTest.class );
config = ApplicationContextFactory.create( mockApplication, ConfigurationConstants.CONFIGURATION_PROPERTY_FILE );
config.setUp( Application.Action.start );
userFactory = config.getEntityFactory( UserFactory.class );
artifactRepository = (DefaultArtifactRepository) config.getRepository(DefaultArtifactRepository.class);
artifactTypeRepository = (ArtifactTypeRepository) config.getRepository(ArtifactTypeRepository.class);
userRepository = (UserRepository) config.getRepository( UserRepository.class );
DocumentType documentType = new DocumentType("anArtifactType");
artifactTypeRepository.addArtifactType(work, documentType);
documentTypeId = documentType.getId();
user = userFactory.createUser( "Gipsz Jakab", "psw" );
userRepository.addUser( work, user );
Artifact<?> artifact = new Document("document", documentType, user);
artifactRepository.add(work, artifact);
artifactId = artifact.getId();
artifactName = artifact.getName();
createServlet(CommandControllerServlet.class);
addRequestParameter("action", "Show");
work.finish();
}
@After
public void tearDown() throws Exception {
DefaultUnitOfWork work = new DefaultUnitOfWork(true);
Artifact<?> artifact = artifactRepository.findById(work, artifactId);
artifactRepository.delete(work, artifact);
artifactTypeRepository.deleteArtifactType(work, documentTypeId);
userRepository.deleteUser(work, user);
work.finish();
super.tearDown();
}
@Test
public final void testExecute_ForFindById() {
addRequestParameter("artifactId", artifactId.toString());
doPost();
assertNotNull(getWebMockObjectFactory().getMockRequest().getAttribute("subjectArtifact"));
}
@Test
public final void testExecute_ForFindByName() {
addRequestParameter("artifactName", artifactName);
doPost();
assertNotNull(getWebMockObjectFactory().getMockRequest().getAttribute("subjectArtifact"));
}
// public final void testExecute_ForFindByType () {
// addRequestParameter("artifactType", artifact.getType().getName());
// doPost();
// assertNotNull(getWebMockObjectFactory().getMockRequest().getAttribute("artifact"));
// }
}