use-push-router
Version:
A custom hook that simplifies modifying the search params in Next.js
32 lines • 1.58 kB
JavaScript
import { vi, describe, it, expect } from 'vitest';
import { renderHook } from '@testing-library/react';
vi.mock('next/navigation', () => ({
useSearchParams: () => new URLSearchParams([['foo', 'bar']]),
}));
import { useModifiableSearchParams } from './use-modifiable-search-params';
describe('useModifiableSearchParams', () => {
it('should return searchParams and updateSearchParams', () => {
const { result } = renderHook(() => useModifiableSearchParams());
expect(result.current.searchParams).toBeInstanceOf(URLSearchParams);
expect(typeof result.current.updateSearchParams).toBe('function');
});
it('updateSearchParams should add params', () => {
const { result } = renderHook(() => useModifiableSearchParams());
const updated = result.current.updateSearchParams({ add: { baz: 'qux' } });
expect(updated.get('foo')).toBe('bar');
expect(updated.get('baz')).toBe('qux');
});
it('updateSearchParams should remove params', () => {
const { result } = renderHook(() => useModifiableSearchParams());
const updated = result.current.updateSearchParams({
remove: { foo: 'bar' },
});
expect(updated.get('foo')).toBeNull();
});
it('updateSearchParams should set params', () => {
const { result } = renderHook(() => useModifiableSearchParams());
const updated = result.current.updateSearchParams({ set: { foo: 'baz' } });
expect(updated.get('foo')).toBe('baz');
});
});
//# sourceMappingURL=use-modifiable-search-params.test.js.map