tests for text data table format
This commit is contained in:
68
dist/datasource-zabbix/specs/datasource.spec.js
vendored
68
dist/datasource-zabbix/specs/datasource.spec.js
vendored
@@ -1,5 +1,5 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import Q from "q";
|
import Q, { Promise } from "q";
|
||||||
import {Datasource} from "../module";
|
import {Datasource} from "../module";
|
||||||
import {zabbixTemplateFormat} from "../datasource";
|
import {zabbixTemplateFormat} from "../datasource";
|
||||||
|
|
||||||
@@ -23,7 +23,10 @@ describe('ZabbixDatasource', () => {
|
|||||||
ctx.templateSrv = {};
|
ctx.templateSrv = {};
|
||||||
ctx.alertSrv = {};
|
ctx.alertSrv = {};
|
||||||
ctx.dashboardSrv = {};
|
ctx.dashboardSrv = {};
|
||||||
ctx.zabbixAlertingSrv = {};
|
ctx.zabbixAlertingSrv = {
|
||||||
|
setPanelAlertState: jest.fn(),
|
||||||
|
removeZabbixThreshold: jest.fn(),
|
||||||
|
};
|
||||||
ctx.zabbix = () => {};
|
ctx.zabbix = () => {};
|
||||||
|
|
||||||
ctx.ds = new Datasource(ctx.instanceSettings, ctx.templateSrv, ctx.alertSrv, ctx.dashboardSrv, ctx.zabbixAlertingSrv, ctx.zabbix);
|
ctx.ds = new Datasource(ctx.instanceSettings, ctx.templateSrv, ctx.alertSrv, ctx.dashboardSrv, ctx.zabbixAlertingSrv, ctx.zabbix);
|
||||||
@@ -93,6 +96,67 @@ describe('ZabbixDatasource', () => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('When querying text data', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctx.ds.replaceTemplateVars = (str) => str;
|
||||||
|
ctx.ds.alertQuery = () => Q.when([]);
|
||||||
|
ctx.ds.zabbix.getHistory = jest.fn().mockReturnValue(Promise.resolve([
|
||||||
|
{clock: "1500010200", itemid:"10100", ns:"900111000", value:"Linux first"},
|
||||||
|
{clock: "1500010300", itemid:"10100", ns:"900111000", value:"Linux 2nd"},
|
||||||
|
{clock: "1500010400", itemid:"10100", ns:"900111000", value:"Linux last"}
|
||||||
|
]));
|
||||||
|
|
||||||
|
ctx.ds.zabbix.getItemsFromTarget = jest.fn().mockReturnValue(Promise.resolve([
|
||||||
|
{
|
||||||
|
hosts: [{hostid: "10001", name: "Zabbix server"}],
|
||||||
|
itemid: "10100",
|
||||||
|
name: "System information",
|
||||||
|
key_: "system.uname",
|
||||||
|
}
|
||||||
|
]));
|
||||||
|
|
||||||
|
ctx.options = {
|
||||||
|
range: {from: 'now-1h', to: 'now'},
|
||||||
|
targets: [
|
||||||
|
{
|
||||||
|
group: {filter: ""},
|
||||||
|
host: {filter: "Zabbix server"},
|
||||||
|
application: {filter: ""},
|
||||||
|
item: {filter: "System information"},
|
||||||
|
mode: 2,
|
||||||
|
resultFormat: "table"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return data in table format', (done) => {
|
||||||
|
ctx.ds.query(ctx.options).then(result => {
|
||||||
|
expect(result.data.length).toBe(1);
|
||||||
|
|
||||||
|
let tableData = result.data[0];
|
||||||
|
expect(tableData.columns).toEqual([
|
||||||
|
{text: 'Host'}, {text: 'Item'}, {text: 'Key'}, {text: 'Last value'}
|
||||||
|
]);
|
||||||
|
expect(tableData.rows).toEqual([
|
||||||
|
['Zabbix server', 'System information', 'system.uname', 'Linux last']
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should extract value if regex is specified', (done) => {
|
||||||
|
ctx.options.targets[0].textFilter = "Linux (.*)";
|
||||||
|
ctx.ds.query(ctx.options).then(result => {
|
||||||
|
let tableData = result.data[0];
|
||||||
|
expect(tableData.rows).toEqual([
|
||||||
|
['Zabbix server', 'System information', 'system.uname', 'last']
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('When replacing template variables', () => {
|
describe('When replacing template variables', () => {
|
||||||
|
|
||||||
function testReplacingVariable(target, varValue, expectedResult, done) {
|
function testReplacingVariable(target, varValue, expectedResult, done) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import Q from "q";
|
import Q, { Promise } from "q";
|
||||||
import {Datasource} from "../module";
|
import {Datasource} from "../module";
|
||||||
import {zabbixTemplateFormat} from "../datasource";
|
import {zabbixTemplateFormat} from "../datasource";
|
||||||
|
|
||||||
@@ -23,7 +23,10 @@ describe('ZabbixDatasource', () => {
|
|||||||
ctx.templateSrv = {};
|
ctx.templateSrv = {};
|
||||||
ctx.alertSrv = {};
|
ctx.alertSrv = {};
|
||||||
ctx.dashboardSrv = {};
|
ctx.dashboardSrv = {};
|
||||||
ctx.zabbixAlertingSrv = {};
|
ctx.zabbixAlertingSrv = {
|
||||||
|
setPanelAlertState: jest.fn(),
|
||||||
|
removeZabbixThreshold: jest.fn(),
|
||||||
|
};
|
||||||
ctx.zabbix = () => {};
|
ctx.zabbix = () => {};
|
||||||
|
|
||||||
ctx.ds = new Datasource(ctx.instanceSettings, ctx.templateSrv, ctx.alertSrv, ctx.dashboardSrv, ctx.zabbixAlertingSrv, ctx.zabbix);
|
ctx.ds = new Datasource(ctx.instanceSettings, ctx.templateSrv, ctx.alertSrv, ctx.dashboardSrv, ctx.zabbixAlertingSrv, ctx.zabbix);
|
||||||
@@ -93,6 +96,67 @@ describe('ZabbixDatasource', () => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('When querying text data', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctx.ds.replaceTemplateVars = (str) => str;
|
||||||
|
ctx.ds.alertQuery = () => Q.when([]);
|
||||||
|
ctx.ds.zabbix.getHistory = jest.fn().mockReturnValue(Promise.resolve([
|
||||||
|
{clock: "1500010200", itemid:"10100", ns:"900111000", value:"Linux first"},
|
||||||
|
{clock: "1500010300", itemid:"10100", ns:"900111000", value:"Linux 2nd"},
|
||||||
|
{clock: "1500010400", itemid:"10100", ns:"900111000", value:"Linux last"}
|
||||||
|
]));
|
||||||
|
|
||||||
|
ctx.ds.zabbix.getItemsFromTarget = jest.fn().mockReturnValue(Promise.resolve([
|
||||||
|
{
|
||||||
|
hosts: [{hostid: "10001", name: "Zabbix server"}],
|
||||||
|
itemid: "10100",
|
||||||
|
name: "System information",
|
||||||
|
key_: "system.uname",
|
||||||
|
}
|
||||||
|
]));
|
||||||
|
|
||||||
|
ctx.options = {
|
||||||
|
range: {from: 'now-1h', to: 'now'},
|
||||||
|
targets: [
|
||||||
|
{
|
||||||
|
group: {filter: ""},
|
||||||
|
host: {filter: "Zabbix server"},
|
||||||
|
application: {filter: ""},
|
||||||
|
item: {filter: "System information"},
|
||||||
|
mode: 2,
|
||||||
|
resultFormat: "table"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return data in table format', (done) => {
|
||||||
|
ctx.ds.query(ctx.options).then(result => {
|
||||||
|
expect(result.data.length).toBe(1);
|
||||||
|
|
||||||
|
let tableData = result.data[0];
|
||||||
|
expect(tableData.columns).toEqual([
|
||||||
|
{text: 'Host'}, {text: 'Item'}, {text: 'Key'}, {text: 'Last value'}
|
||||||
|
]);
|
||||||
|
expect(tableData.rows).toEqual([
|
||||||
|
['Zabbix server', 'System information', 'system.uname', 'Linux last']
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should extract value if regex is specified', (done) => {
|
||||||
|
ctx.options.targets[0].textFilter = "Linux (.*)";
|
||||||
|
ctx.ds.query(ctx.options).then(result => {
|
||||||
|
let tableData = result.data[0];
|
||||||
|
expect(tableData.rows).toEqual([
|
||||||
|
['Zabbix server', 'System information', 'system.uname', 'last']
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('When replacing template variables', () => {
|
describe('When replacing template variables', () => {
|
||||||
|
|
||||||
function testReplacingVariable(target, varValue, expectedResult, done) {
|
function testReplacingVariable(target, varValue, expectedResult, done) {
|
||||||
|
|||||||
@@ -38,7 +38,21 @@ jest.mock('app/core/utils/datemath', () => {
|
|||||||
}, {virtual: true});
|
}, {virtual: true});
|
||||||
|
|
||||||
jest.mock('app/core/table_model', () => {
|
jest.mock('app/core/table_model', () => {
|
||||||
return {};
|
return class TableModel {
|
||||||
|
constructor() {
|
||||||
|
this.columns = [];
|
||||||
|
this.columnMap = {};
|
||||||
|
this.rows = [];
|
||||||
|
this.type = 'table';
|
||||||
|
}
|
||||||
|
|
||||||
|
addColumn(col) {
|
||||||
|
if (!this.columnMap[col.text]) {
|
||||||
|
this.columns.push(col);
|
||||||
|
this.columnMap[col.text] = col;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
}, {virtual: true});
|
}, {virtual: true});
|
||||||
|
|
||||||
jest.mock('jquery', () => 'module not found', {virtual: true});
|
jest.mock('jquery', () => 'module not found', {virtual: true});
|
||||||
|
|||||||
Reference in New Issue
Block a user