Do not show alerts tab when alerting is disabled (#25285)

* Do not show alerts tab when alerting is disabled

* Add tests
This commit is contained in:
Dominik Prokop 2020-06-02 13:21:49 +02:00 committed by GitHub
parent add1bcb59c
commit b12df9d64c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 76 additions and 1 deletions

View File

@ -0,0 +1,74 @@
import { getPanelEditorTabs } from './selectors';
import { LocationState } from 'app/types';
import { PanelPlugin } from '@grafana/data';
import { PanelEditorTabId } from '../types';
import { updateConfig } from '../../../../../core/config';
describe('getPanelEditorTabs selector', () => {
it('return no tabs when no plugin provided', () => {
expect(getPanelEditorTabs({} as LocationState)).toEqual([]);
});
it('return no tabs when plugin do not support queries', () => {
expect(getPanelEditorTabs({} as LocationState, { meta: { skipDataQuery: true } } as PanelPlugin)).toEqual([]);
});
describe('alerts tab', () => {
describe('when alerting enabled', () => {
beforeAll(() => {
updateConfig({
alertingEnabled: true,
});
});
it('returns Alerts tab for graph panel', () => {
const tabs = getPanelEditorTabs(
{ query: {} } as LocationState,
{
meta: {
id: 'graph',
},
} as PanelPlugin
);
expect(tabs.length).toEqual(3);
expect(tabs[2].id).toEqual(PanelEditorTabId.Alert);
});
it('does not returns tab for panel other than graph', () => {
const tabs = getPanelEditorTabs(
{ query: {} } as LocationState,
{
meta: {
id: 'table',
},
} as PanelPlugin
);
expect(tabs.length).toEqual(2);
expect(tabs[1].id).toEqual(PanelEditorTabId.Transform);
});
});
describe('when alerting disabled', () => {
beforeAll(() => {
updateConfig({
alertingEnabled: false,
});
});
it('does not return Alerts tab', () => {
const tabs = getPanelEditorTabs(
{ query: {} } as LocationState,
{
meta: {
id: 'graph',
},
} as PanelPlugin
);
expect(tabs.length).toEqual(2);
expect(tabs[1].id).toEqual(PanelEditorTabId.Transform);
});
});
});
});

View File

@ -2,6 +2,7 @@ import memoizeOne from 'memoize-one';
import { LocationState } from 'app/types';
import { PanelPlugin } from '@grafana/data';
import { PanelEditorTab, PanelEditorTabId } from '../types';
import { getConfig } from 'app/core/config';
export const getPanelEditorTabs = memoizeOne((location: LocationState, plugin?: PanelPlugin) => {
const tabs: PanelEditorTab[] = [];
@ -34,7 +35,7 @@ export const getPanelEditorTabs = memoizeOne((location: LocationState, plugin?:
});
}
if (plugin.meta.id === 'graph') {
if (getConfig().alertingEnabled && plugin.meta.id === 'graph') {
tabs.push({
id: PanelEditorTabId.Alert,
text: 'Alert',