import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import Button, { ButtonProps } from '../../components/button/button'; const defaultProps: ButtonProps = { onClick: jest.fn(), }; const testProps: ButtonProps = { btnType: 'primary', size: 'large', className: 'klass', }; const disabledProps: ButtonProps = { disabled: true, onClick: jest.fn(), }; describe('test Button component', () => { it('should render the correct default button', () => { const wrapper = render(); const element = wrapper.getByText('Nice'); expect(element).toBeInTheDocument(); expect(element.tagName).toEqual('BUTTON'); expect(element).toHaveClass('metu-btn metu-btn-default'); fireEvent.click(element); expect(defaultProps.onClick).toHaveBeenCalled(); }); it('should render the correct component based on different props', () => { const wrapper = render(); const element = wrapper.getByText('Nice'); expect(element).toBeInTheDocument(); expect(element).toHaveClass('metu-btn-primary metu-btn-large klass'); }); it('should render a link when btnType equals link and href is provided', () => { const wrapper = render( ); const element = wrapper.getByText('Link'); expect(element).toBeInTheDocument(); expect(element.tagName).toEqual('A'); expect(element).toHaveClass('metu-btn metu-btn-link'); }); it('should render disabled button when disabled set to true', () => { const wrapper = render(); const element = wrapper.getByText('Nice'); expect(element).toBeInTheDocument(); expect(element.disabled).toBeTruthy(); fireEvent.click(element); expect(disabledProps.onClick).not.toHaveBeenCalled(); }); });