use-push-router
Version:
A custom hook that simplifies modifying the search params in Next.js
61 lines • 1.75 kB
JavaScript
import { test, expect } from 'vitest';
import { updateSearchParams } from './update-search-params';
import { urlSearchParamsToObject } from './url-search-params-to-object';
test('updateSearchParams > add', () => {
const searchParams = new URLSearchParams({
foo: 'bar',
baz: 'qux',
});
const update = updateSearchParams(searchParams);
const newSearchParams = update({
add: {
foo: 'qux',
baz: ['quux', 'quuz'],
qux: 'quux',
quuz: ['bar'],
},
});
const expectedParams = {
foo: ['bar', 'qux'],
baz: ['qux', 'quux', 'quuz'],
qux: 'quux',
quuz: 'bar',
};
expect(urlSearchParamsToObject(newSearchParams)).toEqual(expectedParams);
});
test('updateSearchParams > remove', () => {
const searchParams = new URLSearchParams({
foo: 'bar',
baz: 'qux',
});
const update = updateSearchParams(searchParams);
const newSearchParams = update({
remove: {
foo: 'bar',
baz: ['qux'],
qux: undefined,
},
});
expect(newSearchParams.toString()).toBe('');
});
test('updateSearchParams > set', () => {
const searchParams = new URLSearchParams({
foo: 'bar',
baz: 'qux',
});
const update = updateSearchParams(searchParams);
const newSearchParams = update({
set: {
foo: 'qux',
baz: ['quux', 'quuz'],
qux: 'quux',
},
});
const expectedParams = {
foo: 'qux',
baz: ['quux', 'quuz'],
qux: 'quux',
};
expect(urlSearchParamsToObject(newSearchParams)).toEqual(expectedParams);
});
//# sourceMappingURL=update-search-params.test.js.map