mirror of
https://github.com/nasa/openmct.git
synced 2024-12-29 17:38:53 +00:00
Display layout plugin test coverage to 20% or more (#3158)
* Display layout plugin test coverage to 20% or more Resolves #3157 * Changes address original issue? Yes * Unit tests included and/or updated with changes? Yes * Command line build passes? Yes * Changes have been smoke-tested? Yes * Testing instructions included? Yes * Add disable-dev-shm-usage flag to ChromeHeadless launcher config in karma * Adding disable dev shm usage flag to chromeheadless launcher and setting log level to debug * Adding np activity timeout to 60000 * Adding no-sandbox flag for headless chrome * Run tests without headless chrome to see if that fixes the fonts issue * Fix typo * Trying chrome headless with increased memory * Reset karma.conf back to master * Trying karma chrome launcher 3.1.0 * Revert to master code for package.json and karma.conf.js * Trying node 12 browsers * Revert back to node:13 browsers * Revert to 10.2.1-browsers circle ci node browsers variant image for docker * Rebuild node-sass for node 10.x * Upgrading to 13.14.0 node * Remove node options * Don't restore cache before npm install * Comment out tests with setTimeout * Trying node 8-browsers * Try firefox headless * Firefox version typo * Revert focused tests * Exclude setTimeout tests * Increase browser connectivity timeout * Trying large timeout with Chromeheadless * Going back to Firefox and setting browser timeout to 1.5 mins * Fixes linting issues * Fix broken tests and add some null checks in the code * Change double quotes to single quotes
This commit is contained in:
parent
abc458cef4
commit
e32f465f7a
@ -422,7 +422,7 @@ describe('the plugin', function () {
|
|||||||
"telemetry": "any",
|
"telemetry": "any",
|
||||||
"operation": "isStale",
|
"operation": "isStale",
|
||||||
"input": [
|
"input": [
|
||||||
"1"
|
"0.2"
|
||||||
],
|
],
|
||||||
"metadata": "dataReceived"
|
"metadata": "dataReceived"
|
||||||
}
|
}
|
||||||
@ -481,12 +481,12 @@ describe('the plugin', function () {
|
|||||||
utc: undefined
|
utc: undefined
|
||||||
});
|
});
|
||||||
done();
|
done();
|
||||||
}, 1500);
|
}, 300);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not evaluate as stale when telemetry is received in the allotted time', (done) => {
|
it('should not evaluate as stale when telemetry is received in the allotted time', (done) => {
|
||||||
const date = Date.now();
|
const date = Date.now();
|
||||||
conditionSetDomainObject.configuration.conditionCollection[0].configuration.criteria[0].input = ["2"];
|
conditionSetDomainObject.configuration.conditionCollection[0].configuration.criteria[0].input = ["0.4"];
|
||||||
let conditionMgr = new ConditionManager(conditionSetDomainObject, openmct);
|
let conditionMgr = new ConditionManager(conditionSetDomainObject, openmct);
|
||||||
conditionMgr.on('conditionSetResultUpdated', mockListener);
|
conditionMgr.on('conditionSetResultUpdated', mockListener);
|
||||||
conditionMgr.telemetryObjects = {
|
conditionMgr.telemetryObjects = {
|
||||||
@ -507,7 +507,7 @@ describe('the plugin', function () {
|
|||||||
utc: undefined
|
utc: undefined
|
||||||
});
|
});
|
||||||
done();
|
done();
|
||||||
}, 1500);
|
}, 300);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -550,7 +550,11 @@ define(['lodash'], function (_) {
|
|||||||
function unitsOnly(items) {
|
function unitsOnly(items) {
|
||||||
let results = items.filter((item) => {
|
let results = items.filter((item) => {
|
||||||
let currentItem = item[0];
|
let currentItem = item[0];
|
||||||
let metadata = this.openmct.telemetry.getMetadata(currentItem.context.item);
|
let metadata = openmct.telemetry.getMetadata(currentItem.context.item);
|
||||||
|
if (!metadata) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
let hasUnits = metadata
|
let hasUnits = metadata
|
||||||
.valueMetadatas
|
.valueMetadatas
|
||||||
.filter((metadatum) => metadatum.unit)
|
.filter((metadatum) => metadatum.unit)
|
||||||
|
350
src/plugins/displayLayout/pluginSpec.js
Normal file
350
src/plugins/displayLayout/pluginSpec.js
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2020, 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 { createOpenMct, resetApplicationState } from 'utils/testing';
|
||||||
|
import DisplayLayoutPlugin from './plugin';
|
||||||
|
|
||||||
|
describe('the plugin', function () {
|
||||||
|
let element;
|
||||||
|
let child;
|
||||||
|
let openmct;
|
||||||
|
let displayLayoutDefinition;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
resetApplicationState(openmct);
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach((done) => {
|
||||||
|
openmct = createOpenMct();
|
||||||
|
openmct.install(new DisplayLayoutPlugin({
|
||||||
|
showAsView: []
|
||||||
|
}));
|
||||||
|
displayLayoutDefinition = openmct.types.get('layout');
|
||||||
|
|
||||||
|
element = document.createElement('div');
|
||||||
|
child = document.createElement('div');
|
||||||
|
element.appendChild(child);
|
||||||
|
|
||||||
|
openmct.on('start', done);
|
||||||
|
openmct.startHeadless();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
resetApplicationState(openmct);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('defines a display layout object type with the correct key', () => {
|
||||||
|
expect(displayLayoutDefinition.definition.name).toEqual('Display Layout');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('provides a view', () => {
|
||||||
|
const testViewObject = {
|
||||||
|
id: 'test-object',
|
||||||
|
type: 'layout',
|
||||||
|
configuration: {
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': '55122607-e65e-44d5-9c9d-9c31a914ca89'
|
||||||
|
},
|
||||||
|
'x': 8,
|
||||||
|
'y': 3,
|
||||||
|
'width': 10,
|
||||||
|
'height': 5,
|
||||||
|
'displayMode': 'all',
|
||||||
|
'value': 'sin',
|
||||||
|
'stroke': '',
|
||||||
|
'fill': '',
|
||||||
|
'color': '',
|
||||||
|
'size': '13px',
|
||||||
|
'type': 'telemetry-view',
|
||||||
|
'id': 'deb9f839-80ad-4ccf-a152-5c763ceb7d7e'
|
||||||
|
|
||||||
|
}
|
||||||
|
],
|
||||||
|
layoutGrid: [10, 10]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const applicableViews = openmct.objectViews.get(testViewObject);
|
||||||
|
let displayLayoutViewProvider = applicableViews.find((viewProvider) => viewProvider.key === 'layout.view');
|
||||||
|
expect(displayLayoutViewProvider).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the alpha numeric format view', () => {
|
||||||
|
let displayLayoutItem;
|
||||||
|
let telemetryItem;
|
||||||
|
let selection;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
displayLayoutItem = {
|
||||||
|
'composition': [
|
||||||
|
],
|
||||||
|
'configuration': {
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': '55122607-e65e-44d5-9c9d-9c31a914ca89'
|
||||||
|
},
|
||||||
|
'x': 8,
|
||||||
|
'y': 3,
|
||||||
|
'width': 10,
|
||||||
|
'height': 5,
|
||||||
|
'displayMode': 'all',
|
||||||
|
'value': 'sin',
|
||||||
|
'stroke': '',
|
||||||
|
'fill': '',
|
||||||
|
'color': '',
|
||||||
|
'size': '13px',
|
||||||
|
'type': 'telemetry-view',
|
||||||
|
'id': 'deb9f839-80ad-4ccf-a152-5c763ceb7d7e'
|
||||||
|
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'layoutGrid': [
|
||||||
|
10,
|
||||||
|
10
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'name': 'Display Layout',
|
||||||
|
'type': 'layout',
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': 'c5e636c1-6771-4c9c-b933-8665cab189b3'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
telemetryItem = {
|
||||||
|
'telemetry': {
|
||||||
|
'period': 5,
|
||||||
|
'amplitude': 5,
|
||||||
|
'offset': 5,
|
||||||
|
'dataRateInHz': 5,
|
||||||
|
'phase': 5,
|
||||||
|
'randomness': 0
|
||||||
|
},
|
||||||
|
'name': 'Sine Wave Generator',
|
||||||
|
'type': 'generator',
|
||||||
|
'modified': 1592851063871,
|
||||||
|
'location': 'mine',
|
||||||
|
'persisted': 1592851063871,
|
||||||
|
'id': '55122607-e65e-44d5-9c9d-9c31a914ca89',
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': '55122607-e65e-44d5-9c9d-9c31a914ca89'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
selection = [
|
||||||
|
[{
|
||||||
|
context: {
|
||||||
|
'layoutItem': displayLayoutItem.configuration.items[0],
|
||||||
|
'item': telemetryItem,
|
||||||
|
'index': 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
context: {
|
||||||
|
'item': displayLayoutItem,
|
||||||
|
'supportsMultiSelect': true
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
it('provides an alphanumeric format view', () => {
|
||||||
|
const displayLayoutAlphaNumFormatView = openmct.inspectorViews.get(selection);
|
||||||
|
expect(displayLayoutAlphaNumFormatView.length).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the toolbar', () => {
|
||||||
|
let displayLayoutItem;
|
||||||
|
let selection;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
displayLayoutItem = {
|
||||||
|
'composition': [
|
||||||
|
],
|
||||||
|
'configuration': {
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'fill': '#717171',
|
||||||
|
'stroke': '',
|
||||||
|
'x': 1,
|
||||||
|
'y': 1,
|
||||||
|
'width': 10,
|
||||||
|
'height': 5,
|
||||||
|
'type': 'box-view',
|
||||||
|
'id': '89b88746-d325-487b-aec4-11b79afff9e8'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'x': 18,
|
||||||
|
'y': 9,
|
||||||
|
'x2': 23,
|
||||||
|
'y2': 4,
|
||||||
|
'stroke': '#717171',
|
||||||
|
'type': 'line-view',
|
||||||
|
'id': '57d49a28-7863-43bd-9593-6570758916f0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': '55122607-e65e-44d5-9c9d-9c31a914ca89'
|
||||||
|
},
|
||||||
|
'x': 8,
|
||||||
|
'y': 3,
|
||||||
|
'width': 10,
|
||||||
|
'height': 5,
|
||||||
|
'displayMode': 'all',
|
||||||
|
'value': 'sin',
|
||||||
|
'stroke': '',
|
||||||
|
'fill': '',
|
||||||
|
'color': '',
|
||||||
|
'size': '13px',
|
||||||
|
'type': 'telemetry-view',
|
||||||
|
'id': 'deb9f839-80ad-4ccf-a152-5c763ceb7d7e'
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
'width': 32,
|
||||||
|
'height': 18,
|
||||||
|
'x': 78,
|
||||||
|
'y': 8,
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': 'bdeb91ab-3a7e-4a71-9dd2-39d73644e136'
|
||||||
|
},
|
||||||
|
'hasFrame': true,
|
||||||
|
'type': 'subobject-view',
|
||||||
|
'id': 'c0ff485a-344c-4e70-8d83-a9d9998a69fc'
|
||||||
|
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'layoutGrid': [
|
||||||
|
10,
|
||||||
|
10
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'name': 'Display Layout',
|
||||||
|
'type': 'layout',
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': 'c5e636c1-6771-4c9c-b933-8665cab189b3'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
selection = [
|
||||||
|
[{
|
||||||
|
context: {
|
||||||
|
'layoutItem': displayLayoutItem.configuration.items[1],
|
||||||
|
'index': 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
context: {
|
||||||
|
'item': displayLayoutItem,
|
||||||
|
'supportsMultiSelect': true
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
context: {
|
||||||
|
'layoutItem': displayLayoutItem.configuration.items[0],
|
||||||
|
'index': 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
context: {
|
||||||
|
item: displayLayoutItem,
|
||||||
|
'supportsMultiSelect': true
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
context: {
|
||||||
|
'layoutItem': displayLayoutItem.configuration.items[2],
|
||||||
|
'item': displayLayoutItem.configuration.items[2],
|
||||||
|
'index': 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
context: {
|
||||||
|
item: displayLayoutItem,
|
||||||
|
'supportsMultiSelect': true
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
context: {
|
||||||
|
'item': {
|
||||||
|
|
||||||
|
'composition': [
|
||||||
|
{
|
||||||
|
'namespace': '',
|
||||||
|
'key': '55122607-e65e-44d5-9c9d-9c31a914ca89'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'configuration': {
|
||||||
|
'series': [
|
||||||
|
{
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': '55122607-e65e-44d5-9c9d-9c31a914ca89'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'yAxis': {
|
||||||
|
},
|
||||||
|
'xAxis': {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'name': 'Unnamed Overlay Plot',
|
||||||
|
'type': 'telemetry.plot.overlay',
|
||||||
|
'modified': 1594142141929,
|
||||||
|
'location': 'mine',
|
||||||
|
'identifier': {
|
||||||
|
'namespace': '',
|
||||||
|
'key': 'bdeb91ab-3a7e-4a71-9dd2-39d73644e136'
|
||||||
|
},
|
||||||
|
'persisted': 1594142141929
|
||||||
|
|
||||||
|
},
|
||||||
|
'layoutItem': displayLayoutItem.configuration.items[3],
|
||||||
|
'index': 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
context: {
|
||||||
|
item: displayLayoutItem,
|
||||||
|
'supportsMultiSelect': true
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
it('provides controls including separators', () => {
|
||||||
|
const displayLayoutToolbar = openmct.toolbars.get(selection);
|
||||||
|
expect(displayLayoutToolbar.length).toBe(9);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user