mirror of https://github.com/renovatebot/renovate
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
import { clone } from './clone';
|
|
|
|
describe('util/clone', () => {
|
|
test.each`
|
|
input | expected
|
|
${undefined} | ${undefined}
|
|
${null} | ${null}
|
|
${true} | ${true}
|
|
${false} | ${false}
|
|
${0} | ${0}
|
|
${1} | ${1}
|
|
${NaN} | ${NaN}
|
|
${Infinity} | ${Infinity}
|
|
${-Infinity} | ${-Infinity}
|
|
${''} | ${''}
|
|
${'string'} | ${'string'}
|
|
${[]} | ${[]}
|
|
${[1, 2, 3]} | ${[1, 2, 3]}
|
|
${{}} | ${{}}
|
|
${{ a: 1 }} | ${{ a: 1 }}
|
|
`('returns $expected when input is $input', ({ input, expected }) => {
|
|
const res = clone(input);
|
|
expect(res).toStrictEqual(expected);
|
|
});
|
|
|
|
it('maintains same order', () => {
|
|
const obj: any = {
|
|
b: 'foo',
|
|
a: 'bar',
|
|
c: 'baz',
|
|
};
|
|
|
|
const res = clone(obj);
|
|
expect(Object.entries(res)).toMatchObject([
|
|
['b', 'foo'],
|
|
['a', 'bar'],
|
|
['c', 'baz'],
|
|
]);
|
|
});
|
|
|
|
it('assigns "[Circular]" to circular references', () => {
|
|
const obj: any = {
|
|
name: 'object',
|
|
type: 'object',
|
|
isObject: true,
|
|
};
|
|
obj.circular = obj;
|
|
|
|
expect(clone(obj)).toMatchObject({
|
|
circular: '[Circular]',
|
|
isObject: true,
|
|
name: 'object',
|
|
type: 'object',
|
|
});
|
|
});
|
|
});
|