import React from 'react';
import { fireEvent, render } from '../../test-utils';
import '@testing-library/jest-dom';
import { SystemIcons, ToggleButton } from '../..';
import 'jest-styled-components';
describe('', () => {
it('Renders ToggleButton component', async () => {
const { container } = render( }} />);
expect(container.querySelector('[id="toggleBtn"]')).toBeTruthy();
});
it('Renders ToggleButton component in active state', async () => {
const { container } = render( }} />);
expect(container.querySelector('[id="toggleBtn"]')).toBeTruthy();
//check correct state class set
expect(container.querySelector('[id="toggleBtn"]')!.closest('div')).toHaveClass('active');
});
it('Renders ToggleButton component in state-change', async () => {
const { container } = render(
}} defaultState={{ icon: }} />,
);
expect(container.querySelector('[id="toggleBtn"]')).toBeTruthy();
//check correct state class set
expect(container.querySelector('[id="toggleBtn"]')!.closest('div')).toHaveClass('state-change');
});
it('Renders ToggleButton component in disabled state', async () => {
const { container } = render( }} />);
expect(container.querySelector('[id="toggleBtn"]')).toBeTruthy();
//check correct state class set
expect(container.querySelector('[id="toggleBtn"]')!.closest('div')).toHaveClass('disabled');
//check inner button is disabled
expect(container.querySelector('[id="toggleBtn"]') as HTMLButtonElement).toBeDisabled();
});
it('Check action for ToggleButton component', async () => {
//mock action callback
const handleChange = jest.fn();
const { container } = render(
}} defaultState={{ icon: }} />,
);
expect(container.querySelector('[id="toggleBtn"]')).toBeTruthy();
fireEvent.click(container.querySelector('[id="toggleBtn"]') as HTMLButtonElement);
//check callback called
expect(handleChange).toHaveBeenCalledTimes(1);
});
});