2021-02-14 19:48:41 +03:00
|
|
|
import { h } from 'preact';
|
|
|
|
|
import Select from '../Select';
|
|
|
|
|
import { fireEvent, render, screen } from '@testing-library/preact';
|
|
|
|
|
|
|
|
|
|
describe('Select', () => {
|
|
|
|
|
test('on focus, shows a menu', async () => {
|
|
|
|
|
const handleChange = jest.fn();
|
2021-08-25 00:22:14 +03:00
|
|
|
render(
|
|
|
|
|
<Select
|
|
|
|
|
label="Tacos"
|
2021-12-09 17:24:50 +03:00
|
|
|
type="dropdown"
|
2021-08-25 00:22:14 +03:00
|
|
|
onChange={handleChange}
|
|
|
|
|
options={['tacos', 'burritos']}
|
2021-12-09 17:24:50 +03:00
|
|
|
paramName={['dinner']}
|
2021-08-25 00:22:14 +03:00
|
|
|
selected=""
|
|
|
|
|
/>
|
|
|
|
|
);
|
2021-02-14 19:48:41 +03:00
|
|
|
|
|
|
|
|
expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
|
|
|
|
|
fireEvent.click(screen.getByRole('textbox'));
|
|
|
|
|
expect(screen.queryByRole('listbox')).toBeInTheDocument();
|
|
|
|
|
expect(screen.queryByRole('option', { name: 'tacos' })).toBeInTheDocument();
|
|
|
|
|
expect(screen.queryByRole('option', { name: 'burritos' })).toBeInTheDocument();
|
|
|
|
|
|
2021-12-09 17:24:50 +03:00
|
|
|
fireEvent.click(screen.queryByRole('option', { name: 'tacos' }));
|
|
|
|
|
expect(handleChange).toHaveBeenCalledWith({ dinner: 'tacos' }, 'tacos');
|
2021-02-14 19:48:41 +03:00
|
|
|
});
|
|
|
|
|
|
2021-08-25 00:22:14 +03:00
|
|
|
// test('allows keyboard navigation', async () => {
|
|
|
|
|
// const handleChange = jest.fn();
|
|
|
|
|
// render(<Select label="Tacos" onChange={handleChange} options={['tacos', 'burritos']} paramName={['burritos']} />);
|
2021-02-14 19:48:41 +03:00
|
|
|
|
2021-08-25 00:22:14 +03:00
|
|
|
// expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
|
|
|
|
|
// const input = screen.getByRole('textbox');
|
|
|
|
|
// fireEvent.focus(input);
|
|
|
|
|
// fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' });
|
|
|
|
|
// expect(screen.queryByRole('listbox')).toBeInTheDocument();
|
2021-02-14 19:48:41 +03:00
|
|
|
|
2021-08-25 00:22:14 +03:00
|
|
|
// fireEvent.keyDown(input, { key: 'ArrowDown', code: 'ArrowDown' });
|
|
|
|
|
// fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' });
|
|
|
|
|
// expect(handleChange).toHaveBeenCalledWith('burritos', 'burritos');
|
|
|
|
|
// });
|
2021-02-14 19:48:41 +03:00
|
|
|
});
|