diff --git a/src/plugins/conditionSet/ConditionSetCompositionPolicy.js b/src/plugins/conditionSet/ConditionSetCompositionPolicy.js new file mode 100644 index 0000000000..90179bad6f --- /dev/null +++ b/src/plugins/conditionSet/ConditionSetCompositionPolicy.js @@ -0,0 +1,36 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2019, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ + +export default function ConditionSetCompositionPolicy(openmct) { + return { + allow: function (parent, child) { + let parentType = parent.type; + let childType = child.type; + + if (parentType === 'conditionSet' && childType !== 'condition') { + return false; + } + + return true; + } + } +} diff --git a/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js b/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js new file mode 100644 index 0000000000..d2c2b111e9 --- /dev/null +++ b/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js @@ -0,0 +1,63 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2019, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ + +import ConditionSetCompositionPolicy from './ConditionSetCompositionPolicy'; +import { createOpenMct } from "testTools"; + +describe('ConditionSetCompositionPolicy', () => { + let policy; + let parentDomainObject; + let childDomainObject; + let composition; + + beforeEach(function () { + policy = new ConditionSetCompositionPolicy(); + parentDomainObject = {}; + childDomainObject = {}; + composition = {}; + }); + + it('returns true for object types that are not conditionSets', function () { + parentDomainObject.type = 'random'; + childDomainObject.type = ''; + expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true); + }); + + it('returns false for object types that are not conditions when parent is a conditionSet', function () { + parentDomainObject.type = 'conditionSet'; + childDomainObject.type = ''; + expect(policy.allow(parentDomainObject, childDomainObject)).toBe(false); + }); + + it('returns true for object types that are conditions when parent is a conditionSet', function () { + parentDomainObject.type = 'conditionSet'; + childDomainObject.type = 'condition'; + expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true); + }); + + it('returns true for object types that are conditions when parent is not a conditionSet', function () { + parentDomainObject.type = 'random'; + childDomainObject.type = 'condition'; + expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true); + }); + +});