mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* logs: move new-histogram next to old-histogram * logs: handle legend-click in new-histogram * minor visual change
94 lines
2.5 KiB
TypeScript
94 lines
2.5 KiB
TypeScript
import { render, screen, fireEvent } from '@testing-library/react';
|
|
import React from 'react';
|
|
|
|
import { LoadingState, LogLevel, LogRowModel, MutableDataFrame, toUtc } from '@grafana/data';
|
|
import { ExploreId } from 'app/types';
|
|
|
|
import { Logs } from './Logs';
|
|
|
|
describe('Logs', () => {
|
|
const setup = (propOverrides?: object) => {
|
|
const rows = [
|
|
makeLog({ uid: '1', timeEpochMs: 1 }),
|
|
makeLog({ uid: '2', timeEpochMs: 2 }),
|
|
makeLog({ uid: '3', timeEpochMs: 3 }),
|
|
];
|
|
|
|
return render(
|
|
<Logs
|
|
exploreId={ExploreId.left}
|
|
splitOpen={() => undefined}
|
|
logsVolumeData={undefined}
|
|
loadLogsVolumeData={() => undefined}
|
|
logRows={rows}
|
|
timeZone={'utc'}
|
|
width={50}
|
|
loading={false}
|
|
loadingState={LoadingState.Done}
|
|
absoluteRange={{
|
|
from: toUtc('2019-01-01 10:00:00').valueOf(),
|
|
to: toUtc('2019-01-01 16:00:00').valueOf(),
|
|
}}
|
|
addResultsToCache={() => {}}
|
|
onChangeTime={() => {}}
|
|
clearCache={() => {}}
|
|
getFieldLinks={() => {
|
|
return [];
|
|
}}
|
|
/>
|
|
);
|
|
};
|
|
|
|
beforeEach(() => {
|
|
jest.useFakeTimers();
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.useRealTimers();
|
|
});
|
|
|
|
it('should render logs', () => {
|
|
setup();
|
|
const logsSection = screen.getByTestId('logRows');
|
|
let logRows = logsSection.querySelectorAll('tr');
|
|
expect(logRows.length).toBe(3);
|
|
expect(logRows[0].textContent).toContain('log message 3');
|
|
expect(logRows[2].textContent).toContain('log message 1');
|
|
});
|
|
|
|
it('should flip the order', () => {
|
|
setup();
|
|
const oldestFirstSelection = screen.getByLabelText('Oldest first');
|
|
fireEvent.click(oldestFirstSelection);
|
|
jest.advanceTimersByTime(1000);
|
|
const logsSection = screen.getByTestId('logRows');
|
|
let logRows = logsSection.querySelectorAll('tr');
|
|
expect(logRows.length).toBe(3);
|
|
expect(logRows[0].textContent).toContain('log message 1');
|
|
expect(logRows[2].textContent).toContain('log message 3');
|
|
});
|
|
});
|
|
|
|
const makeLog = (overrides: Partial<LogRowModel>): LogRowModel => {
|
|
const uid = overrides.uid || '1';
|
|
const entry = `log message ${uid}`;
|
|
return {
|
|
uid,
|
|
entryFieldIndex: 0,
|
|
rowIndex: 0,
|
|
dataFrame: new MutableDataFrame(),
|
|
logLevel: LogLevel.debug,
|
|
entry,
|
|
hasAnsi: false,
|
|
hasUnescapedContent: false,
|
|
labels: {},
|
|
raw: entry,
|
|
timeFromNow: '',
|
|
timeEpochMs: 1,
|
|
timeEpochNs: '1000000',
|
|
timeLocal: '',
|
|
timeUtc: '',
|
|
...overrides,
|
|
};
|
|
};
|