| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { renderHook, act } from '@testing-library/react-hooks';
- import LanguageProvider from 'app/plugins/datasource/loki/language_provider';
- import { useLokiLabels } from './useLokiLabels';
- import { DataSourceStatus } from '@grafana/ui/src/types/datasource';
- import { AbsoluteTimeRange } from '@grafana/data';
- describe('useLokiLabels hook', () => {
- it('should refresh labels', async () => {
- const datasource = {
- metadataRequest: () => ({ data: { data: [] as any[] } }),
- };
- const languageProvider = new LanguageProvider(datasource);
- const logLabelOptionsMock = ['Holy mock!'];
- const rangeMock: AbsoluteTimeRange = {
- from: 1560153109000,
- to: 1560153109000,
- };
- languageProvider.refreshLogLabels = () => {
- languageProvider.logLabelOptions = logLabelOptionsMock;
- return Promise.resolve();
- };
- const { result, waitForNextUpdate } = renderHook(() =>
- useLokiLabels(languageProvider, true, [], rangeMock, DataSourceStatus.Connected, DataSourceStatus.Connected)
- );
- act(() => result.current.refreshLabels());
- expect(result.current.logLabelOptions).toEqual([]);
- await waitForNextUpdate();
- expect(result.current.logLabelOptions).toEqual(logLabelOptionsMock);
- });
- it('should force refresh labels after a disconnect', () => {
- const datasource = {
- metadataRequest: () => ({ data: { data: [] as any[] } }),
- };
- const rangeMock: AbsoluteTimeRange = {
- from: 1560153109000,
- to: 1560153109000,
- };
- const languageProvider = new LanguageProvider(datasource);
- languageProvider.refreshLogLabels = jest.fn();
- renderHook(() =>
- useLokiLabels(languageProvider, true, [], rangeMock, DataSourceStatus.Connected, DataSourceStatus.Disconnected)
- );
- expect(languageProvider.refreshLogLabels).toBeCalledTimes(1);
- expect(languageProvider.refreshLogLabels).toBeCalledWith(rangeMock, true);
- });
- it('should not force refresh labels after a connect', () => {
- const datasource = {
- metadataRequest: () => ({ data: { data: [] as any[] } }),
- };
- const rangeMock: AbsoluteTimeRange = {
- from: 1560153109000,
- to: 1560153109000,
- };
- const languageProvider = new LanguageProvider(datasource);
- languageProvider.refreshLogLabels = jest.fn();
- renderHook(() =>
- useLokiLabels(languageProvider, true, [], rangeMock, DataSourceStatus.Disconnected, DataSourceStatus.Connected)
- );
- expect(languageProvider.refreshLogLabels).not.toBeCalled();
- });
- });
|