import React from 'react';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { SelectToggle } from '../SelectToggle';
describe('SelectToggle', () => {
describe('API', () => {
test('click on closed', async () => {
const mockToggle = jest.fn();
const user = userEvent.setup();
render(
Select
);
await user.click(screen.getByRole('button'));
expect(mockToggle).toHaveBeenCalledWith(expect.any(Object), true);
});
test('click on opened', async () => {
const mockToggle = jest.fn();
const user = userEvent.setup();
render(
Select
);
await user.click(screen.getByRole('button'));
expect(mockToggle).toHaveBeenCalledWith(expect.any(MouseEvent), false);
});
test('click on document', async () => {
const mockToggle = jest.fn();
const user = userEvent.setup();
render(
Select
);
await user.click(screen.getByText('Select').parentElement);
expect(mockToggle).toHaveBeenCalledWith(expect.any(MouseEvent), false);
});
test('on click outside has been removed', async () => {
const mockToggle = jest.fn();
const user = userEvent.setup();
render(
Select
);
await user.click(screen.getByText('Select').parentElement);
expect(mockToggle).not.toHaveBeenCalled();
});
});
describe('state', () => {
test('active', () => {
const { asFragment } = render(
Select
);
expect(asFragment()).toMatchSnapshot();
});
});
});