import { fireEvent, render, screen } from '@testing-library/react';
import { type Mock, describe, expect, it, vi } from 'vitest';
import { useSwapContext } from './SwapProvider';
import { SwapToggleButton } from './SwapToggleButton';
vi.mock('./SwapProvider', () => ({
useSwapContext: vi.fn(),
}));
describe('SwapToggleButton', () => {
it('should call handleToggle when clicked', () => {
const handleToggleMock = vi.fn();
(useSwapContext as Mock).mockReturnValue({
handleToggle: handleToggleMock,
});
render();
const button = screen.getByTestId('SwapTokensButton');
fireEvent.click(button);
expect(handleToggleMock).toHaveBeenCalled();
});
it('should render with correct classes', () => {
render();
const button = screen.getByTestId('SwapTokensButton');
expect(button).toHaveClass('custom-class');
});
it('should render with custom render prop', () => {
const handleToggleMock = vi.fn();
(useSwapContext as Mock).mockReturnValue({
handleToggle: handleToggleMock,
});
const screen = render(
(
)}
/>,
);
expect(screen.getByText('Custom Render')).toBeDefined();
fireEvent.click(screen.getByText('Toggle'));
expect(handleToggleMock).toHaveBeenCalled();
});
});