import { PanelModel, FieldConfigSource, DataQuery } from '@grafana/data'; import { graphPanelMigrationHandler } from './GraphMigrations'; describe('Graph Panel Migrations', () => { it('from 7.0', () => { const panel = { aliasColors: {}, bars: false, dashLength: 10, dashes: false, fill: 1, fillGradient: 0, gridPos: { h: 8, w: 9, x: 6, y: 0, }, hiddenSeries: false, id: 23763571993, legend: { avg: false, current: false, max: false, min: false, show: true, total: false, values: false, }, lines: true, linewidth: 1, nullPointMode: 'null', options: { dataLinks: [ { targetBlank: false, title: 'Drill it down', url: 'THE DRILLDOWN URL', }, ], }, percentage: false, pointradius: 2, points: false, renderer: 'flot', seriesOverrides: [ { alias: 'Bar datacenter {datacenter="baz", region="us-east-2"}', yaxis: 2, }, ], spaceLength: 10, stack: false, steppedLine: false, targets: [ { alias: 'Foo datacenter', labels: 'datacenter=foo,region=us-east-1', refId: 'A', scenarioId: 'random_walk', }, { alias: 'Bar datacenter', labels: 'datacenter=bar,region=us-east-2', refId: 'B', scenarioId: 'random_walk', }, { alias: 'Bar datacenter', labels: 'datacenter=baz,region=us-east-2', refId: 'C', scenarioId: 'random_walk', }, ] as unknown as DataQuery[], thresholds: [], timeFrom: null, timeRegions: [], timeShift: null, title: 'Multiple series', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { buckets: null, mode: 'time', name: null, show: true, values: [], }, yaxes: [ { format: 'percent', label: null, logBase: 1, max: null, min: null, show: true, $$hashKey: 'object:122', }, { format: 'gflops', label: null, logBase: 1, max: null, min: null, show: true, $$hashKey: 'object:123', }, ], yaxis: { align: false, alignLevel: null, }, datasource: null, } as Omit; const result = graphPanelMigrationHandler(panel as PanelModel); const fieldSource = (panel as any).fieldConfig as FieldConfigSource; expect(result.dataLinks).toBeUndefined(); expect(fieldSource.defaults.links).toHaveLength(1); const link = fieldSource.defaults.links![0]; expect(link.url).toEqual('THE DRILLDOWN URL'); }); it('from 7.1 it should preserve existing fieldConfig', () => { const panel = { id: 1, fieldConfig: { defaults: { links: [ { title: 'Details', url: '/link', }, ], }, overrides: [], }, } as unknown as PanelModel; graphPanelMigrationHandler(panel as PanelModel); const fieldConfig = (panel as any).fieldConfig as FieldConfigSource; expect(fieldConfig.defaults.links).toHaveLength(1); }); });