mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #12275 from dehrax/12224-exporter
karma to jest: exporter, playlist_edit_ctrl
This commit is contained in:
commit
1626a66bab
194
public/app/features/dashboard/specs/exporter.jest.ts
Normal file
194
public/app/features/dashboard/specs/exporter.jest.ts
Normal file
@ -0,0 +1,194 @@
|
||||
jest.mock('app/core/store', () => {
|
||||
return {
|
||||
getBool: jest.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
import _ from 'lodash';
|
||||
import config from 'app/core/config';
|
||||
import { DashboardExporter } from '../export/exporter';
|
||||
import { DashboardModel } from '../dashboard_model';
|
||||
|
||||
describe('given dashboard with repeated panels', () => {
|
||||
var dash, exported;
|
||||
|
||||
beforeEach(done => {
|
||||
dash = {
|
||||
templating: {
|
||||
list: [
|
||||
{
|
||||
name: 'apps',
|
||||
type: 'query',
|
||||
datasource: 'gfdb',
|
||||
current: { value: 'Asd', text: 'Asd' },
|
||||
options: [{ value: 'Asd', text: 'Asd' }],
|
||||
},
|
||||
{
|
||||
name: 'prefix',
|
||||
type: 'constant',
|
||||
current: { value: 'collectd', text: 'collectd' },
|
||||
options: [],
|
||||
},
|
||||
{
|
||||
name: 'ds',
|
||||
type: 'datasource',
|
||||
query: 'testdb',
|
||||
current: { value: 'prod', text: 'prod' },
|
||||
options: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
annotations: {
|
||||
list: [
|
||||
{
|
||||
name: 'logs',
|
||||
datasource: 'gfdb',
|
||||
},
|
||||
],
|
||||
},
|
||||
panels: [
|
||||
{ id: 6, datasource: 'gfdb', type: 'graph' },
|
||||
{ id: 7 },
|
||||
{
|
||||
id: 8,
|
||||
datasource: '-- Mixed --',
|
||||
targets: [{ datasource: 'other' }],
|
||||
},
|
||||
{ id: 9, datasource: '$ds' },
|
||||
{
|
||||
id: 2,
|
||||
repeat: 'apps',
|
||||
datasource: 'gfdb',
|
||||
type: 'graph',
|
||||
},
|
||||
{ id: 3, repeat: null, repeatPanelId: 2 },
|
||||
],
|
||||
};
|
||||
|
||||
config.buildInfo = {
|
||||
version: '3.0.2',
|
||||
};
|
||||
|
||||
//Stubs test function calls
|
||||
var datasourceSrvStub = { get: jest.fn(arg => getStub(arg)) };
|
||||
|
||||
config.panels['graph'] = {
|
||||
id: 'graph',
|
||||
name: 'Graph',
|
||||
info: { version: '1.1.0' },
|
||||
};
|
||||
|
||||
dash = new DashboardModel(dash, {});
|
||||
var exporter = new DashboardExporter(datasourceSrvStub);
|
||||
exporter.makeExportable(dash).then(clean => {
|
||||
exported = clean;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should replace datasource refs', () => {
|
||||
var panel = exported.panels[0];
|
||||
expect(panel.datasource).toBe('${DS_GFDB}');
|
||||
});
|
||||
|
||||
it('should replace datasource in variable query', () => {
|
||||
expect(exported.templating.list[0].datasource).toBe('${DS_GFDB}');
|
||||
expect(exported.templating.list[0].options.length).toBe(0);
|
||||
expect(exported.templating.list[0].current.value).toBe(undefined);
|
||||
expect(exported.templating.list[0].current.text).toBe(undefined);
|
||||
});
|
||||
|
||||
it('should replace datasource in annotation query', () => {
|
||||
expect(exported.annotations.list[1].datasource).toBe('${DS_GFDB}');
|
||||
});
|
||||
|
||||
it('should add datasource as input', () => {
|
||||
expect(exported.__inputs[0].name).toBe('DS_GFDB');
|
||||
expect(exported.__inputs[0].pluginId).toBe('testdb');
|
||||
expect(exported.__inputs[0].type).toBe('datasource');
|
||||
});
|
||||
|
||||
it('should add datasource to required', () => {
|
||||
var require = _.find(exported.__requires, { name: 'TestDB' });
|
||||
expect(require.name).toBe('TestDB');
|
||||
expect(require.id).toBe('testdb');
|
||||
expect(require.type).toBe('datasource');
|
||||
expect(require.version).toBe('1.2.1');
|
||||
});
|
||||
|
||||
it('should not add built in datasources to required', () => {
|
||||
var require = _.find(exported.__requires, { name: 'Mixed' });
|
||||
expect(require).toBe(undefined);
|
||||
});
|
||||
|
||||
it('should add datasources used in mixed mode', () => {
|
||||
var require = _.find(exported.__requires, { name: 'OtherDB' });
|
||||
expect(require).not.toBe(undefined);
|
||||
});
|
||||
|
||||
it('should add panel to required', () => {
|
||||
var require = _.find(exported.__requires, { name: 'Graph' });
|
||||
expect(require.name).toBe('Graph');
|
||||
expect(require.id).toBe('graph');
|
||||
expect(require.version).toBe('1.1.0');
|
||||
});
|
||||
|
||||
it('should add grafana version', () => {
|
||||
var require = _.find(exported.__requires, { name: 'Grafana' });
|
||||
expect(require.type).toBe('grafana');
|
||||
expect(require.id).toBe('grafana');
|
||||
expect(require.version).toBe('3.0.2');
|
||||
});
|
||||
|
||||
it('should add constant template variables as inputs', () => {
|
||||
var input = _.find(exported.__inputs, { name: 'VAR_PREFIX' });
|
||||
expect(input.type).toBe('constant');
|
||||
expect(input.label).toBe('prefix');
|
||||
expect(input.value).toBe('collectd');
|
||||
});
|
||||
|
||||
it('should templatize constant variables', () => {
|
||||
var variable = _.find(exported.templating.list, { name: 'prefix' });
|
||||
expect(variable.query).toBe('${VAR_PREFIX}');
|
||||
expect(variable.current.text).toBe('${VAR_PREFIX}');
|
||||
expect(variable.current.value).toBe('${VAR_PREFIX}');
|
||||
expect(variable.options[0].text).toBe('${VAR_PREFIX}');
|
||||
expect(variable.options[0].value).toBe('${VAR_PREFIX}');
|
||||
});
|
||||
});
|
||||
|
||||
// Stub responses
|
||||
var stubs = [];
|
||||
stubs['gfdb'] = {
|
||||
name: 'gfdb',
|
||||
meta: { id: 'testdb', info: { version: '1.2.1' }, name: 'TestDB' },
|
||||
};
|
||||
|
||||
stubs['other'] = {
|
||||
name: 'other',
|
||||
meta: { id: 'other', info: { version: '1.2.1' }, name: 'OtherDB' },
|
||||
};
|
||||
|
||||
stubs['-- Mixed --'] = {
|
||||
name: 'mixed',
|
||||
meta: {
|
||||
id: 'mixed',
|
||||
info: { version: '1.2.1' },
|
||||
name: 'Mixed',
|
||||
builtIn: true,
|
||||
},
|
||||
};
|
||||
|
||||
stubs['-- Grafana --'] = {
|
||||
name: '-- Grafana --',
|
||||
meta: {
|
||||
id: 'grafana',
|
||||
info: { version: '1.2.1' },
|
||||
name: 'grafana',
|
||||
builtIn: true,
|
||||
},
|
||||
};
|
||||
|
||||
function getStub(arg) {
|
||||
return Promise.resolve(stubs[arg]);
|
||||
}
|
@ -1,187 +0,0 @@
|
||||
import { describe, beforeEach, it, sinon, expect } from 'test/lib/common';
|
||||
|
||||
import _ from 'lodash';
|
||||
import config from 'app/core/config';
|
||||
import { DashboardExporter } from '../export/exporter';
|
||||
import { DashboardModel } from '../dashboard_model';
|
||||
|
||||
describe('given dashboard with repeated panels', function() {
|
||||
var dash, exported;
|
||||
|
||||
beforeEach(done => {
|
||||
dash = {
|
||||
templating: { list: [] },
|
||||
annotations: { list: [] },
|
||||
};
|
||||
|
||||
config.buildInfo = {
|
||||
version: '3.0.2',
|
||||
};
|
||||
|
||||
dash.templating.list.push({
|
||||
name: 'apps',
|
||||
type: 'query',
|
||||
datasource: 'gfdb',
|
||||
current: { value: 'Asd', text: 'Asd' },
|
||||
options: [{ value: 'Asd', text: 'Asd' }],
|
||||
});
|
||||
|
||||
dash.templating.list.push({
|
||||
name: 'prefix',
|
||||
type: 'constant',
|
||||
current: { value: 'collectd', text: 'collectd' },
|
||||
options: [],
|
||||
});
|
||||
|
||||
dash.templating.list.push({
|
||||
name: 'ds',
|
||||
type: 'datasource',
|
||||
query: 'testdb',
|
||||
current: { value: 'prod', text: 'prod' },
|
||||
options: [],
|
||||
});
|
||||
|
||||
dash.annotations.list.push({
|
||||
name: 'logs',
|
||||
datasource: 'gfdb',
|
||||
});
|
||||
|
||||
dash.panels = [
|
||||
{ id: 6, datasource: 'gfdb', type: 'graph' },
|
||||
{ id: 7 },
|
||||
{
|
||||
id: 8,
|
||||
datasource: '-- Mixed --',
|
||||
targets: [{ datasource: 'other' }],
|
||||
},
|
||||
{ id: 9, datasource: '$ds' },
|
||||
];
|
||||
|
||||
dash.panels.push({
|
||||
id: 2,
|
||||
repeat: 'apps',
|
||||
datasource: 'gfdb',
|
||||
type: 'graph',
|
||||
});
|
||||
dash.panels.push({ id: 3, repeat: null, repeatPanelId: 2 });
|
||||
|
||||
var datasourceSrvStub = { get: sinon.stub() };
|
||||
datasourceSrvStub.get.withArgs('gfdb').returns(
|
||||
Promise.resolve({
|
||||
name: 'gfdb',
|
||||
meta: { id: 'testdb', info: { version: '1.2.1' }, name: 'TestDB' },
|
||||
})
|
||||
);
|
||||
datasourceSrvStub.get.withArgs('other').returns(
|
||||
Promise.resolve({
|
||||
name: 'other',
|
||||
meta: { id: 'other', info: { version: '1.2.1' }, name: 'OtherDB' },
|
||||
})
|
||||
);
|
||||
datasourceSrvStub.get.withArgs('-- Mixed --').returns(
|
||||
Promise.resolve({
|
||||
name: 'mixed',
|
||||
meta: {
|
||||
id: 'mixed',
|
||||
info: { version: '1.2.1' },
|
||||
name: 'Mixed',
|
||||
builtIn: true,
|
||||
},
|
||||
})
|
||||
);
|
||||
datasourceSrvStub.get.withArgs('-- Grafana --').returns(
|
||||
Promise.resolve({
|
||||
name: '-- Grafana --',
|
||||
meta: {
|
||||
id: 'grafana',
|
||||
info: { version: '1.2.1' },
|
||||
name: 'grafana',
|
||||
builtIn: true,
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
config.panels['graph'] = {
|
||||
id: 'graph',
|
||||
name: 'Graph',
|
||||
info: { version: '1.1.0' },
|
||||
};
|
||||
|
||||
dash = new DashboardModel(dash, {});
|
||||
var exporter = new DashboardExporter(datasourceSrvStub);
|
||||
exporter.makeExportable(dash).then(clean => {
|
||||
exported = clean;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should replace datasource refs', function() {
|
||||
var panel = exported.panels[0];
|
||||
expect(panel.datasource).to.be('${DS_GFDB}');
|
||||
});
|
||||
|
||||
it('should replace datasource in variable query', function() {
|
||||
expect(exported.templating.list[0].datasource).to.be('${DS_GFDB}');
|
||||
expect(exported.templating.list[0].options.length).to.be(0);
|
||||
expect(exported.templating.list[0].current.value).to.be(undefined);
|
||||
expect(exported.templating.list[0].current.text).to.be(undefined);
|
||||
});
|
||||
|
||||
it('should replace datasource in annotation query', function() {
|
||||
expect(exported.annotations.list[1].datasource).to.be('${DS_GFDB}');
|
||||
});
|
||||
|
||||
it('should add datasource as input', function() {
|
||||
expect(exported.__inputs[0].name).to.be('DS_GFDB');
|
||||
expect(exported.__inputs[0].pluginId).to.be('testdb');
|
||||
expect(exported.__inputs[0].type).to.be('datasource');
|
||||
});
|
||||
|
||||
it('should add datasource to required', function() {
|
||||
var require = _.find(exported.__requires, { name: 'TestDB' });
|
||||
expect(require.name).to.be('TestDB');
|
||||
expect(require.id).to.be('testdb');
|
||||
expect(require.type).to.be('datasource');
|
||||
expect(require.version).to.be('1.2.1');
|
||||
});
|
||||
|
||||
it('should not add built in datasources to required', function() {
|
||||
var require = _.find(exported.__requires, { name: 'Mixed' });
|
||||
expect(require).to.be(undefined);
|
||||
});
|
||||
|
||||
it('should add datasources used in mixed mode', function() {
|
||||
var require = _.find(exported.__requires, { name: 'OtherDB' });
|
||||
expect(require).to.not.be(undefined);
|
||||
});
|
||||
|
||||
it('should add panel to required', function() {
|
||||
var require = _.find(exported.__requires, { name: 'Graph' });
|
||||
expect(require.name).to.be('Graph');
|
||||
expect(require.id).to.be('graph');
|
||||
expect(require.version).to.be('1.1.0');
|
||||
});
|
||||
|
||||
it('should add grafana version', function() {
|
||||
var require = _.find(exported.__requires, { name: 'Grafana' });
|
||||
expect(require.type).to.be('grafana');
|
||||
expect(require.id).to.be('grafana');
|
||||
expect(require.version).to.be('3.0.2');
|
||||
});
|
||||
|
||||
it('should add constant template variables as inputs', function() {
|
||||
var input = _.find(exported.__inputs, { name: 'VAR_PREFIX' });
|
||||
expect(input.type).to.be('constant');
|
||||
expect(input.label).to.be('prefix');
|
||||
expect(input.value).to.be('collectd');
|
||||
});
|
||||
|
||||
it('should templatize constant variables', function() {
|
||||
var variable = _.find(exported.templating.list, { name: 'prefix' });
|
||||
expect(variable.query).to.be('${VAR_PREFIX}');
|
||||
expect(variable.current.text).to.be('${VAR_PREFIX}');
|
||||
expect(variable.current.value).to.be('${VAR_PREFIX}');
|
||||
expect(variable.options[0].text).to.be('${VAR_PREFIX}');
|
||||
expect(variable.options[0].value).to.be('${VAR_PREFIX}');
|
||||
});
|
||||
});
|
@ -1,5 +1,4 @@
|
||||
import '../playlist_edit_ctrl';
|
||||
import { describe, beforeEach, it, expect } from 'test/lib/common';
|
||||
import { PlaylistEditCtrl } from '../playlist_edit_ctrl';
|
||||
|
||||
describe('PlaylistEditCtrl', () => {
|
||||
@ -20,13 +19,13 @@ describe('PlaylistEditCtrl', () => {
|
||||
|
||||
describe('searchresult returns 2 dashboards, ', () => {
|
||||
it('found dashboard should be 2', () => {
|
||||
expect(ctx.dashboardresult.length).to.be(2);
|
||||
expect(ctx.dashboardresult.length).toBe(2);
|
||||
});
|
||||
|
||||
it('filtred result should be 2', () => {
|
||||
ctx.filterFoundPlaylistItems();
|
||||
expect(ctx.filteredDashboards.length).to.be(2);
|
||||
expect(ctx.filteredTags.length).to.be(2);
|
||||
expect(ctx.filteredDashboards.length).toBe(2);
|
||||
expect(ctx.filteredTags.length).toBe(2);
|
||||
});
|
||||
|
||||
describe('adds one dashboard to playlist, ', () => {
|
||||
@ -37,16 +36,16 @@ describe('PlaylistEditCtrl', () => {
|
||||
});
|
||||
|
||||
it('playlistitems should be increased by one', () => {
|
||||
expect(ctx.playlistItems.length).to.be(2);
|
||||
expect(ctx.playlistItems.length).toBe(2);
|
||||
});
|
||||
|
||||
it('filtred playlistitems should be reduced by one', () => {
|
||||
expect(ctx.filteredDashboards.length).to.be(1);
|
||||
expect(ctx.filteredTags.length).to.be(1);
|
||||
expect(ctx.filteredDashboards.length).toBe(1);
|
||||
expect(ctx.filteredTags.length).toBe(1);
|
||||
});
|
||||
|
||||
it('found dashboard should be 2', () => {
|
||||
expect(ctx.dashboardresult.length).to.be(2);
|
||||
expect(ctx.dashboardresult.length).toBe(2);
|
||||
});
|
||||
|
||||
describe('removes one dashboard from playlist, ', () => {
|
||||
@ -57,14 +56,14 @@ describe('PlaylistEditCtrl', () => {
|
||||
});
|
||||
|
||||
it('playlistitems should be increased by one', () => {
|
||||
expect(ctx.playlistItems.length).to.be(0);
|
||||
expect(ctx.playlistItems.length).toBe(0);
|
||||
});
|
||||
|
||||
it('found dashboard should be 2', () => {
|
||||
expect(ctx.dashboardresult.length).to.be(2);
|
||||
expect(ctx.filteredDashboards.length).to.be(2);
|
||||
expect(ctx.filteredTags.length).to.be(2);
|
||||
expect(ctx.tagresult.length).to.be(2);
|
||||
expect(ctx.dashboardresult.length).toBe(2);
|
||||
expect(ctx.filteredDashboards.length).toBe(2);
|
||||
expect(ctx.filteredTags.length).toBe(2);
|
||||
expect(ctx.tagresult.length).toBe(2);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user