From 5f3802fa2709e56d40f02e2ffbc7b370c881092e Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Tue, 8 Apr 2014 00:52:40 +0000 Subject: [PATCH] Freeze indicator now only shows if the user has permission to 'read' at least one of the holds (RM-1210) * see RM-1372, RM-1373 * added unit test * fixed FIXME in page object git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@66958 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-ui-evaluators-context.xml | 1 + .../app/evaluator/FrozenEvaluator.java | 29 ++++- .../evaluator/FrozenEvaluatorUnitTest.java | 107 ++++++++++++++++++ .../evaluator/TransferEvaluatorUnitTest.java | 2 +- .../test/AllUnitTestSuite.java | 10 +- 5 files changed, 144 insertions(+), 5 deletions(-) create mode 100644 rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluatorUnitTest.java diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml index 9b69a18b38..e3595a659e 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml @@ -85,6 +85,7 @@ + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java index fefca5c977..b646fbf966 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2011 Alfresco Software Limited. + * Copyright (C) 2005-2014 Alfresco Software Limited. * * This file is part of Alfresco * @@ -18,17 +18,42 @@ */ package org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator; +import java.util.List; + +import org.alfresco.module.org_alfresco_module_rm.hold.HoldService; import org.alfresco.module.org_alfresco_module_rm.jscript.app.BaseEvaluator; import org.alfresco.service.cmr.repository.NodeRef; /** + * Freeze indicator. + *

+ * Only shows as frozen if the user can 'read' the holds + * that hold the nodeRef. + * * @author Roy Wetherall */ public class FrozenEvaluator extends BaseEvaluator { + /** hold service */ + private HoldService holdService; + + /** + * @param holdService hold service + */ + public void setHoldService(HoldService holdService) + { + this.holdService = holdService; + } + + /** + * Only indicate the node is frozen if the user can 'read' at least one of the holds + * + * @see org.alfresco.module.org_alfresco_module_rm.jscript.app.BaseEvaluator#evaluateImpl(org.alfresco.service.cmr.repository.NodeRef) + */ @Override protected boolean evaluateImpl(NodeRef nodeRef) { - return freezeService.isFrozen(nodeRef); + List heldBy = holdService.heldBy(nodeRef, true); + return !heldBy.isEmpty(); } } diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluatorUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluatorUnitTest.java new file mode 100644 index 0000000000..22d3cf8b37 --- /dev/null +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluatorUnitTest.java @@ -0,0 +1,107 @@ +/* + * 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 . + */ +package org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import java.util.Collections; +import java.util.Set; + +import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind; +import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest; +import org.alfresco.service.cmr.repository.NodeRef; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +/** + * Freeze evaluator unit test. + * + * @author Roy Wetherall + */ +public class FrozenEvaluatorUnitTest extends BaseUnitTest +{ + @Mock(name="kinds") Set mockedKinds; + + @Spy @InjectMocks FrozenEvaluator evaluator; + + @Before + @Override + public void before() + { + super.before(); + + // setup interactions + doReturn(false).when(mockedKinds).contains(FilePlanComponentKind.RECORD_CATEGORY); + doReturn(true).when(mockedKinds).contains(FilePlanComponentKind.RECORD_FOLDER); + doReturn(true).when(mockedKinds).contains(FilePlanComponentKind.RECORD); + } + + @Test + public void isNotRecordOrRecordFolder() + { + // setup interactions + NodeRef nodeRef = generateNodeRef(TYPE_RECORD_CATEGORY); + doReturn(FilePlanComponentKind.RECORD_CATEGORY).when(mockedFilePlanService).getFilePlanComponentKind(nodeRef); + + // evaluate + boolean result = evaluator.evaluate(filePlanComponent); + assertFalse(result); + + // verify interactions + verify(mockedHoldService, never()).heldBy(filePlanComponent, true); + } + + @Test + public void isNotHeld() + { + // setup interactions + doReturn(FilePlanComponentKind.RECORD).when(mockedFilePlanService).getFilePlanComponentKind(record); + doReturn(Collections.EMPTY_LIST).when(mockedHoldService).heldBy(record, true); + + // evaluate + boolean result = evaluator.evaluate(record); + assertFalse(result); + + // verify interactions + verify(mockedHoldService, times(1)).heldBy(record, true); + } + + @Test + public void isHeldByAtLeastOne() + { + // setup interactions + doReturn(FilePlanComponentKind.RECORD).when(mockedFilePlanService).getFilePlanComponentKind(record); + doReturn(Collections.singletonList(generateNodeRef(TYPE_HOLD))).when(mockedHoldService).heldBy(record, true); + + // evaluate + boolean result = evaluator.evaluate(record); + assertTrue(result); + + // verify interactions + verify(mockedHoldService, times(1)).heldBy(record, true); + } +} diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluatorUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluatorUnitTest.java index b42c4ac96e..0d8d460860 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluatorUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/TransferEvaluatorUnitTest.java @@ -153,7 +153,7 @@ public class TransferEvaluatorUnitTest extends BaseUnitTest @Test public void accendingRecord() { - // setup interactions + // setup interactions doReturn(Boolean.TRUE).when(mockedNodeService).getProperty(transfer, RecordsManagementModel.PROP_TRANSFER_ACCESSION_INDICATOR); doReturn(getParentAssocs(record)).when(mockedNodeService).getParentAssocs(record, RecordsManagementModel.ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL); transferEvaluator.setTransferAccessionIndicator(true); diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java index 43b9af7306..2b7a3e02d3 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java @@ -20,6 +20,7 @@ package org.alfresco.module.org_alfresco_module_rm.test; import org.alfresco.module.org_alfresco_module_rm.forms.RecordsManagementTypeFormFilterUnitTest; import org.alfresco.module.org_alfresco_module_rm.hold.HoldServiceImplUnitTest; +import org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.FrozenEvaluatorUnitTest; import org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.TransferEvaluatorUnitTest; import org.alfresco.module.org_alfresco_module_rm.record.RecordMetadataBootstrapUnitTest; import org.alfresco.module.org_alfresco_module_rm.record.RecordServiceImplUnitTest; @@ -44,11 +45,16 @@ import org.junit.runners.Suite.SuiteClasses; RecordServiceImplUnitTest.class, RecordsManagementTypeFormFilterUnitTest.class, HoldServiceImplUnitTest.class, + FilePlanPermissionServiceImplUnitTest.class, + + // evaluators TransferEvaluatorUnitTest.class, + FrozenEvaluatorUnitTest.class, + + // web scripts HoldsGetUnitTest.class, HoldPostUnitTest.class, - HoldPutUnitTest.class, - FilePlanPermissionServiceImplUnitTest.class + HoldPutUnitTest.class }) public class AllUnitTestSuite {