import { fireEvent, render, screen } from '@testing-library/react';
import { useRef } from 'react';
import { useOnClickOutside } from './useOnClickOutside';
function TestComponent(props: { outsideClickHandler: () => void }) {
const divRef = useRef(null);
useOnClickOutside([divRef], props.outsideClickHandler);
return (
);
}
test('should not call the callback when clicking inside', () => {
let mockCallbackCallCount = 0;
const mockCallback = () => mockCallbackCallCount++;
render();
const insideDiv = screen.getByTestId('inside');
// Simulate a click inside the div
fireEvent.click(insideDiv);
expect(mockCallbackCallCount).toBe(0);
});
test('should call the callback when clicking outside', () => {
let mockCallbackCallCount = 0;
const mockCallback = () => mockCallbackCallCount++;
render();
const outsideDiv = screen.getByTestId('outside');
fireEvent.click(outsideDiv);
expect(mockCallbackCallCount).toBe(1);
});