import React from 'react';
import { fireEvent } from '@testing-library/react';
import renderWithTheme from '../../../testUtils/renderWithTheme';
import Input from '..';
import Typography from '../../Typography';
const { TextArea } = Input;
describe('rendering', () => {
it('renders textarea', () => {
const { getAllByText } = renderWithTheme(
);
expect(getAllByText('Email')).toHaveLength(2);
});
});
describe('interaction', () => {
it('works as uncontrolled component', () => {
const { getByLabelText } = renderWithTheme(
Email
);
expect((getByLabelText('Email') as HTMLInputElement).value).toEqual('');
fireEvent.change(getByLabelText('Email'), {
target: { value: 'new value' },
});
expect((getByLabelText('Email') as HTMLInputElement).value).toEqual(
'new value'
);
});
it('works as controlled component', () => {
const onChange = jest.fn();
const { getByLabelText } = renderWithTheme(
Email
);
expect((getByLabelText('Email') as HTMLInputElement).value).toEqual(
'fixed'
);
fireEvent.change(getByLabelText('Email'), {
target: { value: 'new value' },
});
expect(onChange).toHaveBeenCalledTimes(1);
expect(onChange).toHaveBeenCalledWith('new value');
expect((getByLabelText('Email') as HTMLInputElement).value).toEqual(
'fixed'
);
});
it('can get auto focus', () => {
const onFocus = jest.fn();
renderWithTheme();
expect(onFocus).toHaveBeenCalledTimes(1);
});
});