import { useContext } from 'react'; import { render, screen } from '@testing-library/react'; import '@testing-library/jest-dom'; import styles from '@patternfly/react-styles/css/components/TextInputGroup/text-input-group'; import { TextInputGroup, TextInputGroupContext } from '../TextInputGroup'; describe('TextInputGroup', () => { it('renders without children', () => { render(); expect(screen.getByTestId('TextInputGroup')).toBeVisible(); }); it('renders children', () => { render(Test); expect(screen.getByText('Test')).toBeVisible(); }); it(`renders with class ${styles.textInputGroup}`, () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).toHaveClass(styles.textInputGroup); }); it('renders with custom class names provided via prop', () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).toHaveClass('custom-class'); }); it(`does not render with the ${styles.modifiers.disabled} class when not disabled`, () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).not.toHaveClass(styles.modifiers.disabled); }); it(`renders with the ${styles.modifiers.disabled} class when disabled`, () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).toHaveClass(styles.modifiers.disabled); }); it(`renders with class ${styles.modifiers.success} when validated="success"`, () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).toHaveClass(styles.modifiers.success); }); it(`renders with class ${styles.modifiers.warning} when validated="warning"`, () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).toHaveClass(styles.modifiers.warning); }); it(`renders with class ${styles.modifiers.error} when validated="error"`, () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).toHaveClass(styles.modifiers.error); }); it('does not apply validation modifiers when validated="default"', () => { render(Test); const inputGroup = screen.getByText('Test'); expect(inputGroup).not.toHaveClass(styles.modifiers.success); expect(inputGroup).not.toHaveClass(styles.modifiers.warning); expect(inputGroup).not.toHaveClass(styles.modifiers.error); }); it('passes isDisabled=false to children via a context when isDisabled prop is not passed', () => { const TestComponent: React.FunctionComponent = () => { const context = useContext(TextInputGroupContext); return