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:
@@ -413,8 +413,6 @@
|
|||||||
<property name="publicAction" value="true"/>
|
<property name="publicAction" value="true"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Edit review as of date -->
|
<!-- Edit review as of date -->
|
||||||
|
|
||||||
<bean id="editReviewAsOfDate_proxy" parent="rmProxyAction" >
|
<bean id="editReviewAsOfDate_proxy" parent="rmProxyAction" >
|
||||||
@@ -968,6 +966,7 @@
|
|||||||
class="org.alfresco.module.org_alfresco_module_rm.action.impl.FileReportAction"
|
class="org.alfresco.module.org_alfresco_module_rm.action.impl.FileReportAction"
|
||||||
parent="rmAction">
|
parent="rmAction">
|
||||||
<property name="reportService" ref="ReportService" />
|
<property name="reportService" ref="ReportService" />
|
||||||
|
<property name="capabilityService" ref="CapabilityService" />
|
||||||
<property name="publicAction" value="false"/>
|
<property name="publicAction" value="false"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
@@ -1016,10 +1015,10 @@
|
|||||||
</value>
|
</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- @deprecated actions as of 2.2 -->
|
<!-- @deprecated actions as of 2.2 -->
|
||||||
<!-- actions can be reinstated by reconfiguring their publicity -->
|
<!-- actions can be reinstated by reconfiguring their publicity -->
|
||||||
|
|
||||||
<!-- Freeze record -->
|
<!-- Freeze record -->
|
||||||
|
|
||||||
<bean id="freeze_proxy" parent="rmProxyAction" >
|
<bean id="freeze_proxy" parent="rmProxyAction" >
|
||||||
|
@@ -21,6 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.action.impl;
|
|||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase;
|
import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.report.Report;
|
import org.alfresco.module.org_alfresco_module_rm.report.Report;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.report.ReportModel;
|
import org.alfresco.module.org_alfresco_module_rm.report.ReportModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.report.ReportService;
|
import org.alfresco.module.org_alfresco_module_rm.report.ReportService;
|
||||||
@@ -30,6 +31,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
|||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
import org.alfresco.service.cmr.action.Action;
|
import org.alfresco.service.cmr.action.Action;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.security.AccessStatus;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.extensions.surf.util.I18NUtil;
|
import org.springframework.extensions.surf.util.I18NUtil;
|
||||||
@@ -58,6 +60,9 @@ public class FileReportAction extends RMActionExecuterAbstractBase implements Re
|
|||||||
/** Report service */
|
/** Report service */
|
||||||
private ReportService reportService;
|
private ReportService reportService;
|
||||||
|
|
||||||
|
/** Capability service */
|
||||||
|
private CapabilityService capabilityService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Report service
|
* @return Report service
|
||||||
*/
|
*/
|
||||||
@@ -66,6 +71,14 @@ public class FileReportAction extends RMActionExecuterAbstractBase implements Re
|
|||||||
return this.reportService;
|
return this.reportService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Capability service
|
||||||
|
*/
|
||||||
|
protected CapabilityService getCapabilityService()
|
||||||
|
{
|
||||||
|
return this.capabilityService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param reportService report service
|
* @param reportService report service
|
||||||
*/
|
*/
|
||||||
@@ -74,6 +87,14 @@ public class FileReportAction extends RMActionExecuterAbstractBase implements Re
|
|||||||
this.reportService = reportService;
|
this.reportService = reportService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param capabilityService capability service
|
||||||
|
*/
|
||||||
|
public void setCapabilityService(CapabilityService capabilityService)
|
||||||
|
{
|
||||||
|
this.capabilityService = capabilityService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action,
|
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action,
|
||||||
* org.alfresco.service.cmr.repository.NodeRef)
|
* org.alfresco.service.cmr.repository.NodeRef)
|
||||||
@@ -94,6 +115,9 @@ public class FileReportAction extends RMActionExecuterAbstractBase implements Re
|
|||||||
// get the destination
|
// get the destination
|
||||||
final NodeRef destination = getDestination(action);
|
final NodeRef destination = getDestination(action);
|
||||||
|
|
||||||
|
// Check the filing permission only capability for the destination
|
||||||
|
checkFilingPermissionOnlyCapability(destination);
|
||||||
|
|
||||||
// generate the report
|
// generate the report
|
||||||
final Report report = getReportService().generateReport(reportType, actionedUponNodeRef, mimetype);
|
final Report report = getReportService().generateReport(reportType, actionedUponNodeRef, mimetype);
|
||||||
|
|
||||||
@@ -112,6 +136,19 @@ public class FileReportAction extends RMActionExecuterAbstractBase implements Re
|
|||||||
action.setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, filedReportName);
|
action.setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, filedReportName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the destination is frozen, closed, cut off or not. In case if it is an exception will be thrown.
|
||||||
|
*
|
||||||
|
* @param nodeRef The destination node reference for which the capability should be checked
|
||||||
|
*/
|
||||||
|
private void checkFilingPermissionOnlyCapability(NodeRef nodeRef)
|
||||||
|
{
|
||||||
|
if (AccessStatus.DENIED.equals(capabilityService.getCapability("FillingPermissionOnly").hasPermission(nodeRef)))
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("The destination is either frozen, closed or cut off!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the value of the given parameter. If the parameter has not been
|
* Retrieves the value of the given parameter. If the parameter has not been
|
||||||
* passed from the UI an error will be thrown
|
* passed from the UI an error will be thrown
|
||||||
|
@@ -35,7 +35,8 @@ import org.junit.runners.Suite.SuiteClasses;
|
|||||||
CreateRecordActionTest.class,
|
CreateRecordActionTest.class,
|
||||||
HideRecordActionTest.class,
|
HideRecordActionTest.class,
|
||||||
RejectActionTest.class,
|
RejectActionTest.class,
|
||||||
FileToActionTest.class
|
FileToActionTest.class,
|
||||||
|
FileReportActionTest.class
|
||||||
})
|
})
|
||||||
public class ActionTestSuite
|
public class ActionTestSuite
|
||||||
{
|
{
|
||||||
|
@@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2014 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This file is part of Alfresco
|
||||||
|
*
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.alfresco.module.org_alfresco_module_rm.test.legacy.action;
|
||||||
|
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.action.impl.FileReportAction;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
||||||
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
|
import org.alfresco.service.cmr.action.Action;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.springframework.extensions.webscripts.GUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* File report action unit test
|
||||||
|
*
|
||||||
|
* @author Tuna Aksoy
|
||||||
|
* @since 2.2
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class FileReportActionTest extends BaseRMTestCase
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
protected boolean isUserTest()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFileReport()
|
||||||
|
{
|
||||||
|
fileReport(MimetypeMap.MIMETYPE_HTML);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testfileReportDefaultMimetype()
|
||||||
|
{
|
||||||
|
fileReport(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fileReport(final String mimeType)
|
||||||
|
{
|
||||||
|
// create record folder
|
||||||
|
final NodeRef recordFolder = recordFolderService.createRecordFolder(rmContainer, GUID.generate());
|
||||||
|
|
||||||
|
// create hold
|
||||||
|
final NodeRef hold = holdService.createHold(filePlan, "holdName", "holdReason", "holdDescription");
|
||||||
|
|
||||||
|
doTestInTransaction(new FailureTest()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run() throws Exception
|
||||||
|
{
|
||||||
|
// close the record folder
|
||||||
|
recordFolderService.closeRecordFolder(recordFolder);
|
||||||
|
|
||||||
|
// execute action
|
||||||
|
executeAction(mimeType, recordFolder, hold);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
doTestInTransaction(new Test<Void>()
|
||||||
|
{
|
||||||
|
public Void run()
|
||||||
|
{
|
||||||
|
// reopen the record folder
|
||||||
|
nodeService.setProperty(recordFolder, PROP_IS_CLOSED, false);
|
||||||
|
|
||||||
|
// execute action
|
||||||
|
executeAction(mimeType, recordFolder, hold);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, ADMIN_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void executeAction(String mimeType, NodeRef recordFolder, NodeRef hold)
|
||||||
|
{
|
||||||
|
Action action = actionService.createAction(FileReportAction.NAME);
|
||||||
|
if (StringUtils.isNotBlank(mimeType))
|
||||||
|
{
|
||||||
|
action.setParameterValue(FileReportAction.MIMETYPE, mimeType);
|
||||||
|
}
|
||||||
|
action.setParameterValue(FileReportAction.DESTINATION, recordFolder.toString());
|
||||||
|
action.setParameterValue(FileReportAction.REPORT_TYPE, "rmr:destructionReport");
|
||||||
|
actionService.executeAction(action, hold);
|
||||||
|
}
|
||||||
|
}
|
@@ -19,46 +19,34 @@
|
|||||||
package org.alfresco.module.org_alfresco_module_rm.action.impl;
|
package org.alfresco.module.org_alfresco_module_rm.action.impl;
|
||||||
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
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 static org.mockito.Mockito.verifyZeroInteractions;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
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.module.org_alfresco_module_rm.test.util.BaseUnitTest;
|
||||||
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
|
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.service.cmr.action.Action;
|
import org.alfresco.service.cmr.action.Action;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.namespace.QName;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit test for file report action.
|
* Unit test for file report action.
|
||||||
*
|
*
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
* @since 2.2
|
* @since 2.2
|
||||||
*/
|
*/
|
||||||
public class FileReportActionUnitTest extends BaseUnitTest
|
public class FileReportActionUnitTest extends BaseUnitTest
|
||||||
{
|
{
|
||||||
/** report name */
|
|
||||||
private static final String REPORT_NAME = "testReportName";
|
|
||||||
|
|
||||||
/** actioned upon node reference */
|
/** actioned upon node reference */
|
||||||
private NodeRef actionedUponNodeRef;
|
private NodeRef actionedUponNodeRef;
|
||||||
|
|
||||||
/** mocked action */
|
/** mocked action */
|
||||||
private @Mock Action mockedAction;
|
private @Mock Action mockedAction;
|
||||||
|
|
||||||
/** mocked report */
|
|
||||||
private @Mock Report mockedReport;
|
|
||||||
|
|
||||||
/** file report action */
|
/** file report action */
|
||||||
private @InjectMocks FileReportAction fileReportAction;
|
private @InjectMocks FileReportAction fileReportAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest#before()
|
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest#before()
|
||||||
*/
|
*/
|
||||||
@@ -66,14 +54,14 @@ public class FileReportActionUnitTest extends BaseUnitTest
|
|||||||
public void before()
|
public void before()
|
||||||
{
|
{
|
||||||
super.before();
|
super.before();
|
||||||
|
|
||||||
// actioned upon node reference
|
// actioned upon node reference
|
||||||
actionedUponNodeRef = generateRecord();
|
actionedUponNodeRef = generateRecord();
|
||||||
|
|
||||||
// mocked action
|
// mocked action
|
||||||
fileReportAction.setAuditable(false);
|
fileReportAction.setAuditable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper to mock an action parameter value
|
* Helper to mock an action parameter value
|
||||||
*/
|
*/
|
||||||
@@ -81,7 +69,7 @@ public class FileReportActionUnitTest extends BaseUnitTest
|
|||||||
{
|
{
|
||||||
doReturn(value).when(mockedAction).getParameterValue(name);
|
doReturn(value).when(mockedAction).getParameterValue(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* given the destination is not set, ensure that an exception is thrown
|
* given the destination is not set, ensure that an exception is thrown
|
||||||
*/
|
*/
|
||||||
@@ -89,23 +77,23 @@ public class FileReportActionUnitTest extends BaseUnitTest
|
|||||||
public void destinationNotSet()
|
public void destinationNotSet()
|
||||||
{
|
{
|
||||||
// == given ==
|
// == given ==
|
||||||
|
|
||||||
// set action parameter values
|
// set action parameter values
|
||||||
mockActionParameterValue(FileReportAction.MIMETYPE, MimetypeMap.MIMETYPE_HTML);
|
mockActionParameterValue(FileReportAction.MIMETYPE, MimetypeMap.MIMETYPE_HTML);
|
||||||
mockActionParameterValue(FileReportAction.REPORT_TYPE, "rma:destructionReport");
|
mockActionParameterValue(FileReportAction.REPORT_TYPE, "rma:destructionReport");
|
||||||
|
|
||||||
// expected exception
|
// expected exception
|
||||||
exception.expect(AlfrescoRuntimeException.class);
|
exception.expect(AlfrescoRuntimeException.class);
|
||||||
|
|
||||||
// == when ==
|
// == when ==
|
||||||
|
|
||||||
// execute action
|
// execute action
|
||||||
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
|
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
|
||||||
|
|
||||||
// == then ==
|
// == then ==
|
||||||
verifyZeroInteractions(mockedReportService, mockedNodeService);
|
verifyZeroInteractions(mockedReportService, mockedNodeService);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* given no report type set, ensure that an exception is thrown
|
* given no report type set, ensure that an exception is thrown
|
||||||
*/
|
*/
|
||||||
@@ -113,100 +101,20 @@ public class FileReportActionUnitTest extends BaseUnitTest
|
|||||||
public void reportTypeNotSet()
|
public void reportTypeNotSet()
|
||||||
{
|
{
|
||||||
// == given ==
|
// == given ==
|
||||||
|
|
||||||
// set action parameter values
|
// set action parameter values
|
||||||
mockActionParameterValue(FileReportAction.MIMETYPE, MimetypeMap.MIMETYPE_HTML);
|
mockActionParameterValue(FileReportAction.MIMETYPE, MimetypeMap.MIMETYPE_HTML);
|
||||||
mockActionParameterValue(FileReportAction.DESTINATION, generateNodeRef().toString());
|
mockActionParameterValue(FileReportAction.DESTINATION, generateNodeRef().toString());
|
||||||
|
|
||||||
// expected exception
|
// expected exception
|
||||||
exception.expect(AlfrescoRuntimeException.class);
|
exception.expect(AlfrescoRuntimeException.class);
|
||||||
|
|
||||||
// == when ==
|
// == when ==
|
||||||
|
|
||||||
// execute action
|
// execute action
|
||||||
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
|
fileReportAction.executeImpl(mockedAction, actionedUponNodeRef);
|
||||||
|
|
||||||
// == then ==
|
// == then ==
|
||||||
verifyZeroInteractions(mockedReportService, mockedNodeService);
|
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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user