import { render, screen } from '@testing-library/react';
import React from 'react';
import { select, openMenu } from 'react-select-event';
import { MetricSelect, Props } from './MetricSelect';
const props: Props = {
isSearchable: false,
onChange: jest.fn(),
value: '',
placeholder: 'Select Reducer',
className: 'width-15',
options: [
{
label: 'foo',
value: 'foo',
},
{
label: 'bar',
value: 'bar',
},
],
variables: [],
};
describe('MetricSelect', () => {
it('passes the placeholder, options and onChange correctly to Select', async () => {
render();
const metricSelect = screen.getByRole('combobox');
expect(metricSelect).toBeInTheDocument();
expect(screen.getByText('Select Reducer')).toBeInTheDocument();
await select(metricSelect, 'foo', {
container: document.body,
});
expect(props.onChange).toHaveBeenCalledWith('foo');
});
it('has the correct noOptionsMessage', () => {
const propsWithoutOptions = {
...props,
options: [],
};
render();
const metricSelect = screen.getByRole('combobox');
expect(metricSelect).toBeInTheDocument();
openMenu(metricSelect);
expect(screen.getByText('No options found')).toBeInTheDocument();
});
});