diff --git a/packages/react/src/components/Form/Form-test.js b/packages/react/src/components/Form/Form-test.js index 525f2e9ec874..41869b533cf8 100644 --- a/packages/react/src/components/Form/Form-test.js +++ b/packages/react/src/components/Form/Form-test.js @@ -7,59 +7,16 @@ import React from 'react'; import Form from '../Form'; -import { shallow, mount } from 'enzyme'; +import { render } from '@testing-library/react'; -const prefix = 'cds'; - -describe('Form', () => { - describe('Renders as expected', () => { - const wrapper = shallow(
); - - it('renders children as expected', () => { - expect(wrapper.find('.child').length).toBe(0); - }); - it('renders wrapper as expected', () => { - expect(wrapper.length).toBe(1); - }); - it('has the expected classes', () => { - expect(wrapper.hasClass(`${prefix}--form`)).toEqual(true); - }); - - it('renders extra classes passed in via className', () => { - expect(wrapper.hasClass('extra-class')).toEqual(true); - }); - - it('should render wrapper as expected', () => { - const form = shallow( - -
-
- - ); - expect(form.length).toEqual(1); - }); - it('should render children as expected', () => { - const form1 = shallow( -
-
-
- - ); - expect(form1.find('.test-child').length).toBe(2); - }); +describe('Form - RTL', () => { + it('should support a custom `className` prop on the outermost element', () => { + const { container } = render(
); + expect(container.firstChild).toHaveClass('test'); + }); - it('should handle submit events', () => { - const onSubmit = jest.fn(); - const form1 = mount( - - -
- ); - const btn = form1.find('button'); - btn.simulate('submit'); - expect(onSubmit).toHaveBeenCalled(); - }); + it('should spread extra props on the outermost element', () => { + const { container } = render(
); + expect(container.firstChild).toHaveAttribute('data-testid', 'test'); }); }); diff --git a/packages/react/src/components/Form/Form.js b/packages/react/src/components/Form/Form.js index 3d29d8f40bd8..14b09376019e 100644 --- a/packages/react/src/components/Form/Form.js +++ b/packages/react/src/components/Form/Form.js @@ -15,8 +15,7 @@ const Form = ({ className, children, ...other }) => { const classNames = classnames(`${prefix}--form`, className); return ( - {' '} - {children}{' '} + {children}
); }; diff --git a/packages/react/src/components/FormGroup/FormGroup-test.js b/packages/react/src/components/FormGroup/FormGroup-test.js index 2c7f0e054713..18ab946736cc 100644 --- a/packages/react/src/components/FormGroup/FormGroup-test.js +++ b/packages/react/src/components/FormGroup/FormGroup-test.js @@ -7,52 +7,74 @@ import React from 'react'; import FormGroup from '../FormGroup'; -import { shallow } from 'enzyme'; - -const prefix = 'cds'; +import { render, screen } from '@testing-library/react'; describe('FormGroup', () => { - describe('Renders as expected', () => { - const wrapper = shallow( - + it('should support a custom `className` prop on the outermost element', () => { + const { container } = render( + + ); + expect(container.firstChild).toHaveClass('test'); + }); + + it('should be set data-invalid when invalid prop is true', () => { + const { container } = render( + + FormGroup Test + + ); + + expect(container.firstChild).toHaveAttribute('data-invalid', ''); + }); + + it('should render legendText', () => { + render( + + FormGroup Test + + ); + + expect(screen.queryByText('legendtest')).toBeDefined(); + }); + + it('should set the id for legend based on legendId', () => { + render( + + FormGroup Test + + ); + + expect(screen.getByText('legendtest')).toHaveAttribute( + 'id', + 'legend-testid' + ); + }); + + it('should display messageText if message is true', () => { + render( + + FormGroup Test + + ); + + expect(screen.queryByText('Message text')).toBeDefined(); + }); + + it('should not display the messageText if message is false', () => { + render( + + FormGroup Test + ); - it('renders children as expected', () => { - expect(wrapper.find('.child').length).toBe(0); - }); - it('renders wrapper as expected', () => { - expect(wrapper.length).toBe(1); - }); - it('has the expected classes', () => { - expect(wrapper.hasClass(`${prefix}--fieldset`)).toEqual(true); - }); - it('renders extra classes passed in via className', () => { - expect(wrapper.hasClass('extra-class')).toEqual(true); - }); - it('should not render the data-invalid property by default', () => { - expect(wrapper.props()['data-invalid']).toBe(undefined); - }); - it('should render the data-invalid attribute when invalid is set', () => { - const formgroup = shallow(); - expect(formgroup.props()['data-invalid']).toBe(''); - }); - it('should render wrapper as expected', () => { - const formGroup = shallow( - -
-
- - ); - expect(formGroup.length).toEqual(1); - }); - it('should render children as expected', () => { - const formGroup1 = shallow( - -
-
- - ); - expect(formGroup1.find('.test-child').length).toBe(2); - }); + expect(screen.queryByText('Message text')).toBeNull(); }); }); diff --git a/packages/react/src/components/FormGroup/FormGroup.js b/packages/react/src/components/FormGroup/FormGroup.js index 01e5eef6b7f7..a57e4de7ec7d 100644 --- a/packages/react/src/components/FormGroup/FormGroup.js +++ b/packages/react/src/components/FormGroup/FormGroup.js @@ -18,7 +18,7 @@ const FormGroup = ({ className, message, messageText, - ...other + ...rest }) => { const prefix = usePrefix(); @@ -28,11 +28,11 @@ const FormGroup = ({
+ {...rest} + aria-labelledby={rest['aria-labelledby'] || legendId}> + id={legendId || rest['aria-labelledby']}> {legendText} {children} diff --git a/packages/react/src/components/FormItem/FormItem-test.js b/packages/react/src/components/FormItem/FormItem-test.js index b41f9169eefb..68cb32de6ccf 100644 --- a/packages/react/src/components/FormItem/FormItem-test.js +++ b/packages/react/src/components/FormItem/FormItem-test.js @@ -6,12 +6,19 @@ */ import React from 'react'; -import { shallow } from 'enzyme'; +import { render } from '@testing-library/react'; import FormItem from '../FormItem'; describe('FormItem', () => { - it('should render', () => { - const wrapper = shallow(); - expect(wrapper).toMatchSnapshot(); + it('should support a custom `className` prop on the outermost element', () => { + const { container } = render(); + expect(container.firstChild).toHaveClass('test'); + }); + + it('should spread extra props on the outermost element', () => { + const { container } = render( + + ); + expect(container.firstChild).toHaveAttribute('data-testid', 'test'); }); }); diff --git a/packages/react/src/components/FormItem/FormItem.js b/packages/react/src/components/FormItem/FormItem.js index e793533677b9..861e4bc69f0e 100644 --- a/packages/react/src/components/FormItem/FormItem.js +++ b/packages/react/src/components/FormItem/FormItem.js @@ -10,16 +10,16 @@ import React from 'react'; import classnames from 'classnames'; import { usePrefix } from '../../internal/usePrefix'; -const FormItem = ({ className, children, ...other }) => { +function FormItem({ className, children, ...rest }) { const prefix = usePrefix(); const classNames = classnames(`${prefix}--form-item`, className); return ( -
+
{children}
); -}; +} FormItem.propTypes = { /** diff --git a/packages/react/src/components/FormItem/__snapshots__/FormItem-test.js.snap b/packages/react/src/components/FormItem/__snapshots__/FormItem-test.js.snap deleted file mode 100644 index 68e320969f45..000000000000 --- a/packages/react/src/components/FormItem/__snapshots__/FormItem-test.js.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`FormItem should render 1`] = ` -
-`; diff --git a/packages/react/src/components/FormLabel/FormLabel-test.js b/packages/react/src/components/FormLabel/FormLabel-test.js index 72cba546e4d4..917297e32fc5 100644 --- a/packages/react/src/components/FormLabel/FormLabel-test.js +++ b/packages/react/src/components/FormLabel/FormLabel-test.js @@ -6,12 +6,24 @@ */ import React from 'react'; -import { shallow } from 'enzyme'; +import { render } from '@testing-library/react'; import FormLabel from '../FormLabel'; describe('FormLabel', () => { - it('should render', () => { - const wrapper = shallow(); - expect(wrapper).toMatchSnapshot(); + it('should support a custom `className` prop on the outermost element', () => { + const { container } = render(); + expect(container.firstChild).toHaveClass('test'); + }); + + it('should spread extra props on the outermost element', () => { + const { container } = render( + + ); + expect(container.firstChild).toHaveAttribute('data-testid', 'test'); + }); + + it('should support a unique id prop on the outermost element', () => { + const { container } = render(); + expect(container.firstChild).toHaveProperty('htmlFor', 'test-1'); }); }); diff --git a/packages/react/src/components/FormLabel/__snapshots__/FormLabel-test.js.snap b/packages/react/src/components/FormLabel/__snapshots__/FormLabel-test.js.snap deleted file mode 100644 index d3609ec8fbf7..000000000000 --- a/packages/react/src/components/FormLabel/__snapshots__/FormLabel-test.js.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`FormLabel should render 1`] = ` -