/*
* Created on 2006.06.02.
*/
package com.processpuzzle.artifact_management.control;
import static org.junit.Assert.assertEquals;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import com.mockrunner.mock.web.MockHttpServletResponse;
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.DocumentFactory;
import com.processpuzzle.artifact_management.control.AddRelatedArtifactCommand;
import com.processpuzzle.artifact_management.control.ArtifactLocator;
import com.processpuzzle.configuration.webtier.ConfigurationConstants;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
/**
* @author peter.krima
*/
public class RemoveRelatedArtifactCommandTest extends BasicServletTestCaseAdapter {
private static ProcessPuzzleContext applicationContext = null;
@Mock
private Application mockApplication;
private UserFactory userFactory;
private DocumentFactory documentFactory;
private DefaultArtifactRepository artifactRepository;
private UserRepository partyRepository;
private String subjectArtifactName;
private String targetArtifactName;
private User gipszJakab;
public void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks( RemoveRelatedArtifactCommandTest.class );
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
applicationContext = ApplicationContextFactory.create( mockApplication, ConfigurationConstants.CONFIGURATION_PROPERTY_FILE );
applicationContext.setUp( Application.Action.start );
userFactory = applicationContext.getEntityFactory( UserFactory.class );
documentFactory = applicationContext.getEntityFactory( DocumentFactory.class );
artifactRepository = (DefaultArtifactRepository) applicationContext.getRepository( DefaultArtifactRepository.class );
partyRepository = (UserRepository) applicationContext.getRepository( UserRepository.class );
gipszJakab = userFactory.createUser( "Gipsz Jakab", "psw" );
partyRepository.addUser( work, gipszJakab );
Artifact<?> subjectArtifact = documentFactory.createDocument( "document_1" );
artifactRepository.add( work, subjectArtifact );
subjectArtifactName = subjectArtifact.getName();
Artifact<?> targetArtifact = documentFactory.createDocument( "document_2" );
artifactRepository.add( work, targetArtifact );
targetArtifactName = targetArtifact.getName();
subjectArtifact.addRelatedArtifact( targetArtifact );
artifactRepository.update( work, subjectArtifact );
createServlet( CommandControllerServlet.class );
executeCommand();
work.finish();
}
public void tearDown() throws Exception {
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
artifactRepository.deleteByName( work, subjectArtifactName );
artifactRepository.deleteByName( work, targetArtifactName );
partyRepository.deleteUser( work, gipszJakab );
work.finish();
super.tearDown();
}
private final void executeCommand() {
addRequestParameter( "action", AddRelatedArtifactCommand.ADD_RELATED_ARTIFACT_COMMAND_NAME );
addRequestParameter( ArtifactLocator.ARTIFACTNAME_IDENTIFIERNAME, subjectArtifactName );
addRequestParameter( AddRelatedArtifactCommand.TARGETARTIFACT_NAME_PARAM, targetArtifactName );
doPost();
}
public void testRemoveRelatedArtifact_ContentType() {
MockHttpServletResponse mockResponse = getWebMockObjectFactory().getMockResponse();
assertEquals( "The content type should be:", "text/xml", mockResponse.getContentType() );
}
public void testRemoveRelatedArtifact_Relation() {
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
Artifact<?> resultArtifact = artifactRepository.findByName( work, subjectArtifactName );
assertEquals( "Number of related artifacts is 0", 1, resultArtifact.getRelatedArtifacts().size() );
work.finish();
}
}