mirror of
https://github.com/nasa/openmct.git
synced 2025-06-23 01:18:57 +00:00
Notification api tests (#3651)
This commit is contained in:
154
src/api/notifications/NotificationAPISpec.js
Normal file
154
src/api/notifications/NotificationAPISpec.js
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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 NotificationAPI from './NotificationAPI';
|
||||||
|
|
||||||
|
describe('The Notifiation API', () => {
|
||||||
|
let notificationAPIInstance;
|
||||||
|
let defaultTimeout = 4000;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
notificationAPIInstance = new NotificationAPI();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the info method', () => {
|
||||||
|
let message = 'Example Notification Message';
|
||||||
|
let severity = 'info';
|
||||||
|
let notificationModel;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
notificationModel = notificationAPIInstance.info(message).model;
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
notificationAPIInstance.dismissAllNotifications();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('shows a string message with info severity', () => {
|
||||||
|
expect(notificationModel.message).toEqual(message);
|
||||||
|
expect(notificationModel.severity).toEqual(severity);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('auto dismisses the notification after a brief timeout', (done) => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
expect(notificationAPIInstance.notifications.length).toEqual(0);
|
||||||
|
done();
|
||||||
|
}, defaultTimeout);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the alert method', () => {
|
||||||
|
let message = 'Example alert message';
|
||||||
|
let severity = 'alert';
|
||||||
|
let notificationModel;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
notificationModel = notificationAPIInstance.alert(message).model;
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
notificationAPIInstance.dismissAllNotifications();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('shows a string message, with alert severity', () => {
|
||||||
|
expect(notificationModel.message).toEqual(message);
|
||||||
|
expect(notificationModel.severity).toEqual(severity);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not auto dismiss the notification', (done) => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
expect(notificationAPIInstance.notifications.length).toEqual(1);
|
||||||
|
done();
|
||||||
|
}, defaultTimeout);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the error method', () => {
|
||||||
|
let message = 'Example error message';
|
||||||
|
let severity = 'error';
|
||||||
|
let notificationModel;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
notificationModel = notificationAPIInstance.error(message).model;
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
notificationAPIInstance.dismissAllNotifications();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('shows a string message, with severity error', () => {
|
||||||
|
expect(notificationModel.message).toEqual(message);
|
||||||
|
expect(notificationModel.severity).toEqual(severity);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not auto dismiss the notification', (done) => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
expect(notificationAPIInstance.notifications.length).toEqual(1);
|
||||||
|
done();
|
||||||
|
}, defaultTimeout);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('the progress method', () => {
|
||||||
|
let title = 'This is a progress notification';
|
||||||
|
let message1 = 'Example progress message 1';
|
||||||
|
let message2 = 'Example progress message 2';
|
||||||
|
let percentage1 = 50;
|
||||||
|
let percentage2 = 99.9;
|
||||||
|
let severity = 'info';
|
||||||
|
let notification;
|
||||||
|
let updatedPercentage;
|
||||||
|
let updatedMessage;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
notification = notificationAPIInstance.progress(title, percentage1, message1);
|
||||||
|
notification.on('progress', (percentage, text) => {
|
||||||
|
updatedPercentage = percentage;
|
||||||
|
updatedMessage = text;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
notificationAPIInstance.dismissAllNotifications();
|
||||||
|
});
|
||||||
|
|
||||||
|
it ('shows a notification with a message, progress message, percentage and info severity', () => {
|
||||||
|
expect(notification.model.message).toEqual(title);
|
||||||
|
expect(notification.model.severity).toEqual(severity);
|
||||||
|
expect(notification.model.progressText).toEqual(message1);
|
||||||
|
expect(notification.model.progressPerc).toEqual(percentage1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it ('allows dynamically updating the progress attributes', () => {
|
||||||
|
notification.progress(percentage2, message2);
|
||||||
|
|
||||||
|
expect(updatedPercentage).toEqual(percentage2);
|
||||||
|
expect(updatedMessage).toEqual(message2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it ('allows dynamically dismissing of progress notification', () => {
|
||||||
|
notification.dismiss();
|
||||||
|
|
||||||
|
expect(notificationAPIInstance.notifications.length).toEqual(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user