mirror of https://github.com/grafana/grafana
Explore: Save log results sort order (#45423)
* Explore: Save log results sort order * Change to radio group, add test and make language consistent with logs pluginpull/45763/head
parent
434697e0fd
commit
31090a75eb
@ -0,0 +1,87 @@ |
||||
import React from 'react'; |
||||
import { render, screen, fireEvent } from '@testing-library/react'; |
||||
import { LoadingState, LogLevel, LogRowModel, MutableDataFrame, toUtc } from '@grafana/data'; |
||||
|
||||
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 |
||||
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('modern'); |
||||
}); |
||||
|
||||
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, |
||||
}; |
||||
}; |
Loading…
Reference in new issue