Added tests. Fixes #1364

This commit is contained in:
Henry 2017-02-21 19:53:56 -08:00
parent 3bd556a406
commit c1d6e21c3c
5 changed files with 74 additions and 24 deletions

View File

@ -74,7 +74,7 @@ define([
openmct.legacyExtension(type, extension)
})
});
openmct.types.register("generator", {
openmct.types.addType("generator", {
label: "Sine Wave Generator",
description: "For development use. Generates example streaming telemetry data using a simple sine wave algorithm.",
cssClass: "icon-telemetry",

View File

@ -31,14 +31,14 @@
require(['openmct'], function (openmct) {
[
'example/imagery',
'example/eventGenerator',
'example/generator'
'example/eventGenerator'
].forEach(
openmct.legacyRegistry.enable.bind(openmct.legacyRegistry)
);
openmct.install(openmct.plugins.myItems);
openmct.install(openmct.plugins.localStorage);
openmct.install(openmct.plugins.espresso);
openmct.install(openmct.plugins.Generator());
openmct.start();
});
</script>

View File

@ -118,7 +118,7 @@ define(
formModel = this.createModel(formValue);
formModel.location = parent.getId();
this.domainObject.useCapability("mutation", function (model) {
this.domainObject.useCapability("mutation", function () {
return formModel;
});
return this.domainObject;

View File

@ -215,7 +215,6 @@ define(
return telemetryService.requestTelemetry([fullRequest]);
}
// TODO: Adapt request / options?
if (isLegacyProvider) {
// If a telemetryService is not available,
// getTelemetryService() should reject, and this should
@ -263,7 +262,7 @@ define(
var defaultDomain = (metadata.valuesForHints(['domain'])[0] || {}).key;
var defaultRange = (metadata.valuesForHints(['range'])[0] || {}).key;
var isLegacyProvider = telemetryAPI.findRequestProvider(domainObject) ===
var isLegacyProvider = telemetryAPI.findSubscriptionProvider(domainObject) ===
telemetryAPI.legacyProvider;
function update(telemetry) {

View File

@ -33,9 +33,8 @@ define(
mockReject,
mockUnsubscribe,
telemetry,
mockAPI,
legacyTelemetryProvider;
mockTelemetryAPI,
mockAPI;
function mockPromise(value) {
return {
@ -45,6 +44,9 @@ define(
};
}
function noop() {
}
beforeEach(function () {
mockInjector = jasmine.createSpyObj("$injector", ["get"]);
mockQ = jasmine.createSpyObj("$q", ["when", "reject"]);
@ -81,22 +83,21 @@ define(
// Bubble up...
mockReject.then.andReturn(mockReject);
legacyTelemetryProvider = {};
mockTelemetryAPI = jasmine.createSpyObj("telemetryAPI", [
"getMetadata",
"subscribe",
"request",
"findRequestProvider",
"findSubscriptionProvider"
]);
mockTelemetryAPI.getMetadata.andReturn({
valuesForHints: function () {
return [];
}
});
mockAPI = {
telemetry: {
getMetadata: function () {
return {
valuesForHints: function () {
return [];
}
};
},
findRequestProvider: function () {
return legacyTelemetryProvider;
},
legacyProvider: legacyTelemetryProvider
}
telemetry: mockTelemetryAPI
};
telemetry = new TelemetryCapability(
@ -134,7 +135,6 @@ define(
key: "testKey", // from model
start: 42 // from argument
}]);
});
it("provides an empty series when telemetry is missing", function () {
@ -182,6 +182,57 @@ define(
expect(mockLog.warn).toHaveBeenCalled();
});
it("if a new style telemetry source is available, use it", function () {
var mockProvider = {};
mockTelemetryAPI.findSubscriptionProvider.andReturn(mockProvider);
telemetry.subscribe(noop, {});
expect(mockTelemetryService.subscribe).not.toHaveBeenCalled();
expect(mockTelemetryAPI.subscribe).toHaveBeenCalled();
});
it("if a new style telemetry source is not available, revert to old API", function () {
mockTelemetryAPI.findSubscriptionProvider.andReturn(undefined);
telemetry.subscribe(noop, {});
expect(mockTelemetryAPI.subscribe).not.toHaveBeenCalled();
expect(mockTelemetryService.subscribe).toHaveBeenCalled();
});
it("Wraps telemetry returned from the new API as a telemetry series", function () {
var returnedTelemetry;
var mockTelemetry = [{
prop1: "val1",
prop2: "val2",
prop3: "val3"
},
{
prop1: "val4",
prop2: "val5",
prop3: "val6"
}];
var mockProvider = {};
var dunzo = false;
mockTelemetryAPI.findRequestProvider.andReturn(mockProvider);
mockTelemetryAPI.request.andReturn(Promise.resolve(mockTelemetry));
telemetry.requestData({}).then(function (data) {
returnedTelemetry = data;
dunzo = true;
});
waitsFor(function () {
return dunzo;
});
runs(function () {
expect(returnedTelemetry.getPointCount).toBeDefined();
expect(returnedTelemetry.getDomainValue).toBeDefined();
expect(returnedTelemetry.getRangeValue).toBeDefined();
expect(returnedTelemetry.getPointCount()).toBe(2);
});
});
it("allows subscriptions to updates", function () {
var mockCallback = jasmine.createSpy("callback"),
subscription = telemetry.subscribe(mockCallback);