Files
grafana-zabbix/src/datasource-zabbix/specs/migrations.test.js

71 lines
2.0 KiB
JavaScript

import _ from 'lodash';
import { migrateDSConfig, DS_CONFIG_SCHEMA } from '../migrations';
describe('Migrations', () => {
let ctx = {};
describe('When migrating datasource config', () => {
beforeEach(() => {
ctx.jsonData = {
dbConnection: {
enable: true,
datasourceId: 1
}
};
});
it('should change direct DB connection setting to flat style', () => {
migrateDSConfig(ctx.jsonData);
expect(ctx.jsonData).toMatchObject({
dbConnectionEnable: true,
dbConnectionDatasourceId: 1,
schema: DS_CONFIG_SCHEMA
});
});
it('should not touch anything if schema is up to date', () => {
ctx.jsonData = {
futureOptionOne: 'foo',
futureOptionTwo: 'bar',
schema: DS_CONFIG_SCHEMA
};
migrateDSConfig(ctx.jsonData);
expect(ctx.jsonData).toMatchObject({
futureOptionOne: 'foo',
futureOptionTwo: 'bar',
schema: DS_CONFIG_SCHEMA
});
expect(ctx.jsonData.dbConnectionEnable).toBeUndefined();
expect(ctx.jsonData.dbConnectionDatasourceId).toBeUndefined();
});
});
describe('When handling provisioned datasource config', () => {
beforeEach(() => {
ctx.jsonData = {
username: 'zabbix',
password: 'zabbix',
trends: true,
trendsFrom: '7d',
trendsRange: '4d',
cacheTTL: '1h',
alerting: true,
addThresholds: false,
alertingMinSeverity: 3,
disableReadOnlyUsersAck: true,
dbConnectionEnable: true,
dbConnectionDatasourceName: 'MySQL Zabbix',
dbConnectionRetentionPolicy: 'one_year'
};
});
it('should not touch anything if schema is up to date', () => {
const originalConf = _.cloneDeep(ctx.jsonData);
migrateDSConfig(ctx.jsonData);
expect(ctx.jsonData).toMatchObject(originalConf);
expect(ctx.jsonData.dbConnectionEnable).toBe(true);
expect(ctx.jsonData.dbConnectionDatasourceName).toBeDefined();
});
});
});