Skip to content

Commit 7387143

Browse files
authored
Add tests for useClickOutside (#6815)
1 parent 081e3f7 commit 7387143

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { render, fireEvent, renderHook } from '@testing-library/react';
2+
import { useClickOutside } from '../useClickOutside';
3+
4+
describe('useClickOutside', () => {
5+
it('should call callback when clicked outside', () => {
6+
const mockCallback = jest.fn();
7+
const { result } = renderHook(() => useClickOutside(mockCallback));
8+
9+
render(<div ref={result.current} />);
10+
11+
// Simulate click outside
12+
fireEvent.click(document);
13+
14+
expect(mockCallback).toHaveBeenCalled();
15+
});
16+
17+
it('should not call callback when clicked inside', () => {
18+
const mockCallback = jest.fn();
19+
const { result } = renderHook(() => useClickOutside(mockCallback));
20+
21+
const { getByTestId } = render(
22+
<div data-testid="inside" ref={result.current} />
23+
);
24+
25+
// Simulate click inside
26+
fireEvent.click(getByTestId('inside'));
27+
28+
expect(mockCallback).not.toHaveBeenCalled();
29+
});
30+
31+
it('should clean up event listener on unmount', () => {
32+
const mockCallback = jest.fn();
33+
const { unmount } = renderHook(() => useClickOutside(mockCallback));
34+
35+
unmount();
36+
37+
// Simulate click after unmount
38+
fireEvent.click(document);
39+
40+
expect(mockCallback).not.toHaveBeenCalled();
41+
});
42+
});

0 commit comments

Comments
 (0)