97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
import _ from 'lodash';
|
|
import {TriggerPanelCtrl} from '../triggers_panel_ctrl';
|
|
import {PANEL_DEFAULTS, DEFAULT_TARGET} from '../triggers_panel_ctrl';
|
|
|
|
describe('TriggerPanelCtrl', () => {
|
|
let ctx = {};
|
|
let datasourceSrvMock, zabbixDSMock;
|
|
|
|
beforeEach(() => {
|
|
ctx = {scope: {panel: PANEL_DEFAULTS}};
|
|
zabbixDSMock = {
|
|
replaceTemplateVars: () => {},
|
|
zabbix: {
|
|
getTriggers: jest.fn().mockReturnValue([generateTrigger("1"), generateTrigger("1")]),
|
|
getAcknowledges: jest.fn().mockReturnValue(Promise.resolve([]))
|
|
}
|
|
};
|
|
|
|
datasourceSrvMock = {
|
|
getMetricSources: () => {
|
|
return [
|
|
{ meta: {id: 'alexanderzobnin-zabbix-datasource'}, value: {}, name: 'zabbix_default' },
|
|
{ meta: {id: 'alexanderzobnin-zabbix-datasource'}, value: {}, name: 'zabbix' },
|
|
{ meta: {id: 'graphite'}, value: {}, name: 'graphite' },
|
|
];
|
|
},
|
|
get: () => Promise.resolve(zabbixDSMock)
|
|
};
|
|
});
|
|
|
|
describe('When adding new panel', () => {
|
|
it('should suggest all zabbix data sources', () => {
|
|
ctx.scope.panel = {};
|
|
let panelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
|
expect(panelCtrl.available_datasources).toEqual([
|
|
'zabbix_default', 'zabbix'
|
|
]);
|
|
});
|
|
|
|
it('should load first zabbix data source as default', () => {
|
|
ctx.scope.panel = {};
|
|
let panelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
|
expect(panelCtrl.panel.datasources).toEqual([
|
|
'zabbix_default'
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('When refreshing panel', () => {
|
|
beforeEach(() => {
|
|
ctx.scope.panel.datasources = ['zabbix_default', 'zabbix'];
|
|
ctx.scope.panel.targets = {
|
|
'zabbix_default': DEFAULT_TARGET,
|
|
'zabbix': DEFAULT_TARGET
|
|
};
|
|
zabbixDSMock.zabbix.getTriggers = jest.fn()
|
|
.mockReturnValueOnce([
|
|
generateTrigger(1, 1), generateTrigger(2, 11)
|
|
])
|
|
.mockReturnValueOnce([
|
|
generateTrigger(3, 2), generateTrigger(4, 3)
|
|
]);
|
|
});
|
|
|
|
it('should sort triggers', (done) => {
|
|
let panelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
|
panelCtrl.onRefresh().then(() => {
|
|
let trigger_ids = _.map(panelCtrl.triggerList, 'triggerid');
|
|
expect(trigger_ids).toEqual([
|
|
'2', '4', '3', '1'
|
|
]);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
const defaultTrigger = {
|
|
triggerid: "1",
|
|
priority: 3,
|
|
lastchange: "1",
|
|
hosts: [],
|
|
lastEvent: []
|
|
};
|
|
|
|
function generateTrigger(id, timestamp, severity) {
|
|
let trigger = _.cloneDeep(defaultTrigger);
|
|
trigger.triggerid = id.toString();
|
|
if (severity) {
|
|
trigger.priority = severity;
|
|
}
|
|
if (timestamp) {
|
|
trigger.lastchange = timestamp;
|
|
}
|
|
return trigger;
|
|
}
|