/* * #%L * Alfresco Records Management Module * %% * Copyright (C) 2005 - 2016 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - * If the software was purchased under a paid Alfresco license, the terms of * the paid license agreement will prevail. Otherwise, the software is * provided under the following open source license terms: * - * 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/>. * #L% */ package org.alfresco.module.org_alfresco_module_rm.test.integration.rule; import java.util.List; import org.alfresco.module.org_alfresco_module_rm.action.impl.DeclareRecordAction; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.rule.Rule; import org.alfresco.service.cmr.rule.RuleService; import org.springframework.extensions.webscripts.GUID; /** * File plan rule inheritance test * * @author Roy Wetherall * @since 2.4 */ public class FilePlanRuleInheritanceTest extends BaseRMTestCase { private RuleService ruleService; @Override protected void initServices() { super.initServices(); ruleService = (RuleService)applicationContext.getBean("RuleService"); } @Override protected boolean isRMSiteTest() { return false; } private NodeRef createFilePlan() { return filePlanService.createFilePlan(folder, "My File Plan"); } /** * Given that a single rule is set on the parent folder of the file plan root * And that it is configured to apply to children * When we ask for the rules on the file plan, including those inherited * Then it will not include those defined on the parent folder */ public void testFilePlanDoesNotInheritRulesFromParentFolder() { doBehaviourDrivenTest(new BehaviourDrivenTest() { private NodeRef filePlan = null; private List<Rule> rules = null; public void given() { filePlan = createFilePlan(); // create a rule that applies to childre Action completeRecordAction = actionService.createAction(DeclareRecordAction.NAME); Rule rule = new Rule(); rule.setRuleType("inbound"); rule.setAction(completeRecordAction); rule.applyToChildren(true); // save rule on file plan root parent folder ruleService.saveRule(folder, rule); } public void when() { // get rules, including those inherited rules = ruleService.getRules(filePlan, true); } public void then() { // rules aren't inhreited from file plan root parent folder assertEquals(0, rules.size()); } }); } /** * Given that a single rule is set on the file plan root * And that it is configured to apply to children * When we ask for the rules on the unfiled record container including those inherited * Then it will not include those defined on the file plan root * * See https://issues.alfresco.com/jira/browse/RM-3148 */ public void testFilePlanRulesInheritedInUnfiledContainer() { doBehaviourDrivenTest(new BehaviourDrivenTest() { private NodeRef filePlan = null; private List<Rule> rules = null; public void given() { filePlan = createFilePlan(); // create a rule that applies to childre Action completeRecordAction = actionService.createAction(DeclareRecordAction.NAME); Rule rule = new Rule(); rule.setRuleType("inbound"); rule.setAction(completeRecordAction); rule.applyToChildren(true); // save rule on file plan root ruleService.saveRule(filePlan, rule); } public void when() { // get rules, including those inherited NodeRef unfiledRecordContainer = filePlanService.getUnfiledContainer(filePlan); rules = ruleService.getRules(unfiledRecordContainer, true); } public void then() { // rules aren't inhreited from file plan root assertEquals(0, rules.size()); } }); } /** * Given that a single rule is set on the file plan root * And that it is configured to apply to children * When we ask for the rules on the hold container including those inherited * Then it will not include those defined on the file plan root */ public void testFilePlanRulesInheritedInHoldContainer() { doBehaviourDrivenTest(new BehaviourDrivenTest() { private NodeRef filePlan = null; private List<Rule> rules = null; public void given() { filePlan = createFilePlan(); // create a rule that applies to childre Action completeRecordAction = actionService.createAction(DeclareRecordAction.NAME); Rule rule = new Rule(); rule.setRuleType("inbound"); rule.setAction(completeRecordAction); rule.applyToChildren(true); // save rule on file plan root ruleService.saveRule(filePlan, rule); } public void when() { // get rules, including those inherited NodeRef container = filePlanService.getHoldContainer(filePlan); rules = ruleService.getRules(container, true); } public void then() { // rules aren't inhreited from file plan root assertEquals(0, rules.size()); } }); } /** * Given that a single rule is set on the file plan root * And that it is configured to apply to children * When we ask for the rules on the transfer container including those inherited * Then it will not include those defined on the file plan root */ public void testFilePlanRulesInheritedInTransferContainer() { doBehaviourDrivenTest(new BehaviourDrivenTest() { private NodeRef filePlan = null; private List<Rule> rules = null; public void given() { filePlan = createFilePlan(); // create a rule that applies to childre Action completeRecordAction = actionService.createAction(DeclareRecordAction.NAME); Rule rule = new Rule(); rule.setRuleType("inbound"); rule.setAction(completeRecordAction); rule.applyToChildren(true); // save rule on file plan root ruleService.saveRule(filePlan, rule); } public void when() { // get rules, including those inherited NodeRef container = filePlanService.getTransferContainer(filePlan); rules = ruleService.getRules(container, true); } public void then() { // rules aren't inhreited from file plan root assertEquals(0, rules.size()); } }); } /** * Given that a single rule is set on the file plan root * And that it is configured to apply to children * When we ask for the rules on a record category including those inherited * Then it will include those defined on the file plan root */ public void testFilePlanRulesInheritedOnRecordCategory() { doBehaviourDrivenTest(new BehaviourDrivenTest() { private NodeRef filePlan = null; private NodeRef recordCategory = null; private List<Rule> rules = null; public void given() { filePlan = createFilePlan(); recordCategory = filePlanService.createRecordCategory(filePlan, GUID.generate()); // create a rule that applies to childre Action completeRecordAction = actionService.createAction(DeclareRecordAction.NAME); Rule rule = new Rule(); rule.setRuleType("inbound"); rule.setAction(completeRecordAction); rule.applyToChildren(true); // save rule on file plan root ruleService.saveRule(filePlan, rule); } public void when() { // get rules, including those inherited rules = ruleService.getRules(recordCategory, true); } public void then() { // rules aren't inhreited from file plan root assertEquals(1, rules.size()); } }); } }