Skip to content

Commit e485c86

Browse files
authored
feat: Added support for null in useTableListener (#1227)
resolves #1228
1 parent f8c4ba3 commit e485c86

2 files changed

Lines changed: 50 additions & 2 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { renderHook } from '@testing-library/react-hooks';
2+
import { Evented } from '@deephaven/jsapi-types';
3+
import useTableListener from './useTableListener';
4+
5+
const eventName = 'mock.event';
6+
7+
const addEventListener = jest.fn();
8+
const handler = jest.fn();
9+
const unsubscribe = jest.fn();
10+
11+
const evented = ({
12+
addEventListener,
13+
} as unknown) as Evented;
14+
15+
beforeEach(() => {
16+
jest.clearAllMocks();
17+
addEventListener.mockReturnValue(unsubscribe);
18+
});
19+
20+
it('should register an event listener', () => {
21+
renderHook(() => useTableListener(evented, eventName, handler));
22+
expect(evented.addEventListener).toHaveBeenCalledWith(eventName, handler);
23+
});
24+
25+
it('should unsubscribe on unmount', () => {
26+
const { unmount } = renderHook(() =>
27+
useTableListener(evented, eventName, handler)
28+
);
29+
30+
expect(unsubscribe).not.toHaveBeenCalled();
31+
32+
unmount();
33+
34+
expect(unsubscribe).toHaveBeenCalled();
35+
});
36+
37+
it.each([null, undefined])(
38+
'should handle null or undefined: %s',
39+
nullOrUndefined => {
40+
const { unmount } = renderHook(() =>
41+
useTableListener(nullOrUndefined, eventName, handler)
42+
);
43+
44+
unmount();
45+
46+
expect(unsubscribe).not.toHaveBeenCalled();
47+
}
48+
);

packages/jsapi-components/src/useTableListener.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import Log from '@deephaven/log';
55
const log = Log.module('useTableListener');
66

77
export const useTableListener = (
8-
eventEmitter: Evented | undefined,
8+
eventEmitter: Evented | undefined | null,
99
eventName: string,
1010
callback: EventListener
1111
): void =>
1212
useEffect(
1313
function initEventEmitter() {
14-
if (eventEmitter === undefined) {
14+
if (eventEmitter == null) {
1515
log.debug2('Emitter undefined, skipping addEventListener', eventName);
1616
return;
1717
}

0 commit comments

Comments
 (0)