Skip to content

Commit 374c363

Browse files
VWoeltjenlarkin
authored andcommitted
[Plot] Handle telemetry panels from plot policy (nasa#1732)
* [Plot] Check for telemetry panels ...from plot view policy, and don't try to interrogate them for telemetry metadata that they will not have. Fixes nasa#1728 * [Plot] Update test case for policy ...to provide an adapted object with expected properties * [Plot] Add tests to very plot policy for panels ...to verify fix for nasa#1728
1 parent 8754c43 commit 374c363

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

platform/features/plot/src/policies/PlotViewPolicy.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ define(
3636

3737
PlotViewPolicy.prototype.hasNumericTelemetry = function (domainObject) {
3838
var adaptedObject = domainObject.useCapability('adapter');
39+
40+
if (!adaptedObject.telemetry) {
41+
return domainObject.hasCapability('delegation') &&
42+
domainObject.getCapability('delegation')
43+
.doesDelegateCapability('telemetry');
44+
}
45+
3946
var metadata = this.openmct.telemetry.getMetadata(adaptedObject);
4047
var rangeValues = metadata.valuesForHints(['range']);
4148
if (rangeValues.length === 0) {

platform/features/plot/test/policies/PlotViewPolicySpec.js

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,19 @@ define(
2727
describe("Plot view policy", function () {
2828
var testView,
2929
mockDomainObject,
30+
testAdaptedObject,
3031
openmct,
3132
telemetryMetadata,
3233
policy;
3334

3435
beforeEach(function () {
3536
testView = { key: "plot" };
37+
testAdaptedObject = { telemetry: {} };
3638
mockDomainObject = jasmine.createSpyObj(
3739
'domainObject',
38-
['useCapability']
40+
['useCapability', 'hasCapability', 'getCapability']
3941
);
40-
mockDomainObject.useCapability.andReturn('adaptedObject');
42+
mockDomainObject.useCapability.andReturn(testAdaptedObject);
4143
openmct = {
4244
telemetry: jasmine.createSpyObj('telemetryAPI', [
4345
'getMetadata'
@@ -56,7 +58,7 @@ define(
5658
expect(mockDomainObject.useCapability)
5759
.toHaveBeenCalledWith('adapter');
5860
expect(openmct.telemetry.getMetadata)
59-
.toHaveBeenCalledWith('adaptedObject');
61+
.toHaveBeenCalledWith(testAdaptedObject);
6062
expect(telemetryMetadata.valuesForHints)
6163
.toHaveBeenCalledWith(['range']);
6264
});
@@ -87,6 +89,30 @@ define(
8789
expect(policy.allow(testView, mockDomainObject)).toBe(true);
8890
});
8991

92+
it('returns true for telemetry delegators', function () {
93+
delete testAdaptedObject.telemetry;
94+
mockDomainObject.hasCapability.andCallFake(function (c) {
95+
return c === 'delegation';
96+
});
97+
mockDomainObject.getCapability.andReturn(
98+
jasmine.createSpyObj('delegation', [
99+
'doesDelegateCapability'
100+
])
101+
);
102+
mockDomainObject.getCapability('delegation')
103+
.doesDelegateCapability.andCallFake(function (c) {
104+
return c === 'telemetry';
105+
});
106+
expect(policy.allow(testView, mockDomainObject)).toBe(true);
107+
expect(openmct.telemetry.getMetadata).not.toHaveBeenCalled();
108+
});
109+
110+
it('returns true for non-telemetry non-delegators', function () {
111+
delete testAdaptedObject.telemetry;
112+
mockDomainObject.hasCapability.andReturn(false);
113+
expect(policy.allow(testView, mockDomainObject)).toBe(false);
114+
});
115+
90116
it("allows other views", function () {
91117
testView.key = "somethingElse";
92118
expect(policy.allow(testView, mockDomainObject)).toBe(true);

0 commit comments

Comments
 (0)