use-push-router
Version:
A custom hook that simplifies modifying the search params in Next.js
34 lines • 1.52 kB
JavaScript
import { urlSearchParamsToObject } from './url-search-params-to-object';
import { describe, it, expect } from 'vitest';
describe('urlSearchParamsToObject', () => {
it('should convert single key-value pair', () => {
const params = new URLSearchParams('foo=bar');
expect(urlSearchParamsToObject(params)).toEqual({ foo: 'bar' });
});
it('should convert multiple key-value pairs', () => {
const params = new URLSearchParams('foo=bar&baz=qux');
expect(urlSearchParamsToObject(params)).toEqual({ foo: 'bar', baz: 'qux' });
});
it('should handle repeated keys as arrays', () => {
const params = new URLSearchParams('foo=bar&foo=baz&foo=qux');
expect(urlSearchParamsToObject(params)).toEqual({
foo: ['bar', 'baz', 'qux'],
});
});
it('should handle empty search params', () => {
const params = new URLSearchParams('');
expect(urlSearchParamsToObject(params)).toEqual({});
});
it('should handle special characters', () => {
const params = new URLSearchParams('f%20o%20o=b%40r&baz=qu%3Dx');
expect(urlSearchParamsToObject(params)).toEqual({
'f o o': 'b@r',
baz: 'qu=x',
});
});
it('should handle mix of single and repeated keys', () => {
const params = new URLSearchParams('a=1&a=2&b=3');
expect(urlSearchParamsToObject(params)).toEqual({ a: ['1', '2'], b: '3' });
});
});
//# sourceMappingURL=url-search-params-to-object.test.js.map