mirror of https://github.com/grafana/grafana
Alerting: subscribe to Dashboard refresh interval for alert panels (#56347)
* Subscribe to Dashboard refresh interval for alert panels * Add test * Remove unused import * Use useEffectOnce when obtaining dashboardpull/56376/head^2
parent
729ce8bb72
commit
48f0f4bb91
@ -0,0 +1,85 @@ |
||||
import { render } from '@testing-library/react'; |
||||
import React from 'react'; |
||||
import { Provider } from 'react-redux'; |
||||
|
||||
import { getDefaultTimeRange, LoadingState, PanelProps, FieldConfigSource } from '@grafana/data'; |
||||
import { TimeRangeUpdatedEvent } from '@grafana/runtime'; |
||||
import { DashboardSrv, setDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; |
||||
import { configureStore } from 'app/store/configureStore'; |
||||
|
||||
import { UnifiedAlertList } from './UnifiedAlertList'; |
||||
import { UnifiedAlertListOptions, SortOrder, GroupMode, ViewMode } from './types'; |
||||
|
||||
jest.mock('app/features/alerting/unified/api/alertmanager'); |
||||
|
||||
const defaultOptions: UnifiedAlertListOptions = { |
||||
maxItems: 2, |
||||
sortOrder: SortOrder.AlphaAsc, |
||||
dashboardAlerts: true, |
||||
groupMode: GroupMode.Default, |
||||
groupBy: [''], |
||||
alertName: 'test', |
||||
showInstances: false, |
||||
folder: { id: 1, title: 'test folder' }, |
||||
stateFilter: { firing: true, pending: false, noData: false, normal: true, error: false }, |
||||
alertInstanceLabelFilter: '', |
||||
datasource: 'Alertmanager', |
||||
viewMode: ViewMode.List, |
||||
}; |
||||
|
||||
const defaultProps: PanelProps<UnifiedAlertListOptions> = { |
||||
data: { state: LoadingState.Done, series: [], timeRange: getDefaultTimeRange() }, |
||||
id: 1, |
||||
timeRange: getDefaultTimeRange(), |
||||
timeZone: 'utc', |
||||
options: defaultOptions, |
||||
eventBus: { |
||||
subscribe: jest.fn(), |
||||
getStream: jest.fn(), |
||||
publish: jest.fn(), |
||||
removeAllListeners: jest.fn(), |
||||
newScopedBus: jest.fn(), |
||||
}, |
||||
fieldConfig: {} as unknown as FieldConfigSource, |
||||
height: 400, |
||||
onChangeTimeRange: jest.fn(), |
||||
onFieldConfigChange: jest.fn(), |
||||
onOptionsChange: jest.fn(), |
||||
renderCounter: 1, |
||||
replaceVariables: jest.fn(), |
||||
title: 'Alert groups test', |
||||
transparent: false, |
||||
width: 320, |
||||
}; |
||||
|
||||
const dashboard = { |
||||
id: 1, |
||||
formatDate: (time: number) => new Date(time).toISOString(), |
||||
events: { |
||||
subscribe: jest.fn(), |
||||
}, |
||||
}; |
||||
|
||||
const renderPanel = (options: UnifiedAlertListOptions = defaultOptions) => { |
||||
const store = configureStore(); |
||||
|
||||
const dashSrv: unknown = { getCurrent: () => dashboard }; |
||||
setDashboardSrv(dashSrv as DashboardSrv); |
||||
|
||||
defaultProps.options = options; |
||||
const props = { ...defaultProps }; |
||||
|
||||
return render( |
||||
<Provider store={store}> |
||||
<UnifiedAlertList {...props} /> |
||||
</Provider> |
||||
); |
||||
}; |
||||
|
||||
describe('UnifiedAlertList', () => { |
||||
it('subscribes to the dashboard refresh interval', async () => { |
||||
await renderPanel(); |
||||
expect(dashboard.events.subscribe).toHaveBeenCalledTimes(1); |
||||
expect(dashboard.events.subscribe.mock.calls[0][0]).toEqual(TimeRangeUpdatedEvent); |
||||
}); |
||||
}); |
Loading…
Reference in new issue