UNPKG

use-push-router

Version:

A custom hook that simplifies modifying the search params in Next.js

32 lines 1.58 kB
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