Skip to content

Commit db0dbdb

Browse files
committed
main 🧊 add test for use raf, use storage
1 parent aad239a commit db0dbdb

21 files changed

Lines changed: 436 additions & 30 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ it('Should use const on server side', () => {
1616
expect(result.current).toBe('value');
1717
});
1818

19-
it('should return the same constant value', () => {
19+
it('Should return the same constant value', () => {
2020
const { result, rerender } = renderHook(() => useConst('value'));
2121
expect(result.current).toBe('value');
2222

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ beforeEach(vi.useFakeTimers);
99

1010
afterEach(() => {
1111
vi.useRealTimers();
12-
vi.restoreAllMocks();
1312
});
1413

1514
it('Should use debounce callback', () => {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ beforeEach(vi.useFakeTimers);
99

1010
afterEach(() => {
1111
vi.useRealTimers();
12-
vi.restoreAllMocks();
1312
});
1413

1514
it('Should use debounce effect', () => {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ beforeEach(vi.useFakeTimers);
77

88
afterEach(() => {
99
vi.useRealTimers();
10-
vi.restoreAllMocks();
1110
});
1211

1312
it('Should use debounce value', () => {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ beforeEach(vi.useFakeTimers);
77

88
afterEach(() => {
99
vi.useRealTimers();
10-
vi.restoreAllMocks();
1110
});
1211

1312
it('Should use debounce value', () => {

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,34 @@ targets.forEach((target) => {
221221
expect(mockBlur).toHaveBeenCalledOnce();
222222
});
223223

224+
it('Should handle target changes', () => {
225+
const addEventListenerSpy = vi.spyOn(element, 'addEventListener');
226+
const removeEventListenerSpy = vi.spyOn(element, 'removeEventListener');
227+
228+
const { result, rerender } = renderHook(
229+
(target) => {
230+
if (target)
231+
return useFocus(target) as UseFocusReturn & {
232+
ref: StateRef<HTMLDivElement>;
233+
};
234+
return useFocus<HTMLDivElement>();
235+
},
236+
{
237+
initialProps: target
238+
}
239+
);
240+
241+
if (!target) act(() => result.current.ref(element));
242+
243+
expect(addEventListenerSpy).toHaveBeenCalledTimes(2);
244+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(0);
245+
246+
rerender({ current: document.getElementById('target') });
247+
248+
expect(addEventListenerSpy).toHaveBeenCalledTimes(4);
249+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);
250+
});
251+
224252
it('Should cleanup event listeners on unmount', () => {
225253
const removeEventListenerSpy = vi.spyOn(element, 'removeEventListener');
226254

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,34 @@ targets.forEach((target) => {
164164
expect(callback).toHaveBeenCalledOnce();
165165
expect(callback.mock.calls[0][0].key).toBe('Enter');
166166
});
167+
168+
it('Should handle target changes', () => {
169+
const addEventListenerSpy = vi.spyOn(element, 'addEventListener');
170+
const removeEventListenerSpy = vi.spyOn(element, 'removeEventListener');
171+
172+
const { result, rerender } = renderHook(
173+
(target) => {
174+
if (target)
175+
return useKeyboard(target, () => {}) as unknown as UseKeyboardReturn & {
176+
ref: StateRef<HTMLDivElement>;
177+
};
178+
return useKeyboard<HTMLDivElement>(() => {});
179+
},
180+
{
181+
initialProps: target
182+
}
183+
);
184+
185+
if (!target) act(() => result.current.ref(element));
186+
187+
expect(addEventListenerSpy).toHaveBeenCalledTimes(2);
188+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(0);
189+
190+
rerender({ current: document.getElementById('target') });
191+
192+
expect(addEventListenerSpy).toHaveBeenCalledTimes(4);
193+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);
194+
});
167195
});
168196

169197
it('Should cleanup on unmount', () => {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import { renderHookServer } from '@/tests';
44

55
import { useLocalStorage } from './useLocalStorage';
66

7-
it('Should use session storage', () => {
7+
it('Should use local storage', () => {
88
const { result } = renderHook(() => useLocalStorage('key', 'initialValue'));
99

1010
expect(result.current.value).toBe('initialValue');
1111
expect(result.current.set).toBeTypeOf('function');
1212
expect(result.current.remove).toBeTypeOf('function');
1313
});
1414

15-
it('should use session storage on server side', () => {
15+
it('Should use local storage on server side', () => {
1616
const { result } = renderHookServer(() => useLocalStorage('key', 'initialValue'));
1717

1818
expect(result.current.value).toBe('initialValue');

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ beforeEach(() => {
99

1010
afterEach(() => {
1111
vi.useRealTimers();
12-
vi.restoreAllMocks();
1312
});
1413

1514
it('Should lock callback', () => {

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,34 @@ targets.forEach((target) => {
123123
expect(result.current.snapshot.y).toBe(40);
124124
});
125125

126+
it('Should handle target changes', () => {
127+
const addEventListenerSpy = vi.spyOn(document, 'addEventListener');
128+
const removeEventListenerSpy = vi.spyOn(document, 'removeEventListener');
129+
130+
const { result, rerender } = renderHook(
131+
(target) => {
132+
if (target)
133+
return useMouse(target) as unknown as {
134+
ref: StateRef<HTMLDivElement>;
135+
} & UseMouseReturn;
136+
return useMouse<HTMLDivElement>();
137+
},
138+
{
139+
initialProps: target
140+
}
141+
);
142+
143+
if (!target) act(() => result.current.ref(element));
144+
145+
const initialAddEventListenerCalls = addEventListenerSpy.mock.calls.length;
146+
const initialRemoveEventListenerCalls = removeEventListenerSpy.mock.calls.length;
147+
148+
rerender({ current: document.getElementById('target') });
149+
150+
expect(addEventListenerSpy).toHaveBeenCalledTimes(initialAddEventListenerCalls + 2);
151+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(initialRemoveEventListenerCalls + 2);
152+
});
153+
126154
it('Should cleanup on unmount', () => {
127155
const removeEventListenerSpy = vi.spyOn(document, 'removeEventListener');
128156

0 commit comments

Comments
 (0)