import { fireEvent, render, RenderResult, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; import { Collapsible } from '.'; const TRIGGER_TEXT = '@peduarte marcou 3 repositórios com estrela'; const CONTENT_TEXT = '@eloquent/tokens'; const CollapsibleTest = (props: React.ComponentProps) => (
@eloquent/react
{CONTENT_TEXT}
); describe('Collapsible component', () => { let rendered: RenderResult; let trigger: HTMLElement; let content: HTMLElement | null; beforeEach(() => { rendered = render(); trigger = rendered.getByText(TRIGGER_TEXT); }); it('should render the Collapsible component and toggle content visibility', () => { expect(screen.getByText(TRIGGER_TEXT)).toBeInTheDocument(); fireEvent.click(trigger); expect(screen.getByText(CONTENT_TEXT)).toBeInTheDocument(); expect(rendered.baseElement).toMatchSnapshot(); }); describe('when clicking the trigger', () => { beforeEach(async () => { fireEvent.click(trigger); content = rendered.queryByText(CONTENT_TEXT); }); it('should open the content', () => { expect(content).toBeVisible(); }); describe('and clicking the trigger again', () => { beforeEach(() => { fireEvent.click(trigger); }); it('should close the content', () => { expect(content).not.toBeVisible(); }); }); }); });