import React, { ReactElement } from 'react';
import {
render,
fireEvent,
waitFor,
waitForElementToBeRemoved,
} from '@testing-library/react';
import Collapse from '..';
describe('rendering', () => {
it('shows collapse content', () => {
const { getByText } = render(Collapse content);
expect(getByText('Collapse content')).toBeInTheDocument();
});
});
describe('interaction', () => {
it('allows to toggle content rendering', async () => {
const Component = (): ReactElement => {
const [open, setOpen] = React.useState(false);
return (
<>
Collapse content
>
);
};
const { queryByText, getByText } = render();
expect(queryByText('Collapse content')).not.toBeInTheDocument();
fireEvent.click(getByText('Toggle'));
await waitFor(() => {
expect(getByText('Collapse content')).toBeInTheDocument();
});
fireEvent.click(getByText('Toggle'));
await waitForElementToBeRemoved(() => queryByText('Collapse content'));
});
});