mirror of https://github.com/grafana/grafana
Alerting: Fixes so notification channels are properly deleted (#31040)
parent
c69c8bd47c
commit
f43d834a59
@ -0,0 +1,81 @@ |
|||||||
|
import { AlertTabCtrl } from './AlertTabCtrl'; |
||||||
|
|
||||||
|
interface Args { |
||||||
|
notifications?: Array<{ uid?: string; id?: number; isDefault: boolean }>; |
||||||
|
} |
||||||
|
|
||||||
|
function setupTestContext({ notifications = [] }: Args = {}) { |
||||||
|
const panel = { |
||||||
|
alert: { notifications }, |
||||||
|
options: [], |
||||||
|
title: 'Testing Alerts', |
||||||
|
}; |
||||||
|
const $scope = { |
||||||
|
ctrl: { |
||||||
|
panel, |
||||||
|
render: jest.fn(), |
||||||
|
}, |
||||||
|
}; |
||||||
|
const dashboardSrv: any = {}; |
||||||
|
const uiSegmentSrv: any = {}; |
||||||
|
const datasourceSrv: any = {}; |
||||||
|
|
||||||
|
const controller = new AlertTabCtrl($scope, dashboardSrv, uiSegmentSrv, datasourceSrv); |
||||||
|
controller.notifications = notifications; |
||||||
|
controller.alertNotifications = []; |
||||||
|
controller.initModel(); |
||||||
|
|
||||||
|
return { controller }; |
||||||
|
} |
||||||
|
|
||||||
|
describe('AlertTabCtrl', () => { |
||||||
|
describe('when removeNotification is called with an uid', () => { |
||||||
|
it('then the correct notifier should be removed', () => { |
||||||
|
const { controller } = setupTestContext({ |
||||||
|
notifications: [ |
||||||
|
{ id: 1, uid: 'one', isDefault: true }, |
||||||
|
{ id: 2, uid: 'two', isDefault: false }, |
||||||
|
], |
||||||
|
}); |
||||||
|
|
||||||
|
expect(controller.alert.notifications).toEqual([ |
||||||
|
{ id: 1, uid: 'one', isDefault: true, iconClass: 'bell' }, |
||||||
|
{ id: 2, uid: 'two', isDefault: false, iconClass: 'bell' }, |
||||||
|
]); |
||||||
|
expect(controller.alertNotifications).toEqual([ |
||||||
|
{ id: 2, uid: 'two', isDefault: false, iconClass: 'bell' }, |
||||||
|
{ id: 1, uid: 'one', isDefault: true, iconClass: 'bell' }, |
||||||
|
]); |
||||||
|
|
||||||
|
controller.removeNotification({ uid: 'one' }); |
||||||
|
|
||||||
|
expect(controller.alert.notifications).toEqual([{ id: 2, uid: 'two', isDefault: false, iconClass: 'bell' }]); |
||||||
|
expect(controller.alertNotifications).toEqual([{ id: 2, uid: 'two', isDefault: false, iconClass: 'bell' }]); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
describe('when removeNotification is called with an id', () => { |
||||||
|
it('then the correct notifier should be removed', () => { |
||||||
|
const { controller } = setupTestContext({ |
||||||
|
notifications: [ |
||||||
|
{ id: 1, uid: 'one', isDefault: true }, |
||||||
|
{ id: 2, uid: 'two', isDefault: false }, |
||||||
|
], |
||||||
|
}); |
||||||
|
|
||||||
|
expect(controller.alert.notifications).toEqual([ |
||||||
|
{ id: 1, uid: 'one', isDefault: true, iconClass: 'bell' }, |
||||||
|
{ id: 2, uid: 'two', isDefault: false, iconClass: 'bell' }, |
||||||
|
]); |
||||||
|
expect(controller.alertNotifications).toEqual([ |
||||||
|
{ id: 2, uid: 'two', isDefault: false, iconClass: 'bell' }, |
||||||
|
{ id: 1, uid: 'one', isDefault: true, iconClass: 'bell' }, |
||||||
|
]); |
||||||
|
|
||||||
|
controller.removeNotification({ id: 2 }); |
||||||
|
|
||||||
|
expect(controller.alert.notifications).toEqual([{ id: 1, uid: 'one', isDefault: true, iconClass: 'bell' }]); |
||||||
|
expect(controller.alertNotifications).toEqual([{ id: 1, uid: 'one', isDefault: true, iconClass: 'bell' }]); |
||||||
|
}); |
||||||
|
}); |
||||||
|
}); |
Loading…
Reference in new issue