From 55a195b8416e61a1808ebe7a261ff66c66ee540b Mon Sep 17 00:00:00 2001 From: Joshi Date: Thu, 19 Dec 2019 12:33:11 -0800 Subject: [PATCH 1/2] Adds ConditionSet composition policy. Allows conditions to be added to conditionSets --- .../conditionSetCompositionPolicy.js | 36 ++++++++++ .../conditionSetCompositionPolicySpec.js | 71 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 src/plugins/conditionSet/conditionSetCompositionPolicy.js create mode 100644 src/plugins/conditionSet/conditionSetCompositionPolicySpec.js 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..38096ec5c6 --- /dev/null +++ b/src/plugins/conditionSet/conditionSetCompositionPolicySpec.js @@ -0,0 +1,71 @@ +/***************************************************************************** + * 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 openmct; + let parentDomainObject; + let childDomainObject; + let composition; + + beforeEach(function () { + openmct = createOpenMct(); + policy = new ConditionSetCompositionPolicy(openmct); + 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); + }); + +}); From 87f76ebfe4752498e5ce333971ec0875f38b515b Mon Sep 17 00:00:00 2001 From: Joshi Date: Thu, 19 Dec 2019 21:20:38 -0800 Subject: [PATCH 2/2] Addresses comments. --- ...cy.js => ConditionSetCompositionPolicy.js} | 0 ...s => ConditionSetCompositionPolicySpec.js} | 36 ++++++++----------- 2 files changed, 14 insertions(+), 22 deletions(-) rename src/plugins/conditionSet/{conditionSetCompositionPolicy.js => ConditionSetCompositionPolicy.js} (100%) rename src/plugins/conditionSet/{conditionSetCompositionPolicySpec.js => ConditionSetCompositionPolicySpec.js} (75%) diff --git a/src/plugins/conditionSet/conditionSetCompositionPolicy.js b/src/plugins/conditionSet/ConditionSetCompositionPolicy.js similarity index 100% rename from src/plugins/conditionSet/conditionSetCompositionPolicy.js rename to src/plugins/conditionSet/ConditionSetCompositionPolicy.js diff --git a/src/plugins/conditionSet/conditionSetCompositionPolicySpec.js b/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js similarity index 75% rename from src/plugins/conditionSet/conditionSetCompositionPolicySpec.js rename to src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js index 38096ec5c6..d2c2b111e9 100644 --- a/src/plugins/conditionSet/conditionSetCompositionPolicySpec.js +++ b/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js @@ -20,51 +20,43 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import ConditionSetCompositionPolicy from './conditionSetCompositionPolicy'; +import ConditionSetCompositionPolicy from './ConditionSetCompositionPolicy'; import { createOpenMct } from "testTools"; describe('ConditionSetCompositionPolicy', () => { let policy; - let openmct; let parentDomainObject; let childDomainObject; let composition; beforeEach(function () { - openmct = createOpenMct(); - policy = new ConditionSetCompositionPolicy(openmct); + policy = new ConditionSetCompositionPolicy(); parentDomainObject = {}; childDomainObject = {}; composition = {}; }); it('returns true for object types that are not conditionSets', function () { - parentDomainObject = { - type: 'random' - }; - childDomainObject = { - type: '' - }; + 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: '' - }; + 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' - }; + 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); });