diff --git a/platform/telemetry/src/TelemetryCapability.js b/platform/telemetry/src/TelemetryCapability.js index b5caa6e027..473aafcdb9 100644 --- a/platform/telemetry/src/TelemetryCapability.js +++ b/platform/telemetry/src/TelemetryCapability.js @@ -29,6 +29,13 @@ define( function () { "use strict"; + var ZERO = function () { return 0; }, + EMPTY_SERIES = { + getPointCount: ZERO, + getDomainValue: ZERO, + getRangeValue: ZERO + }; + /** * A telemetry capability provides a means of requesting telemetry * for a specific object, and for unwrapping the response (to get @@ -102,7 +109,8 @@ define( // Pull out the relevant field from the larger, // structured response. function getRelevantResponse(response) { - return ((response || {})[source] || {})[key] || {}; + return ((response || {})[source] || {})[key] || + EMPTY_SERIES; } // Issue a request to the service @@ -182,4 +190,4 @@ define( return TelemetryCapability; } -); \ No newline at end of file +); diff --git a/platform/telemetry/test/TelemetryCapabilitySpec.js b/platform/telemetry/test/TelemetryCapabilitySpec.js index e75b9927be..d19048b20d 100644 --- a/platform/telemetry/test/TelemetryCapabilitySpec.js +++ b/platform/telemetry/test/TelemetryCapabilitySpec.js @@ -118,6 +118,13 @@ define( }); + it("provides an empty series when telemetry is missing", function () { + var series; + mockTelemetryService.requestTelemetry.andReturn(mockPromise({})); + telemetry.requestData({}).then(function (s) { series = s; }); + expect(series.getPointCount()).toEqual(0); + }); + it("provides telemetry metadata", function () { expect(telemetry.getMetadata()).toEqual({ id: "testId", // from domain object @@ -184,4 +191,4 @@ define( }); }); } -); \ No newline at end of file +);