mirror of
https://github.com/nasa/openmct.git
synced 2025-06-18 23:28:14 +00:00
158 lines
4.8 KiB
JavaScript
158 lines
4.8 KiB
JavaScript
/*****************************************************************************
|
|
* Open MCT, Copyright (c) 2014-2024, 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.js';
|
|
|
|
describe('The Forms API', () => {
|
|
let openmct;
|
|
let element;
|
|
|
|
beforeEach((done) => {
|
|
element = document.createElement('div');
|
|
element.style.display = 'block';
|
|
element.style.width = '1920px';
|
|
element.style.height = '1080px';
|
|
|
|
openmct = createOpenMct();
|
|
openmct.on('start', done);
|
|
|
|
openmct.startHeadless(element);
|
|
});
|
|
|
|
afterEach(() => {
|
|
return resetApplicationState(openmct);
|
|
});
|
|
|
|
it('openmct supports form API', () => {
|
|
expect(openmct.forms).not.toBe(null);
|
|
});
|
|
|
|
describe('check default form controls exists', () => {
|
|
it('autocomplete', () => {
|
|
const control = openmct.forms.getFormControl('autocomplete');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('clock', () => {
|
|
const control = openmct.forms.getFormControl('composite');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('datetime', () => {
|
|
const control = openmct.forms.getFormControl('datetime');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('file-input', () => {
|
|
const control = openmct.forms.getFormControl('file-input');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('locator', () => {
|
|
const control = openmct.forms.getFormControl('locator');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('numberfield', () => {
|
|
const control = openmct.forms.getFormControl('numberfield');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('select', () => {
|
|
const control = openmct.forms.getFormControl('select');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('textarea', () => {
|
|
const control = openmct.forms.getFormControl('textarea');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
|
|
it('textfield', () => {
|
|
const control = openmct.forms.getFormControl('textfield');
|
|
expect(control).not.toBe(null);
|
|
});
|
|
});
|
|
|
|
it('supports user defined form controls', () => {
|
|
const newFormControl = {
|
|
show: () => {
|
|
console.log('show new control');
|
|
},
|
|
destroy: () => {
|
|
console.log('destroy');
|
|
}
|
|
};
|
|
openmct.forms.addNewFormControl('newFormControl', newFormControl);
|
|
const control = openmct.forms.getFormControl('newFormControl');
|
|
expect(control).not.toBe(null);
|
|
expect(control.show).not.toBe(null);
|
|
expect(control.destroy).not.toBe(null);
|
|
});
|
|
|
|
describe('show form on UI', () => {
|
|
let formStructure;
|
|
|
|
beforeEach(() => {
|
|
formStructure = {
|
|
title: 'Test Show Form',
|
|
sections: [
|
|
{
|
|
rows: [
|
|
{
|
|
key: 'name',
|
|
control: 'textfield',
|
|
name: 'Title',
|
|
pattern: '\\S+',
|
|
required: false,
|
|
cssClass: 'l-input-lg',
|
|
value: 'Test Name'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
});
|
|
|
|
it('when container element is provided', (done) => {
|
|
openmct.forms.showCustomForm(formStructure, { element }).catch(() => {
|
|
done();
|
|
});
|
|
const titleElement = element.querySelector('.c-overlay__dialog-title');
|
|
expect(titleElement.textContent).toBe(formStructure.title);
|
|
|
|
element.querySelector('.js-cancel-button').click();
|
|
});
|
|
|
|
it('when container element is not provided', (done) => {
|
|
openmct.forms.showForm(formStructure).catch(() => {
|
|
done();
|
|
});
|
|
|
|
const titleElement = document.querySelector('.c-overlay__dialog-title');
|
|
const title = titleElement.textContent;
|
|
|
|
expect(title).toBe(formStructure.title);
|
|
document.querySelector('.js-cancel-button').click();
|
|
});
|
|
});
|
|
});
|