Skip to content

Commit 273e559

Browse files
committed
main 🧊 add hook tests
1 parent acad095 commit 273e559

File tree

23 files changed

+1691
-339
lines changed

23 files changed

+1691
-339
lines changed

‎packages/core/src/bundle/hooks/useEventSource/useEventSource.js‎

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,28 @@ import { getRetry } from '@/utils/helpers';
1414
* @returns {UseEventSourceReturn<Data>} The EventSource state and controls
1515
*
1616
* @example
17-
* const { instance, data, isConnecting, isOpen, isError, close, open } = useEventSource('url', ['message']);
17+
* const { instance, data, connecting, opened, isError, close, open } = useEventSource('url', ['message']);
1818
*/
1919
export const useEventSource = (url, events = [], options = {}) => {
2020
const [isConnecting, setIsConnecting] = useState(false);
21-
const [isOpen, setIsOpen] = useState(false);
21+
const [opened, setOpened] = useState(false);
2222
const [isError, setIsError] = useState(false);
2323
const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);
2424
const [error, setError] = useState(undefined);
2525
const [data, setData] = useState(options?.placeholderData);
2626
const eventSourceRef = useRef(undefined);
2727
const immediately = options.immediately ?? true;
28+
const onEventRef = useRef((event) => setData(event.data));
2829
const close = () => {
2930
if (!eventSourceRef.current) return;
30-
eventSourceRef.current.close();
31-
eventSourceRef.current = undefined;
32-
setIsOpen(false);
31+
setOpened(false);
3332
setIsConnecting(false);
3433
setIsError(false);
34+
events.forEach((eventName) =>
35+
eventSourceRef.current.removeEventListener(eventName, onEventRef.current)
36+
);
37+
eventSourceRef.current.close();
38+
eventSourceRef.current = undefined;
3539
};
3640
const open = () => {
3741
close();
@@ -41,13 +45,13 @@ export const useEventSource = (url, events = [], options = {}) => {
4145
eventSourceRef.current = eventSource;
4246
setIsConnecting(true);
4347
eventSource.onopen = () => {
44-
setIsOpen(true);
48+
setOpened(true);
4549
setIsConnecting(false);
4650
setError(undefined);
4751
options?.onOpen?.();
4852
};
4953
eventSource.onerror = (event) => {
50-
setIsOpen(false);
54+
setOpened(false);
5155
setIsConnecting(false);
5256
setIsError(true);
5357
setError(event);
@@ -62,6 +66,7 @@ export const useEventSource = (url, events = [], options = {}) => {
6266
setTimeout(open, retryDelay);
6367
return;
6468
}
69+
return open();
6570
}
6671
retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;
6772
};
@@ -70,11 +75,7 @@ export const useEventSource = (url, events = [], options = {}) => {
7075
setData(data);
7176
options?.onMessage?.(event);
7277
};
73-
events.forEach((eventName) => {
74-
eventSource.addEventListener(eventName, (event) => {
75-
setData(event.data);
76-
});
77-
});
78+
events.forEach((eventName) => eventSource.addEventListener(eventName, onEventRef.current));
7879
};
7980
useEffect(() => {
8081
if (!immediately) return;
@@ -88,7 +89,7 @@ export const useEventSource = (url, events = [], options = {}) => {
8889
data,
8990
error,
9091
isConnecting,
91-
isOpen,
92+
opened,
9293
isError,
9394
close,
9495
open

‎packages/core/src/bundle/hooks/useField/useField.js‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ export const useField = (params) => {
118118
setValue,
119119
reset,
120120
watch,
121-
focus
121+
focus,
122+
ref: inputRef
122123
};
123124
};

‎packages/core/src/bundle/hooks/useLongPress/useLongPress.js‎

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,19 @@ export const useLongPress = (...params) => {
5757
} else if (isPressedRef.current) {
5858
internalOptionsRef.current?.onCancel?.(event);
5959
}
60+
isPressedRef.current = false;
61+
if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);
6062
return false;
6163
});
62-
isPressedRef.current = false;
63-
if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);
6464
};
6565
element.addEventListener('mousedown', onStart);
66-
element.addEventListener('touchstart', onStart);
67-
element.addEventListener('mouseup', onCancel);
68-
element.addEventListener('touchend', onCancel);
6966
window.addEventListener('mouseup', onCancel);
67+
element.addEventListener('touchstart', onStart);
7068
window.addEventListener('touchend', onCancel);
7169
return () => {
7270
element.removeEventListener('mousedown', onStart);
73-
element.removeEventListener('touchstart', onStart);
74-
element.removeEventListener('mouseup', onCancel);
75-
element.removeEventListener('touchend', onCancel);
7671
window.removeEventListener('mouseup', onCancel);
72+
element.removeEventListener('touchstart', onStart);
7773
window.removeEventListener('touchend', onCancel);
7874
if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);
7975
};

‎packages/core/src/helpers/createContext/createContext.demo.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const App = () => {
1717
});
1818

1919
return (
20-
<div className='rounded-lg p-4 shadow-md'>
20+
<div className='rounded-lg p-4'>
2121
<div className='mb-6'>
2222
<h3 className='font-semibold'>Current Profile:</h3>
2323
<div>

‎packages/core/src/helpers/createEventEmitter/createEventEmitter.demo.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const Demo = () => {
3535
});
3636

3737
return (
38-
<div className='rounded-lg p-4 shadow-md'>
38+
<div className='rounded-lg p-4'>
3939
<div className='mb-6'>
4040
<h3 className='font-semibold'>Current Profile:</h3>
4141
<NameFieldInfo />

‎packages/core/src/helpers/createStore/createStore.demo.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const Demo = () => {
6161
});
6262

6363
return (
64-
<div className='rounded-lg p-4 shadow-md'>
64+
<div className='rounded-lg p-4'>
6565
<div className='mb-6'>
6666
<h3 className='font-semibold'>Current Profile:</h3>
6767
<NameFieldInfo />

‎packages/core/src/hooks/useBattery/useBattery.test.ts‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@ import { createTrigger, renderHookServer } from '@/tests';
55
import { useBattery } from './useBattery';
66

77
const trigger = createTrigger<string, () => void>();
8+
const mockAddEventListener = vi.fn();
89
const mockRemoveEventListener = vi.fn();
910
const mockBatteryManager = {
1011
charging: true,
1112
chargingTime: 0,
1213
dischargingTime: 5,
1314
level: 1,
14-
addEventListener: (type: string, callback: () => void) => trigger.add(type, callback),
15+
addEventListener: (type: string, callback: () => void) => {
16+
mockAddEventListener(type, callback);
17+
trigger.add(type, callback);
18+
},
1519
removeEventListener: (type: string, callback: () => void) => {
1620
mockRemoveEventListener(type, callback);
1721
if (trigger.get(type) === callback) trigger.delete(type);

‎packages/core/src/hooks/useBroadcastChannel/useBroadcastChannel.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class MockBroadcastChannel {
1818
postMessage = mockBroadcastChannelPostMessage;
1919
close = mockBroadcastChannelClose;
2020
addEventListener = (type: string, callback: (event: MessageEvent) => void) => {
21-
mockAddEventListener();
21+
mockAddEventListener(type, callback);
2222
trigger.add(type, callback);
2323
};
2424
removeEventListener = (type: string, callback: (event: MessageEvent) => void) => {

0 commit comments

Comments
 (0)