mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
* Logs: add reference to the start of the logs * Logs: Improve pagination by scrolling to the first log * Logs: move first log ref * Logs navigation: reset scroll on page changes * Update tests * Logs navigation: unify reference to start of logs for scrolling to top * Chore: update test title * Move scrolling reference a bit more to the top
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
import React, { ComponentProps } from 'react';
|
|
|
|
import { LogsNavigationPages } from './LogsNavigationPages';
|
|
|
|
type LogsNavigationPagesProps = ComponentProps<typeof LogsNavigationPages>;
|
|
|
|
const setup = (propOverrides?: Partial<LogsNavigationPagesProps>) => {
|
|
const props: LogsNavigationPagesProps = {
|
|
pages: [
|
|
{
|
|
logsRange: { from: 1619081941000, to: 1619081945930 },
|
|
queryRange: { from: 1619081645930, to: 1619081945930 },
|
|
},
|
|
{
|
|
logsRange: { from: 1619081951000, to: 1619081955930 },
|
|
queryRange: { from: 1619081655930, to: 1619081955930 },
|
|
},
|
|
],
|
|
currentPageIndex: 0,
|
|
oldestLogsFirst: false,
|
|
timeZone: 'local',
|
|
loading: false,
|
|
onClick: jest.fn(),
|
|
...propOverrides,
|
|
};
|
|
|
|
return render(<LogsNavigationPages {...props} />);
|
|
};
|
|
|
|
describe('LogsNavigationPages', () => {
|
|
it('should render logs navigation pages', () => {
|
|
setup();
|
|
expect(screen.getByTestId('logsNavigationPages')).toBeInTheDocument();
|
|
});
|
|
it('should render logs pages with correct range if normal order', () => {
|
|
setup();
|
|
expect(screen.getByText(/02:59:05 — 02:59:01/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/02:59:15 — 02:59:11/i)).toBeInTheDocument();
|
|
});
|
|
it('should render logs pages with correct range if flipped order', () => {
|
|
setup({ oldestLogsFirst: true });
|
|
expect(screen.getByText(/02:59:11 — 02:59:15/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/02:59:01 — 02:59:05/i)).toBeInTheDocument();
|
|
});
|
|
it('should invoke the callback when clicked', async () => {
|
|
const onPageClicked = jest.fn();
|
|
setup({ onClick: onPageClicked });
|
|
expect(onPageClicked).not.toHaveBeenCalled();
|
|
await userEvent.click(screen.getByText(/02:59:05 — 02:59:01/i));
|
|
expect(onPageClicked).toHaveBeenCalled();
|
|
});
|
|
});
|