import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { ExpandableSectionToggle } from '../ExpandableSectionToggle';
import styles from '@patternfly/react-styles/css/components/ExpandableSection/expandable-section';
test('Renders without children', () => {
render();
expect(screen.getByRole('button')).toBeInTheDocument();
});
test('Renders with children', () => {
render(Toggle test);
expect(screen.getByRole('button')).toHaveTextContent('Toggle test');
});
test('Does not render with class pf-m-detached by default', () => {
render(Toggle test);
expect(screen.getByTestId('test-id')).not.toHaveClass('pf-m-detached');
});
test('Renders with class pf-m-detached when isDetached is true', () => {
render(
Toggle test
);
expect(screen.getByTestId('test-id')).toHaveClass('pf-m-detached');
});
test('Renders with aria-label when toggleAriaLabel is passed', () => {
render();
expect(screen.getByRole('button')).toHaveAccessibleName('Test label');
});
test('Renders with aria-labelledby when toggleAriaLabelledBy is passed', () => {
render(
<>
Test label
>
);
expect(screen.getByRole('button')).toHaveAccessibleName('Test label');
});
test('Renders with default div wrapper when toggleWrapper is not specified', () => {
render(Toggle test);
const toggle = screen.getByRole('button').parentElement;
expect(toggle?.tagName).toBe('DIV');
});
test('Renders with h2 wrapper when toggleWrapper="h2"', () => {
render(
Toggle test
);
expect(screen.getByRole('heading', { level: 2 })).toBeInTheDocument();
});
test('Renders with div wrapper when toggleWrapper="div"', () => {
render(
Toggle test
);
const toggle = screen.getByRole('button').parentElement;
expect(toggle?.tagName).toBe('DIV');
});