// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import '@testing-library/jest-dom';
import React from 'react';
import FormField from '../../../../src/components/ui/FormField';
import Input from '../../../../src/components/ui/Input';
import RadioGroup from '../../../../src/components/ui/RadioGroup';
import lightTheme from '../../../../src/theme/light';
import { renderWithTheme } from '../../../test-helpers';
describe('FormField', () => {
let mockFunction: any;
beforeEach(() => {
mockFunction = jest.fn();
});
it('should render a basic Input FormField', () => {
const label = 'First Name';
const component = (
);
const { queryByTestId } = renderWithTheme(lightTheme, component);
expect(queryByTestId('input')).toBeInTheDocument();
});
it('should render a basic Input FormField with label', () => {
const label = 'First Name';
const component = (
);
const { queryByText } = renderWithTheme(lightTheme, component);
expect(queryByText(label)).toBeInTheDocument();
});
it('should render a basic Input FormField with infoText', () => {
const label = 'First Name';
const infoText = 'informational text';
const component = (
);
const { getByTestId } = renderWithTheme(lightTheme, component);
const formField = getByTestId('form-field');
expect(formField).toHaveTextContent(infoText);
});
it('should render a basic Input FormField with error', () => {
const label = 'First Name';
const errorText = 'some error text';
const component = (
);
const { getByTestId } = renderWithTheme(lightTheme, component);
const formField = getByTestId('form-field');
expect(formField).toHaveTextContent(errorText);
});
it('should render a basic Input FormField with layout = input-only', () => {
const label = 'First Name';
const layout = 'input-only';
const component = (
);
const { queryByText } = renderWithTheme(lightTheme, component);
expect(queryByText(label)).not.toBeInTheDocument();
});
it('should render a RadioGroup FormField', () => {
const options = [
{
value: 'react',
label: 'React',
},
{
value: 'angular',
label: 'Angular',
},
];
const label = 'test RadioGroup label';
const infoText = 'informational text';
const component = (
);
const { queryByText } = renderWithTheme(lightTheme, component);
expect(queryByText(label)).toBeInTheDocument();
});
});