grafana/public/app/features/explore/TraceView/useDetailState.test.ts
Josh Hunt 3c6e0e8ef8
Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

66 lines
2.5 KiB
TypeScript

import { TraceLog } from '@jaegertracing/jaeger-ui-components/src/types/trace';
import { act, renderHook } from '@testing-library/react-hooks';
import { DataFrame } from '@grafana/data';
import { useDetailState } from './useDetailState';
const sampleFrame: DataFrame = {
name: 'trace',
fields: [],
length: 0,
};
describe('useDetailState', () => {
it('toggles detail', async () => {
const { result } = renderHook(() => useDetailState(sampleFrame));
expect(result.current.detailStates.size).toBe(0);
act(() => result.current.toggleDetail('span1'));
expect(result.current.detailStates.size).toBe(1);
expect(result.current.detailStates.has('span1')).toBe(true);
act(() => result.current.toggleDetail('span1'));
expect(result.current.detailStates.size).toBe(0);
});
it('toggles logs and logs items', async () => {
const { result } = renderHook(() => useDetailState(sampleFrame));
act(() => result.current.toggleDetail('span1'));
act(() => result.current.detailLogsToggle('span1'));
expect(result.current.detailStates.get('span1')?.logs.isOpen).toBe(true);
const log = { timestamp: 1 } as TraceLog;
act(() => result.current.detailLogItemToggle('span1', log));
expect(result.current.detailStates.get('span1')?.logs.openedItems.has(log)).toBe(true);
});
it('toggles warnings', async () => {
const { result } = renderHook(() => useDetailState(sampleFrame));
act(() => result.current.toggleDetail('span1'));
act(() => result.current.detailWarningsToggle('span1'));
expect(result.current.detailStates.get('span1')?.isWarningsOpen).toBe(true);
});
it('toggles references', async () => {
const { result } = renderHook(() => useDetailState(sampleFrame));
act(() => result.current.toggleDetail('span1'));
act(() => result.current.detailReferencesToggle('span1'));
expect(result.current.detailStates.get('span1')?.references.isOpen).toBe(true);
});
it('toggles processes', async () => {
const { result } = renderHook(() => useDetailState(sampleFrame));
act(() => result.current.toggleDetail('span1'));
act(() => result.current.detailProcessToggle('span1'));
expect(result.current.detailStates.get('span1')?.isProcessOpen).toBe(true);
});
it('toggles tags', async () => {
const { result } = renderHook(() => useDetailState(sampleFrame));
act(() => result.current.toggleDetail('span1'));
act(() => result.current.detailTagsToggle('span1'));
expect(result.current.detailStates.get('span1')?.isTagsOpen).toBe(true);
});
});