import { render, screen } from '@testing-library/react'; import { HelperTextItem } from '../HelperTextItem'; import styles from '@patternfly/react-styles/css/components/HelperText/helper-text'; test('Renders to match snapshot', () => { const { asFragment } = render(help test text); expect(asFragment()).toMatchSnapshot(); }); test('Renders without children', () => { render(
); expect(screen.getByTestId('container').firstChild).toBeVisible(); }); test('Renders default classes', () => { render(help test text 1); expect(screen.getByText('help test text 1')).toHaveClass(styles.helperTextItemText); expect(screen.getByText('help test text 1').parentElement).toHaveClass(styles.helperTextItem); }); test('Renders custom className', () => { render(help test text 1); expect(screen.getByText('help test text 1').parentElement).toHaveClass('custom'); }); test('Does not render screen reader text by default', () => { render(help test text 1); expect(screen.queryByText('status', { exact: false })).not.toBeInTheDocument(); }); Object.values(['indeterminate', 'warning', 'success', 'error']).forEach((variant) => { test(`Renders with class ${styles.modifiers[variant]} when variant = ${variant}`, () => { render( text ); expect(screen.getByText('text').parentElement).toHaveClass(styles.modifiers[variant]); }); test(`Renders default screenreader text when variant = ${variant}`, () => { render( text ); expect(screen.getByText(`: ${variant} status;`)).toBeInTheDocument(); }); test('Renders without screenreader text when screenReaderText is empty string', () => { render( text ); expect(screen.queryByText(`: ${variant} status;`)).not.toBeInTheDocument(); }); }); test('Renders custom screen reader text', () => { render( help test text 1 ); expect(screen.queryByText(': error status;')).not.toBeInTheDocument(); expect(screen.getByText(': danger;')).toBeInTheDocument(); }); test('Renders id when id is passed', () => { render(help test text 1); expect(screen.getByText('help test text 1').parentElement).toHaveAttribute('id', 'text-item'); }); test('Renders as div by default when component is not passed', () => { render(help test text 1); expect(screen.getByText('help test text 1').parentElement?.tagName).toBe('DIV'); }); test('Renders with element passed to component prop', () => { render(help test text 1); expect(screen.getByText('help test text 1').parentElement?.tagName).toBe('LI'); }); test('Does not render an icon by default', () => { render(help test text); expect(screen.queryByText('help test text')?.previousSibling).not.toBeInTheDocument(); }); test('Renders a default icon when variant is passed and icon is not passed', () => { render(help test text); expect(screen.getByText('help test text').previousSibling).toHaveClass(styles.helperTextItemIcon); }); test('Renders custom icon when icon prop is passed', () => { render(icon content}>help test text); expect(screen.getByText('icon content').parentElement).toHaveClass(styles.helperTextItemIcon); }); test('Renders custom icon instead of variant icon when icon and variant are passed', () => { render( icon content} variant="success"> help test text ); expect(screen.getByText('icon content').parentElement).toHaveClass(styles.helperTextItemIcon); });