mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
47 lines
1.9 KiB
TypeScript
47 lines
1.9 KiB
TypeScript
import { screen } from '@testing-library/dom';
|
|
import { render } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
import React from 'react';
|
|
|
|
import { getEvaluationGroupOptions, EvaluationGroupQuickPick } from './EvaluationGroupQuickPick';
|
|
|
|
describe('EvaluationGroupQuickPick', () => {
|
|
it('should render the correct default preset, set active element and allow selecting another option', async () => {
|
|
const onSelect = jest.fn();
|
|
render(<EvaluationGroupQuickPick currentInterval={'10m'} onSelect={onSelect} />);
|
|
|
|
const shouldHaveButtons = ['10s', '30s', '1m', '5m', '10m', '15m', '30m', '1h'];
|
|
const shouldNotHaveButtons = ['0s', '2h'];
|
|
|
|
shouldHaveButtons.forEach((name) => {
|
|
expect(screen.getByRole('option', { name })).toBeInTheDocument();
|
|
});
|
|
|
|
shouldNotHaveButtons.forEach((name) => {
|
|
expect(screen.queryByRole('option', { name })).not.toBeInTheDocument();
|
|
});
|
|
|
|
expect(screen.getByRole('option', { selected: true })).toHaveTextContent('10m');
|
|
|
|
await userEvent.click(screen.getByRole('option', { name: '30m' }));
|
|
expect(onSelect).toHaveBeenCalledWith('30m');
|
|
});
|
|
});
|
|
|
|
describe('getEvaluationGroupOptions', () => {
|
|
it('should return the correct default options', () => {
|
|
const options = getEvaluationGroupOptions();
|
|
expect(options).toEqual(['10s', '30s', '1m', '5m', '10m', '15m', '30m', '1h']);
|
|
});
|
|
|
|
it('should return the correct options when minInterval is set within set of defaults', () => {
|
|
const options = getEvaluationGroupOptions('1m0s');
|
|
expect(options).toEqual(['1m', '5m', '10m', '15m', '30m', '1h', '2h', '4h']);
|
|
});
|
|
|
|
it('should return the correct options when minInterval is set outside set of defaults', () => {
|
|
const options = getEvaluationGroupOptions('12h');
|
|
expect(options).toEqual(['12h', '1d', '1d12h', '2d', '2d12h', '3d', '3d12h', '4d']);
|
|
});
|
|
});
|