Skip to content

Commit c12270e

Browse files
committed
🧪 Add a shared utility to cache and test the received ResizeObserverCallback
Closes Hacker0x01#5466
1 parent 7ced707 commit c12270e

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

‎src/test/test_utils.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,27 @@ export const safeQuerySelectorAll = <T extends HTMLElement = HTMLElement>(
123123
return elements;
124124
};
125125

126+
let _resizeObserverCallbackFn: ResizeObserverCallback | null;
127+
128+
export const getResizeObserverCallback = () => _resizeObserverCallbackFn;
129+
126130
export const setupMockResizeObserver = () => {
127131
const mockObserve = jest.fn();
128132
const mockDisconnect = jest.fn();
129133
const mockUnobserve = jest.fn();
130134

131-
const ResizeObserverMock = jest.fn(() => ({
132-
observe: mockObserve,
133-
disconnect: mockDisconnect,
134-
unobserve: jest.fn(),
135-
}));
135+
const ResizeObserverMock = jest.fn((fn) => {
136+
_resizeObserverCallbackFn = fn;
137+
138+
return {
139+
observe: mockObserve,
140+
disconnect: () => {
141+
_resizeObserverCallbackFn = null;
142+
mockDisconnect();
143+
},
144+
unobserve: jest.fn(),
145+
};
146+
});
136147

137148
global.ResizeObserver = ResizeObserverMock;
138149

‎src/test/timepicker_test.test.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import DatePicker from "../index";
66

77
import {
88
getKey,
9+
getResizeObserverCallback,
910
SafeElementWrapper,
1011
safeQuerySelector,
1112
safeQuerySelectorAll,
@@ -49,6 +50,14 @@ describe("TimePicker", () => {
4950
);
5051
await waitFor(() => {
5152
expect(mockObserve).toHaveBeenCalledTimes(1);
53+
54+
const resizeObserverCallback = getResizeObserverCallback();
55+
const mockObserveElement = mockObserve.mock.calls[0][0];
56+
expect(typeof resizeObserverCallback).toBe("function");
57+
58+
if (resizeObserverCallback) {
59+
resizeObserverCallback([], mockObserveElement);
60+
}
5261
});
5362
});
5463

@@ -65,6 +74,8 @@ describe("TimePicker", () => {
6574
component.unmount();
6675
await waitFor(() => {
6776
expect(mockDisconnect).toHaveBeenCalledTimes(1);
77+
const resizeObserverCallback = getResizeObserverCallback();
78+
expect(resizeObserverCallback).toBe(null);
6879
});
6980
});
7081
});

0 commit comments

Comments
 (0)