import {
HealthSelector,
optionsDefaultConfiguration,
} from './HealthSelector.component';
import { act } from 'react';
import { render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { getWrapper } from '../../testUtils';
describe('HealthSelector', () => {
it('should display correctly without any props and select first option', async () => {
const { Wrapper } = getWrapper();
const { getByText } = render(
{}} />
,
);
await waitFor(() => screen.findByRole('img', { hidden: true }));
const input = screen.getByRole('textbox');
// open the menu
await act(() => userEvent.click(input));
const healthyOption = getByText(/healthy/i);
expect(healthyOption).toBeInTheDocument();
});
it('should call the onChange function when it change', async () => {
const { Wrapper } = getWrapper();
const onChange = jest.fn();
const { getByText } = render(
,
);
const input = screen.getByRole('textbox');
await act(() => userEvent.click(input));
const warningOption = getByText(/warning/i);
await act(() => userEvent.click(warningOption));
expect(onChange).toHaveBeenCalledWith('warning');
});
it('should not display hidden options', async () => {
const { Wrapper } = getWrapper();
const { queryByText } = render(
{}}
options={[
optionsDefaultConfiguration.all,
optionsDefaultConfiguration.warning,
optionsDefaultConfiguration.critical,
optionsDefaultConfiguration.unknown,
]}
/>
,
);
// open the menu
const input = screen.getByRole('textbox');
await act(() => userEvent.click(input));
const healthyOption = queryByText(/healthy/i);
expect(healthyOption).not.toBeInTheDocument();
});
});