2023-04-11 04:51:54 -05:00
|
|
|
import { act, renderHook } from '@testing-library/react';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2021-11-29 09:19:56 -06:00
|
|
|
import { DataFrame } from '@grafana/data';
|
2020-04-08 10:16:22 -05:00
|
|
|
|
2023-01-27 08:13:17 -06:00
|
|
|
import { TraceLog } from './components/types/trace';
|
2022-04-22 08:33:13 -05:00
|
|
|
import { useDetailState } from './useDetailState';
|
|
|
|
|
2021-11-29 09:19:56 -06:00
|
|
|
const sampleFrame: DataFrame = {
|
|
|
|
name: 'trace',
|
|
|
|
fields: [],
|
|
|
|
length: 0,
|
|
|
|
};
|
2021-11-22 06:18:50 -06:00
|
|
|
|
2021-11-29 09:19:56 -06:00
|
|
|
describe('useDetailState', () => {
|
2020-04-08 10:16:22 -05:00
|
|
|
it('toggles detail', async () => {
|
2021-11-29 09:19:56 -06:00
|
|
|
const { result } = renderHook(() => useDetailState(sampleFrame));
|
2020-04-08 10:16:22 -05:00
|
|
|
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 () => {
|
2021-11-29 09:19:56 -06:00
|
|
|
const { result } = renderHook(() => useDetailState(sampleFrame));
|
2020-04-08 10:16:22 -05:00
|
|
|
act(() => result.current.toggleDetail('span1'));
|
|
|
|
act(() => result.current.detailLogsToggle('span1'));
|
2020-06-15 06:06:37 -05:00
|
|
|
expect(result.current.detailStates.get('span1')?.logs.isOpen).toBe(true);
|
2020-04-08 10:16:22 -05:00
|
|
|
|
2022-12-21 08:01:03 -06:00
|
|
|
const log: TraceLog = { timestamp: 1, fields: [] };
|
2020-04-08 10:16:22 -05:00
|
|
|
act(() => result.current.detailLogItemToggle('span1', log));
|
2020-06-15 06:06:37 -05:00
|
|
|
expect(result.current.detailStates.get('span1')?.logs.openedItems.has(log)).toBe(true);
|
2020-04-08 10:16:22 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('toggles warnings', async () => {
|
2021-11-29 09:19:56 -06:00
|
|
|
const { result } = renderHook(() => useDetailState(sampleFrame));
|
2020-04-08 10:16:22 -05:00
|
|
|
act(() => result.current.toggleDetail('span1'));
|
|
|
|
act(() => result.current.detailWarningsToggle('span1'));
|
2020-06-15 06:06:37 -05:00
|
|
|
expect(result.current.detailStates.get('span1')?.isWarningsOpen).toBe(true);
|
2020-04-08 10:16:22 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('toggles references', async () => {
|
2021-11-29 09:19:56 -06:00
|
|
|
const { result } = renderHook(() => useDetailState(sampleFrame));
|
2020-04-08 10:16:22 -05:00
|
|
|
act(() => result.current.toggleDetail('span1'));
|
|
|
|
act(() => result.current.detailReferencesToggle('span1'));
|
2022-02-25 12:14:13 -06:00
|
|
|
expect(result.current.detailStates.get('span1')?.references.isOpen).toBe(true);
|
2020-04-08 10:16:22 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('toggles processes', async () => {
|
2021-11-29 09:19:56 -06:00
|
|
|
const { result } = renderHook(() => useDetailState(sampleFrame));
|
2020-04-08 10:16:22 -05:00
|
|
|
act(() => result.current.toggleDetail('span1'));
|
|
|
|
act(() => result.current.detailProcessToggle('span1'));
|
2020-06-15 06:06:37 -05:00
|
|
|
expect(result.current.detailStates.get('span1')?.isProcessOpen).toBe(true);
|
2020-04-08 10:16:22 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('toggles tags', async () => {
|
2021-11-29 09:19:56 -06:00
|
|
|
const { result } = renderHook(() => useDetailState(sampleFrame));
|
2020-04-08 10:16:22 -05:00
|
|
|
act(() => result.current.toggleDetail('span1'));
|
|
|
|
act(() => result.current.detailTagsToggle('span1'));
|
2020-06-15 06:06:37 -05:00
|
|
|
expect(result.current.detailStates.get('span1')?.isTagsOpen).toBe(true);
|
2020-04-08 10:16:22 -05:00
|
|
|
});
|
|
|
|
});
|