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