|
|
|
@ -8,6 +8,7 @@ import { |
|
|
|
|
} from '@grafana/scenes'; |
|
|
|
|
import { Panel, RowPanel } from '@grafana/schema'; |
|
|
|
|
import { PanelModel } from 'app/features/dashboard/state'; |
|
|
|
|
import { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard'; |
|
|
|
|
|
|
|
|
|
import { RowRepeaterBehavior } from '../scene/RowRepeaterBehavior'; |
|
|
|
|
|
|
|
|
@ -131,6 +132,189 @@ describe('transformSceneToSaveModel', () => { |
|
|
|
|
expect(saveModel.annotations?.list?.[3].hide).toEqual(false); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
describe('Queries', () => { |
|
|
|
|
it('Given panel with queries', () => { |
|
|
|
|
const panel = buildGridItemFromPanelSchema({ |
|
|
|
|
datasource: { |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}, |
|
|
|
|
maxDataPoints: 100, |
|
|
|
|
targets: [ |
|
|
|
|
{ |
|
|
|
|
refId: 'A', |
|
|
|
|
expr: 'A', |
|
|
|
|
datasource: { |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
refId: 'B', |
|
|
|
|
expr: 'B', |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const result = gridItemToPanel(panel); |
|
|
|
|
|
|
|
|
|
expect(result.maxDataPoints).toBe(100); |
|
|
|
|
expect(result.targets?.length).toBe(2); |
|
|
|
|
expect(result.targets?.[0]).toEqual({ |
|
|
|
|
refId: 'A', |
|
|
|
|
expr: 'A', |
|
|
|
|
datasource: { |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
expect(result.datasource).toEqual({ |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
it('Given panel with transformations', () => { |
|
|
|
|
const panel = buildGridItemFromPanelSchema({ |
|
|
|
|
datasource: { |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}, |
|
|
|
|
maxDataPoints: 100, |
|
|
|
|
|
|
|
|
|
transformations: [ |
|
|
|
|
{ |
|
|
|
|
id: 'reduce', |
|
|
|
|
options: { |
|
|
|
|
reducers: ['max'], |
|
|
|
|
mode: 'reduceFields', |
|
|
|
|
includeTimeField: false, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
targets: [ |
|
|
|
|
{ |
|
|
|
|
refId: 'A', |
|
|
|
|
expr: 'A', |
|
|
|
|
datasource: { |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
refId: 'B', |
|
|
|
|
expr: 'B', |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const result = gridItemToPanel(panel); |
|
|
|
|
|
|
|
|
|
expect(result.transformations.length).toBe(1); |
|
|
|
|
|
|
|
|
|
expect(result.maxDataPoints).toBe(100); |
|
|
|
|
expect(result.targets?.length).toBe(2); |
|
|
|
|
expect(result.targets?.[0]).toEqual({ |
|
|
|
|
refId: 'A', |
|
|
|
|
expr: 'A', |
|
|
|
|
datasource: { |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
expect(result.datasource).toEqual({ |
|
|
|
|
type: 'grafana-testdata', |
|
|
|
|
uid: 'abc', |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
it('Given panel with shared query', () => { |
|
|
|
|
const panel = buildGridItemFromPanelSchema({ |
|
|
|
|
datasource: { |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}, |
|
|
|
|
targets: [ |
|
|
|
|
{ |
|
|
|
|
refId: 'A', |
|
|
|
|
panelId: 1, |
|
|
|
|
datasource: { |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const result = gridItemToPanel(panel); |
|
|
|
|
|
|
|
|
|
expect(result.targets?.length).toBe(1); |
|
|
|
|
expect(result.targets?.[0]).toEqual({ |
|
|
|
|
refId: 'A', |
|
|
|
|
panelId: 1, |
|
|
|
|
datasource: { |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
expect(result.datasource).toEqual({ |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
it('Given panel with shared query and transformations', () => { |
|
|
|
|
const panel = buildGridItemFromPanelSchema({ |
|
|
|
|
datasource: { |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}, |
|
|
|
|
targets: [ |
|
|
|
|
{ |
|
|
|
|
refId: 'A', |
|
|
|
|
panelId: 1, |
|
|
|
|
datasource: { |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
transformations: [ |
|
|
|
|
{ |
|
|
|
|
id: 'reduce', |
|
|
|
|
options: { |
|
|
|
|
reducers: ['max'], |
|
|
|
|
mode: 'reduceFields', |
|
|
|
|
includeTimeField: false, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const result = gridItemToPanel(panel); |
|
|
|
|
|
|
|
|
|
expect(result.transformations.length).toBe(1); |
|
|
|
|
|
|
|
|
|
expect(result.targets?.length).toBe(1); |
|
|
|
|
expect(result.targets?.[0]).toEqual({ |
|
|
|
|
refId: 'A', |
|
|
|
|
panelId: 1, |
|
|
|
|
datasource: { |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
expect(result.datasource).toEqual({ |
|
|
|
|
type: 'datasource', |
|
|
|
|
uid: SHARED_DASHBOARD_QUERY, |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
export function buildGridItemFromPanelSchema(panel: Partial<Panel>): SceneGridItemLike { |
|
|
|
|