diff --git a/src/plugins/condition/ConditionSetCompositionPolicy.js b/src/plugins/condition/ConditionSetCompositionPolicy.js index 90179bad6f..297f2831d8 100644 --- a/src/plugins/condition/ConditionSetCompositionPolicy.js +++ b/src/plugins/condition/ConditionSetCompositionPolicy.js @@ -24,9 +24,7 @@ export default function ConditionSetCompositionPolicy(openmct) { return { allow: function (parent, child) { let parentType = parent.type; - let childType = child.type; - - if (parentType === 'conditionSet' && childType !== 'condition') { + if (parentType === 'conditionSet' && !openmct.telemetry.isTelemetryObject(child)) { return false; } diff --git a/src/plugins/condition/ConditionSetCompositionPolicySpec.js b/src/plugins/condition/ConditionSetCompositionPolicySpec.js index d2c2b111e9..ee6a7d6b04 100644 --- a/src/plugins/condition/ConditionSetCompositionPolicySpec.js +++ b/src/plugins/condition/ConditionSetCompositionPolicySpec.js @@ -21,43 +21,67 @@ *****************************************************************************/ import ConditionSetCompositionPolicy from './ConditionSetCompositionPolicy'; -import { createOpenMct } from "testTools"; -describe('ConditionSetCompositionPolicy', () => { +fdescribe('ConditionSetCompositionPolicy', () => { + let policy; + let testTelemetryObject; + let openmct = {}; let parentDomainObject; - let childDomainObject; let composition; - beforeEach(function () { - policy = new ConditionSetCompositionPolicy(); + beforeAll(function () { + testTelemetryObject = { + identifier:{ namespace: "", key: "test-object"}, + type: "test-object", + name: "Test Object", + telemetry: { + values: [{ + key: "some-key", + name: "Some attribute", + hints: { + domain: 1 + } + }, { + key: "some-other-key", + name: "Another attribute", + hints: { + range: 1 + } + }] + } + }; + openmct.objects = jasmine.createSpyObj('objects', ['get', 'makeKeyString']); + openmct.objects.get.and.returnValue(testTelemetryObject); + openmct.objects.makeKeyString.and.returnValue(testTelemetryObject.identifier.key); + openmct.telemetry = jasmine.createSpyObj('telemetry', ['isTelemetryObject']); + 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); + openmct.telemetry.isTelemetryObject.and.returnValue(false); + expect(policy.allow(parentDomainObject, {})).toBe(true); }); - it('returns false for object types that are not conditions when parent is a conditionSet', function () { + it('returns false for object types that are not telemetry objects when parent is a conditionSet', function () { parentDomainObject.type = 'conditionSet'; - childDomainObject.type = ''; - expect(policy.allow(parentDomainObject, childDomainObject)).toBe(false); + openmct.telemetry.isTelemetryObject.and.returnValue(false); + expect(policy.allow(parentDomainObject, {})).toBe(false); }); - it('returns true for object types that are conditions when parent is a conditionSet', function () { + it('returns true for object types that are telemetry objects when parent is a conditionSet', function () { parentDomainObject.type = 'conditionSet'; - childDomainObject.type = 'condition'; - expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true); + openmct.telemetry.isTelemetryObject.and.returnValue(true); + expect(policy.allow(parentDomainObject, testTelemetryObject)).toBe(true); }); - it('returns true for object types that are conditions when parent is not a conditionSet', function () { + it('returns true for object types that are telemetry objects when parent is not a conditionSet', function () { parentDomainObject.type = 'random'; - childDomainObject.type = 'condition'; - expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true); + openmct.telemetry.isTelemetryObject.and.returnValue(true); + expect(policy.allow(parentDomainObject, testTelemetryObject)).toBe(true); }); }); diff --git a/src/plugins/condition/plugin.js b/src/plugins/condition/plugin.js index ced6477808..e0c14c3c82 100644 --- a/src/plugins/condition/plugin.js +++ b/src/plugins/condition/plugin.js @@ -20,6 +20,7 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ import ConditionSetViewProvider from './ConditionSetViewProvider.js'; +import ConditionSetCompositionPolicy from "@/plugins/condition/ConditionSetCompositionPolicy"; export default function ConditionPlugin() { @@ -45,6 +46,8 @@ export default function ConditionPlugin() { } }); + openmct.composition.addPolicy(new ConditionSetCompositionPolicy(openmct).allow); + openmct.objectViews.addProvider(new ConditionSetViewProvider(openmct)); }