import { Input } from '../inputs/Input'; import { lorem10, render, screen } from '../test-utils'; import { Label } from './Label'; describe('Label', () => { it('renders string labels', () => { render( , ); expect(screen.getByLabelText(/Phone number/)).toBeInTheDocument(); }); it('renders string labels with (Optional) suffix', () => { render( , ); expect(screen.getByLabelText(/Phone number/)).toBeInTheDocument(); expect(screen.getByLabelText(/(Optional)/)).toBeInTheDocument(); }); it('renders description', () => { const inputId = 'input-id'; const descriptionId = 'desc-test'; render( <> {lorem10} , ); expect(screen.getByLabelText('Phone number')).toBeInTheDocument(); expect(screen.getByText(lorem10)).toBeInTheDocument(); expect(screen.getByText(lorem10)).toHaveAttribute('id', descriptionId); }); it('renders description with optional', () => { const descriptionId = 'desc-test'; render( <> {lorem10} , ); expect(screen.getByLabelText(/Phone number/)).toBeInTheDocument(); expect(screen.getByText(lorem10)).toBeInTheDocument(); expect(screen.getByText(lorem10)).toHaveAttribute('id', descriptionId); }); it('connects label with form control via `id` + `aria-labelledby`', () => { const labelId = 'label-id'; render( <>
Custom complex component
, ); expect(screen.getByLabelText('Phone number')).toHaveAttribute('aria-labelledby', labelId); }); });