import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import Button from 'sentry/components/button';
import {
Input,
InputGroup,
InputLeadingItems,
InputTrailingItems,
} from 'sentry/components/inputGroup';
describe('InputGroup', function () {
it('renders input', function () {
const {container} = render(
{}} />
);
expect(screen.getByRole('textbox')).toBeInTheDocument();
expect(screen.getByRole('textbox')).toHaveDisplayValue('Search');
expect(container).toSnapshot();
});
it('renders disabled input', function () {
const {container} = render(
);
expect(screen.getByRole('textbox')).toBeDisabled();
expect(container).toSnapshot();
});
it('renders leading elements', function () {
const {container} = render(
);
// Leading button is rendered
expect(screen.getByTestId('input-leading-items')).toBeInTheDocument();
expect(screen.getByRole('button', {name: 'Leading Button'})).toBeInTheDocument();
// Focus moves first to leading button and then to input
userEvent.tab();
expect(screen.getByRole('button', {name: 'Leading Button'})).toHaveFocus();
userEvent.tab();
expect(screen.getByRole('textbox')).toHaveFocus();
expect(container).toSnapshot();
});
it('renders trailing elements', function () {
const {container} = render(
);
// Trailing button is rendered
expect(screen.getByTestId('input-trailing-items')).toBeInTheDocument();
expect(screen.getByRole('button', {name: 'Trailing Button'})).toBeInTheDocument();
// Focus moves first to input and then to trailing button
userEvent.tab();
expect(screen.getByRole('textbox')).toHaveFocus();
userEvent.tab();
expect(screen.getByRole('button', {name: 'Trailing Button'})).toHaveFocus();
expect(container).toSnapshot();
});
});