mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user