123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- import { PanelModel } from '@grafana/data';
- import { gaugePanelMigrationHandler, gaugePanelChangedHandler } from './GaugeMigrations';
- describe('Gauge Panel Migrations', () => {
- it('from 6.1.1', () => {
- const panel = {
- datasource: '-- Grafana --',
- gridPos: {
- h: 9,
- w: 12,
- x: 0,
- y: 0,
- },
- id: 2,
- options: {
- maxValue: '50',
- minValue: '-50',
- orientation: 'auto',
- showThresholdLabels: true,
- showThresholdMarkers: true,
- thresholds: [
- {
- color: 'green',
- index: 0,
- value: -Infinity,
- },
- {
- color: '#EAB839',
- index: 1,
- value: -25,
- },
- {
- color: '#6ED0E0',
- index: 2,
- value: 0,
- },
- {
- color: 'red',
- index: 3,
- value: 25,
- },
- ],
- valueMappings: [
- {
- id: 1,
- operator: '',
- value: '',
- text: 'BIG',
- type: 2,
- from: '50',
- to: '1000',
- },
- ],
- valueOptions: {
- decimals: 3,
- prefix: 'XX',
- stat: 'last',
- suffix: 'YY',
- unit: 'accMS2',
- },
- },
- pluginVersion: '6.1.6',
- targets: [
- {
- refId: 'A',
- },
- {
- refId: 'B',
- },
- {
- refId: 'C',
- },
- ],
- timeFrom: null,
- timeShift: null,
- title: 'Panel Title',
- type: 'gauge',
- } as Omit<PanelModel, 'fieldConfig'>;
- const result = gaugePanelMigrationHandler(panel as PanelModel);
- expect(result).toMatchSnapshot();
- // Ignored due to the API change
- //@ts-ignore
- expect(result.reduceOptions.defaults).toBeUndefined();
- // Ignored due to the API change
- //@ts-ignore
- expect(result.reduceOptions.overrides).toBeUndefined();
- expect((panel as PanelModel).fieldConfig).toMatchInlineSnapshot(`
- Object {
- "defaults": Object {
- "color": Object {
- "mode": "thresholds",
- },
- "decimals": 3,
- "mappings": Array [
- Object {
- "from": "50",
- "id": 1,
- "operator": "",
- "text": "BIG",
- "to": "1000",
- "type": 2,
- "value": "",
- },
- ],
- "max": "50",
- "min": "-50",
- "thresholds": Object {
- "mode": "absolute",
- "steps": Array [
- Object {
- "color": "green",
- "index": 0,
- "value": -Infinity,
- },
- Object {
- "color": "#EAB839",
- "index": 1,
- "value": -25,
- },
- Object {
- "color": "#6ED0E0",
- "index": 2,
- "value": 0,
- },
- Object {
- "color": "red",
- "index": 3,
- "value": 25,
- },
- ],
- },
- "unit": "accMS2",
- },
- "overrides": Array [],
- }
- `);
- });
- it('change from angular singlestat to gauge', () => {
- const old: any = {
- angular: {
- format: 'ms',
- decimals: 7,
- gauge: {
- maxValue: 150,
- minValue: -10,
- show: true,
- thresholdLabels: true,
- thresholdMarkers: true,
- },
- },
- };
- const panel = {} as PanelModel;
- const newOptions = gaugePanelChangedHandler(panel, 'singlestat', old);
- expect(panel.fieldConfig.defaults.unit).toBe('ms');
- expect(panel.fieldConfig.defaults.min).toBe(-10);
- expect(panel.fieldConfig.defaults.max).toBe(150);
- expect(panel.fieldConfig.defaults.decimals).toBe(7);
- expect(newOptions.showThresholdMarkers).toBe(true);
- expect(newOptions.showThresholdLabels).toBe(true);
- });
- });
|