RM-1572 (It's possible to file report to closed folder)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@74931 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2014-06-25 23:14:56 +00:00
parent 8befac525e
commit 573d68c51b
5 changed files with 164 additions and 118 deletions

View File

@@ -19,46 +19,34 @@
package org.alfresco.module.org_alfresco_module_rm.action.impl;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.report.Report;
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
/**
* Unit test for file report action.
*
*
* @author Roy Wetherall
* @since 2.2
*/
public class FileReportActionUnitTest extends BaseUnitTest
{
/** report name */
private static final String REPORT_NAME = "testReportName";
/** actioned upon node reference */
private NodeRef actionedUponNodeRef;
/** mocked action */
private @Mock Action mockedAction;
/** mocked report */
private @Mock Report mockedReport;
/** file report action */
private @InjectMocks FileReportAction fileReportAction;
/**
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest#before()
*/
@@ -66,14 +54,14 @@ public class FileReportActionUnitTest extends BaseUnitTest
public void before()
{
super.before();
// actioned upon node reference
actionedUponNodeRef = generateRecord();
// mocked action
fileReportAction.setAuditable(false);
}
/**
* Helper to mock an action parameter value
*/
@@ -81,7 +69,7 @@ public class FileReportActionUnitTest extends BaseUnitTest
{
doReturn(value).when(mockedAction).getParameterValue(name);
}
/**
* given the destination is not set, ensure that an exception is thrown
*/
@@ -89,23 +77,23 @@ public class FileReportActionUnitTest extends BaseUnitTest
public void destinationNotSet()
{
// == given ==
// set action parameter values
mockActionParameterValue(FileReportAction.MIMETYPE, MimetypeMap.MIMETYPE_HTML);
mockActionParameterValue(FileReportAction.REPORT_TYPE, "rma:destructionReport");
// expected exception
exception.expect(AlfrescoRuntimeException.class);
// == when ==
// execute action
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
// == then ==
verifyZeroInteractions(mockedReportService, mockedNodeService);
verifyZeroInteractions(mockedReportService, mockedNodeService);
}
/**
* given no report type set, ensure that an exception is thrown
*/
@@ -113,100 +101,20 @@ public class FileReportActionUnitTest extends BaseUnitTest
public void reportTypeNotSet()
{
// == given ==
// set action parameter values
mockActionParameterValue(FileReportAction.MIMETYPE, MimetypeMap.MIMETYPE_HTML);
mockActionParameterValue(FileReportAction.DESTINATION, generateNodeRef().toString());
// expected exception
exception.expect(AlfrescoRuntimeException.class);
// == when ==
// execute action
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
// == then ==
verifyZeroInteractions(mockedReportService, mockedNodeService);
}
/**
* given the file report action is executed, ensure the service interactions and returned result
* are correct.
*/
@Test
public void fileReport()
{
// == given ==
// data
NodeRef destination = generateNodeRef();
NodeRef filedReport = generateNodeRef();
String reportType = "rma:destructionReport";
QName reportTypeQName = QName.createQName(RM_URI, "destructionReport");
String mimetype = MimetypeMap.MIMETYPE_HTML;
// set action parameter values
mockActionParameterValue(FileReportAction.MIMETYPE, mimetype);
mockActionParameterValue(FileReportAction.DESTINATION, destination.toString());
mockActionParameterValue(FileReportAction.REPORT_TYPE, reportType);
// setup service interactions
doReturn(mockedReport).when(mockedReportService).generateReport(reportTypeQName, actionedUponNodeRef, mimetype);
doReturn(filedReport).when(mockedReportService).fileReport(destination, mockedReport);
doReturn(REPORT_NAME).when(mockedNodeService).getProperty(filedReport, ContentModel.PROP_NAME);
// == when ==
// execute action
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
// == then ==
// verify interactions
verify(mockedReportService, times(1)).generateReport(reportTypeQName, actionedUponNodeRef, mimetype);
verify(mockedReportService, times(1)).fileReport(destination, mockedReport);
verify(mockedNodeService, times(1)).getProperty(filedReport, ContentModel.PROP_NAME);
verify(mockedAction, times(1)).setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, REPORT_NAME);
}
/**
* given the file report action is executed with no mimetype set, ensure that a report is generated
* with the default mimetype.
*/
@Test
public void fileReportDefaultMimetype()
{
// == given ==
// data
NodeRef destination = generateNodeRef();
NodeRef filedReport = generateNodeRef();
String reportType = "rma:destructionReport";
QName reportTypeQName = QName.createQName(RM_URI, "destructionReport");
String mimetype = MimetypeMap.MIMETYPE_HTML;
// set action parameter values
mockActionParameterValue(FileReportAction.DESTINATION, destination.toString());
mockActionParameterValue(FileReportAction.REPORT_TYPE, reportType);
// setup service interactions
doReturn(mockedReport).when(mockedReportService).generateReport(reportTypeQName, actionedUponNodeRef, mimetype);
doReturn(filedReport).when(mockedReportService).fileReport(destination, mockedReport);
doReturn(REPORT_NAME).when(mockedNodeService).getProperty(filedReport, ContentModel.PROP_NAME);
// == when ==
// execute action
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
// == then ==
// verify interactions
verify(mockedReportService, times(1)).generateReport(reportTypeQName, actionedUponNodeRef, mimetype);
verify(mockedReportService, times(1)).fileReport(destination, mockedReport);
verify(mockedNodeService, times(1)).getProperty(filedReport, ContentModel.PROP_NAME);
verify(mockedAction, times(1)).setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, REPORT_NAME);
verifyZeroInteractions(mockedReportService, mockedNodeService);
}
}