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();
});
});