Files
klz-cables.com/.pnpm-store/v10/files/fe/0c7d1130624678275b68f3b7fb19c4262804198531346a9d2ad10f9b0189691529a0a40d313e50b71b22d6b6013b2ff10069dbc7e6160ec02a2625d3a41016
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

418 lines
10 KiB
Plaintext

const { serialize } = require('.');
const formDataAppend = global.FormData.prototype.append;
beforeEach(() => {
global.FormData.prototype.append = jest.fn(formDataAppend);
});
test('undefined', () => {
const formData = serialize({
foo: undefined,
});
expect(formData.append).not.toHaveBeenCalled();
expect(formData.get('foo')).toBe(null);
});
test('null', () => {
const formData = serialize({
foo: null,
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', '');
expect(formData.get('foo')).toBe('');
});
test('null with nullsAsUndefineds option', () => {
const formData = serialize(
{
foo: null,
},
{
nullsAsUndefineds: true,
},
);
expect(formData.append).not.toHaveBeenCalled();
expect(formData.get('foo')).toBe(null);
});
test('boolean', () => {
const formData = serialize({
foo: true,
bar: false,
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', true);
expect(formData.append).toHaveBeenNthCalledWith(2, 'bar', false);
expect(formData.get('foo')).toBe('true');
expect(formData.get('bar')).toBe('false');
});
test('boolean with booleansAsIntegers option', () => {
const formData = serialize(
{
foo: true,
bar: false,
},
{
booleansAsIntegers: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', 1);
expect(formData.append).toHaveBeenNthCalledWith(2, 'bar', 0);
expect(formData.get('foo')).toBe('1');
expect(formData.get('bar')).toBe('0');
});
test('integer', () => {
const formData = serialize({
foo: 1,
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', 1);
expect(formData.get('foo')).toBe('1');
});
test('float', () => {
const formData = serialize({
foo: 1.01,
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', 1.01);
expect(formData.get('foo')).toBe('1.01');
});
test('string', () => {
const formData = serialize({
foo: 'bar',
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', 'bar');
expect(formData.get('foo')).toBe('bar');
});
test('empty string', () => {
const formData = serialize({
foo: '',
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', '');
expect(formData.get('foo')).toBe('');
});
test('Object', () => {
const formData = serialize({
foo: {
bar: 'baz',
qux: 'quux',
},
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[bar]', 'baz');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[qux]', 'quux');
expect(formData.get('foo[bar]')).toBe('baz');
expect(formData.get('foo[qux]')).toBe('quux');
});
test('empty Object', () => {
const formData = serialize({
foo: {},
});
expect(formData.append).not.toHaveBeenCalled();
expect(formData.get('foo')).toBe(null);
});
test('Object in Array', () => {
const formData = serialize({
foo: [
{
bar: 'baz',
},
{
qux: 'quux',
},
],
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[][bar]', 'baz');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[][qux]', 'quux');
expect(formData.get('foo[][bar]')).toBe('baz');
expect(formData.get('foo[][qux]')).toBe('quux');
});
test('Object in Object', () => {
const formData = serialize({
foo: {
bar: {
baz: {
qux: 'quux',
},
},
},
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo[bar][baz][qux]', 'quux');
expect(formData.get('foo[bar][baz][qux]')).toBe('quux');
});
test('Object with dotsForObjectNotation option', () => {
const formData = serialize(
{
foo: {
bar: 'baz',
qux: [
{
quux: 'corge',
},
],
},
},
{
dotsForObjectNotation: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo.bar', 'baz');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo.qux[].quux', 'corge');
expect(formData.get('foo.bar')).toBe('baz');
expect(formData.get('foo.qux[].quux')).toBe('corge');
});
test('Array', () => {
const formData = serialize({
foo: ['bar', 'baz'],
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[]', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[]', 'baz');
expect(formData.getAll('foo[]')).toEqual(['bar', 'baz']);
});
test('Array with noAttributesWithArrayNotation option', () => {
const formData = serialize(
{
foo: ['bar', 'baz'],
},
{
noAttributesWithArrayNotation: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo', 'baz');
expect(formData.getAll('foo')).toEqual(['bar', 'baz']);
});
test('empty Array', () => {
const formData = serialize({
foo: [],
});
expect(formData.append).not.toHaveBeenCalled();
expect(formData.get('foo')).toBe(null);
});
test('Array in Array', () => {
const formData = serialize({
foo: [[['bar', 'baz']]],
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[][][]', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[][][]', 'baz');
expect(formData.getAll('foo[][][]')).toEqual(['bar', 'baz']);
});
test('Array in Array with noAttributesWithArrayNotation option', () => {
const formData = serialize(
{
foo: [[['bar', 'baz']]],
},
{
noAttributesWithArrayNotation: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo', 'baz');
expect(formData.getAll('foo')).toEqual(['bar', 'baz']);
});
test('Array in Object', () => {
const formData = serialize({
foo: {
bar: ['baz', 'qux'],
},
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[bar][]', 'baz');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[bar][]', 'qux');
expect(formData.getAll('foo[bar][]')).toEqual(['baz', 'qux']);
});
test('Array where key ends with "[]"', () => {
const formData = serialize({
'foo[]': ['bar', 'baz'],
});
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[]', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[]', 'baz');
expect(formData.getAll('foo[]')).toEqual(['bar', 'baz']);
});
test('Array with indices option', () => {
const formData = serialize(
{
foo: ['bar', 'baz'],
},
{
indices: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[0]', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo[1]', 'baz');
expect(formData.get('foo[0]')).toBe('bar');
expect(formData.get('foo[1]')).toBe('baz');
});
test('Array with indices and noAttributesWithArrayNotation option', () => {
const formData = serialize(
{
foo: ['bar', 'baz'],
},
{
indices: true,
noAttributesWithArrayNotation: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(2);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', 'bar');
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo', 'baz');
expect(formData.get('foo')).toBe('bar');
});
test('Array with allowEmptyArrays option', () => {
const formData = serialize(
{
foo: [],
},
{
allowEmptyArrays: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo[]', '');
expect(formData.get('foo[]')).toBe('');
});
test('Array with allowEmptyArrays and noAttributesWithArrayNotation options', () => {
const formData = serialize(
{
foo: [],
},
{
allowEmptyArrays: true,
noAttributesWithArrayNotation: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', '');
expect(formData.get('foo')).toBe('');
});
test('Date', () => {
const foo = new Date(2000, 0, 1, 1, 1, 1);
const formData = serialize({
foo,
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', foo.toISOString());
expect(formData.get('foo')).toBe(foo.toISOString());
});
test('File', () => {
const foo = new File([], '');
const formData = serialize({
foo,
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', foo);
expect(formData.get('foo')).toBe(foo);
});
test('File with noFilesWithArrayNotation option', () => {
const bar = new File([], '');
const baz = new File([], '');
const foo = [bar, baz, 'qux'];
const formData = serialize(
{
foo,
},
{
noFilesWithArrayNotation: true,
},
);
expect(formData.append).toHaveBeenCalledTimes(3);
expect(formData.append).toHaveBeenNthCalledWith(1, 'foo', bar);
expect(formData.append).toHaveBeenNthCalledWith(2, 'foo', baz);
expect(formData.append).toHaveBeenNthCalledWith(3, 'foo[]', 'qux');
expect(formData.getAll('foo')).toEqual([bar, baz]);
expect(formData.getAll('foo[]')).toEqual(['qux']);
});
test('Blob', () => {
const foo = new Blob([]);
const formData = serialize({
foo,
});
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', foo);
expect(formData.get('foo')).toEqual(new File([], ''));
});
test('React Native Blob', () => {
global.FormData.prototype.getParts = () => {};
const foo = {
uri: 'content://...',
};
const formData = serialize({
foo,
});
delete global.FormData.prototype.getParts;
expect(formData.append).toHaveBeenCalledTimes(1);
expect(formData.append).toHaveBeenCalledWith('foo', foo);
expect(formData.get('foo')).toBe('[object Object]');
});