/* eslint-disable jest/require-top-level-describe */ import { render } from '@testing-library/react'; import React from 'react'; import { IconColor } from '../../../helpers/constants/design-system'; import { IconName } from '..'; import { ButtonIconSize } from './button-icon.types'; import { ButtonIcon } from './button-icon'; describe('ButtonIcon', () => { it('should render button element correctly', () => { const { getByTestId, container } = render( , ); expect(container.querySelector('button')).toBeDefined(); expect(getByTestId('button-icon')).toHaveClass('mm-button-icon'); expect(container).toMatchSnapshot(); }); it('should render anchor element correctly', () => { const { getByTestId, container } = render( , ); expect(getByTestId('button-icon')).toHaveClass('mm-button-icon'); const anchor = container.getElementsByTagName('a').length; expect(anchor).toBe(1); }); it('should render anchor element correctly using href', () => { const { getByTestId, getByRole } = render( , ); expect(getByTestId('button-icon')).toHaveClass('mm-button-icon'); expect(getByRole('link')).toBeDefined(); }); it('should render with different size classes', () => { const { getByTestId } = render( <> , ); expect(getByTestId(ButtonIconSize.Sm)).toHaveClass( `mm-button-icon--size-${ButtonIconSize.Sm}`, ); expect(getByTestId(ButtonIconSize.Md)).toHaveClass( `mm-button-icon--size-${ButtonIconSize.Md}`, ); expect(getByTestId(ButtonIconSize.Lg)).toHaveClass( `mm-button-icon--size-${ButtonIconSize.Lg}`, ); }); it('should render with different colors', () => { const { getByTestId } = render( <> , ); expect(getByTestId(IconColor.iconDefault)).toHaveClass( `box--color-${IconColor.iconDefault}`, ); expect(getByTestId(IconColor.errorDefault)).toHaveClass( `box--color-${IconColor.errorDefault}`, ); }); it('should render with added classname', () => { const { getByTestId } = render( , ); expect(getByTestId('classname')).toHaveClass('mm-button-icon--test'); }); it('should render with different button states', () => { const { getByTestId } = render( <> , ); expect(getByTestId('disabled')).toHaveClass(`mm-button-icon--disabled`); expect(getByTestId('disabled')).toBeDisabled(); }); it('should render with icon', () => { const { getByTestId } = render( , ); expect(getByTestId('button-icon')).toBeDefined(); }); it('should render with aria-label', () => { const { getByLabelText } = render( , ); expect(getByLabelText('add')).toBeDefined(); }); });