import * as React from 'react'; import { applyTheme } from 'bumbag/utils/applyTheme'; import { renderHook } from '@testing-library/react-hooks'; import { FieldWrapper } from '../FieldWrapper'; import { Input } from '../../Input'; import render from '../../utils/_tests/render'; describe('props', () => { it('should render correctly', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly with CSS props', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly with a description', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly with a hint', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly when isOptional is truthy', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly when isRequired is truthy', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly with a label', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); ['success', 'danger', 'warning'].forEach((state) => { it(`should render correctly for a ${state} state`, () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); }); }); describe('theming', () => { it('FieldWrapper.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { styles: { base: { backgroundColor: 'red' } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('FieldWrapper.Label.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { Label: { styles: { base: { backgroundColor: 'red' } } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('FieldWrapper.DescriptionText.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { DescriptionText: { styles: { base: { backgroundColor: 'red' } } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('FieldWrapper.HintText.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { HintText: { styles: { base: { backgroundColor: 'red' } } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('FieldWrapper.OptionalText.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { OptionalText: { styles: { base: { backgroundColor: 'red' } } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('FieldWrapper.RequiredText.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { RequiredText: { styles: { base: { backgroundColor: 'red' } } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('FieldWrapper.ValidationText.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { ValidationText: { styles: { base: { backgroundColor: 'red' } } } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); }); describe('overrides', () => { it('should render correctly', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); }); describe('applyTheme', () => { it('renders correctly', () => { const Custom = applyTheme(FieldWrapper, { styles: { base: { backgroundColor: 'red', }, }, defaultProps: { altitude: '100', padding: 'major-2', }, }); const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); }); describe('variants', () => { it('styles.base should render correctly', () => { const { container } = render( , { theme: { FieldWrapper: { variants: { test: { styles: { base: { backgroundColor: 'red' } } } }, }, }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for overrides', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for applyTheme', () => { const Card = applyTheme(FieldWrapper, { defaultProps: { altitude: '100', padding: 'major-2', }, variants: { test: { defaultProps: { color: 'red', }, }, }, }); const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); }); describe('modes', () => { it('should render correctly when colorMode is set globally', () => { const { container } = render( , { colorMode: 'test', theme: { FieldWrapper: { modes: { test: { styles: { base: { backgroundColor: 'red' } }, defaultProps: { color: 'primaryTint' }, }, }, }, }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('should render correctly when colorMode set as prop', () => { const { container } = render( , { theme: { FieldWrapper: { modes: { test: { styles: { base: { backgroundColor: 'red' } }, defaultProps: { color: 'primaryTint' }, }, }, }, }, } ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for overrides', () => { const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for applyTheme', () => { const Card = applyTheme(FieldWrapper, { defaultProps: { altitude: '100', padding: 'major-2', }, modes: { test: { styles: { base: { backgroundColor: 'red' } }, defaultProps: { color: 'primaryTint' }, }, }, }); const { container } = render( ); expect(container.firstChild).toMatchSnapshot(); }); }); describe('defaultProps', () => { it('should render correctly for color', () => { const { container } = render( , { theme: { FieldWrapper: { defaultProps: { color: 'primary' } } }, } ); expect(container.firstChild).toMatchSnapshot(); }); });