71 lines
2.0 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|