mirror of
https://github.com/streamich/react-use.git
synced 2026-01-25 14:17:16 +00:00
test: 💍 add useSearchParam tests
This commit is contained in:
parent
b7ad911c04
commit
481e807e39
51
src/__tests__/useSearchParam.test.ts
Normal file
51
src/__tests__/useSearchParam.test.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import { act, renderHook } from '@testing-library/react-hooks';
|
||||
import useSearchParam from '../useSearchParam';
|
||||
|
||||
(global as any).window = Object.create(window);
|
||||
const location = {
|
||||
search: 'foo=bar&baz=quux',
|
||||
};
|
||||
Object.defineProperty(window, 'location', {
|
||||
value: location,
|
||||
});
|
||||
|
||||
it('returns current location.search value', () => {
|
||||
location.search = 'foo=bar&baz=quux';
|
||||
|
||||
const { result } = renderHook(() => useSearchParam('foo'));
|
||||
|
||||
expect(result.current).toBe('bar');
|
||||
});
|
||||
|
||||
it('returns null if search param not found', () => {
|
||||
location.search = 'foo=bar&baz=quux';
|
||||
|
||||
const { result } = renderHook(() => useSearchParam('foo2'));
|
||||
|
||||
expect(result.current).toBe(null);
|
||||
});
|
||||
|
||||
it('tracks the latest search param value', () => {
|
||||
location.search = 'foo=bar&baz=quux';
|
||||
|
||||
let callback;
|
||||
const window$addEventListener = window.addEventListener;
|
||||
window.addEventListener = (event, cb) => {
|
||||
if (event === 'pushstate') {
|
||||
callback = cb;
|
||||
}
|
||||
};
|
||||
|
||||
const { result } = renderHook(() => useSearchParam('baz'));
|
||||
|
||||
expect(result.current).toBe('quux');
|
||||
|
||||
act(() => {
|
||||
location.search = 'foo=1&baz=2';
|
||||
callback();
|
||||
});
|
||||
|
||||
expect(result.current).toBe('2');
|
||||
|
||||
window.addEventListener = window$addEventListener;
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user