|
|
|
@ -8,48 +8,36 @@ describe('DeepMerge', () => { |
|
|
|
expect(deepMerge(null, null)).toEqual({}); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should correctly return when any of the inputs is null or undefined', () => { |
|
|
|
const differentTestValues = [10, false, '', 'test-string', { a: 1 }, [1, 2, 3], {}]; |
|
|
|
differentTestValues.forEach(val => { |
|
|
|
expect(deepMerge(undefined, val)).toEqual(val); |
|
|
|
expect(deepMerge(null, val)).toEqual(val); |
|
|
|
expect(deepMerge(val, undefined)).toEqual(val); |
|
|
|
expect(deepMerge(val, null)).toEqual(val); |
|
|
|
}); |
|
|
|
test.each` |
|
|
|
value |
|
|
|
${10} |
|
|
|
${false} |
|
|
|
${''} |
|
|
|
${'test-string'} |
|
|
|
${{ a: 1 }} |
|
|
|
${[1, 2, 3]} |
|
|
|
${{}} |
|
|
|
`('should correctly return when any of the inputs is null or undefined', val => {
|
|
|
|
expect(deepMerge(undefined, val)).toEqual(val); |
|
|
|
expect(deepMerge(null, val)).toEqual(val); |
|
|
|
expect(deepMerge(val, undefined)).toEqual(val); |
|
|
|
expect(deepMerge(val, null)).toEqual(val); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should correctly return source if one of them is primitive or an array', () => { |
|
|
|
const differentTestValues = [ |
|
|
|
{ |
|
|
|
target: 10, |
|
|
|
source: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
target: false, |
|
|
|
source: 20, |
|
|
|
}, |
|
|
|
{ |
|
|
|
target: 'string', |
|
|
|
source: { a: 5 }, |
|
|
|
}, |
|
|
|
{ |
|
|
|
target: { b: 10 }, |
|
|
|
source: 50, |
|
|
|
}, |
|
|
|
{ |
|
|
|
target: [1, 2, 3], |
|
|
|
source: 40, |
|
|
|
}, |
|
|
|
{ |
|
|
|
target: { k: 60 }, |
|
|
|
source: [4, 5, 6], |
|
|
|
}, |
|
|
|
]; |
|
|
|
|
|
|
|
differentTestValues.forEach(val => |
|
|
|
expect(deepMerge(val.target, val.source)).toEqual(val.source), |
|
|
|
); |
|
|
|
}); |
|
|
|
test.each` |
|
|
|
target | source |
|
|
|
${10} | ${false} |
|
|
|
${false} | ${20} |
|
|
|
${'some-string'} | ${{ a: 5 }} |
|
|
|
${{ b: 10 }} | ${50} |
|
|
|
${[1, 2, 3]} | ${40} |
|
|
|
${{ k: 60 }} | ${[4, 5, 6]} |
|
|
|
`(
|
|
|
|
'should correctly return source if one of them is primitive or an array', |
|
|
|
({ target, source }) => { |
|
|
|
expect(deepMerge(target, source)).toEqual(source); |
|
|
|
}, |
|
|
|
); |
|
|
|
|
|
|
|
it('should correctly return when both inputs are objects with different fields', () => { |
|
|
|
const target = { a: 1 }; |
|
|
|
|