import { fireEvent, render, screen } from '@testing-library/react'; import GithubSlugger from 'github-slugger'; import { PropsWithChildren } from 'react'; import { Collapsible } from '.'; import { HeadingManager } from '~/common/headingManager'; import { HeadingsContext } from '~/components/page-higher-order/withHeadingManager'; const prepareHeadingManager = () => { const headingManager = new HeadingManager(new GithubSlugger(), { headings: [] }); return headingManager; }; const WrapWithContext = ({ children }: PropsWithChildren) => { const headingManager = prepareHeadingManager(); return {children}; }; describe('Collapsible', () => { it('hides content by default', () => { render( Content ); expect(screen.getByText('Summary')).toBeVisible(); expect(screen.getByText('Content')).not.toBeVisible(); }); it('shows content when opened', () => { render( Content ); fireEvent.click(screen.getByText('Summary')); expect(screen.getByText('Summary')).toBeVisible(); expect(screen.getByText('Content')).toBeVisible(); }); it('shows content when rendered with open', () => { render( Content ); expect(screen.getByText('Summary')).toBeVisible(); expect(screen.getByText('Content')).toBeVisible(); }); });