piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
139 lines (132 loc) • 2.48 kB
text/typescript
import { describe, it, expect } from 'vitest';
import { deepMerge } from './merge';
describe('Merge Module', () => {
it('deepMerge should merge two flat objects together', () => {
const obj1 = {
a: 2,
b: 3,
};
const obj2 = {
a: 5,
c: 9,
d: 10,
};
const result = deepMerge(obj1, obj2);
expect(result).toEqual({
a: 5,
b: 3,
c: 9,
d: 10,
});
});
it('deepMerge should merge two objects together', () => {
const obj1 = {
a: 2,
b: {
c: {
c1: 'hi',
c2: 'ho',
c3: 5,
},
},
};
const obj2 = {
a: 5,
b: {
c: {
c2: 'foo',
c4: {
bar: 'yo',
},
},
d: 10,
},
};
const result = deepMerge(obj1, obj2);
expect(result).toEqual({
a: 5,
b: {
c: {
c1: 'hi',
c2: 'foo',
c3: 5,
c4: {
bar: 'yo',
},
},
d: 10,
},
});
});
it('deepMerge should merge two simple arrays together', () => {
const arr1 = [1, 2, 3];
const arr2 = [1, 3, 5, 9];
const result = deepMerge(arr1, arr2);
expect(result).toEqual([1, 2, 3, 5, 9]);
});
it('deepMerge should not merge object and array together', () => {
const arr1 = [1, 2, 3];
const arr2 = {
0: 1,
1: 5,
2: 9,
};
const result = deepMerge(arr1, arr2);
expect(result).toEqual(arr2);
});
it('deepMerge should not merge array and object together', () => {
const arr1 = {
0: 1,
1: 5,
2: 9,
};
const arr2 = [1, 2, 3];
const result = deepMerge(arr1, arr2);
expect(result).toEqual(arr2);
});
it('deepMerge should merge two complex objects together', () => {
const obj1 = {
b: {
c: [
true,
{
d: {
e: 2,
},
},
],
},
};
const obj2 = {
a: 5,
b: {
c: [
false,
{
d: {
f: 9,
},
},
],
d: 10,
},
};
const result = deepMerge(obj1, obj2);
expect(result).toEqual({
a: 5,
b: {
c: [
true,
{
d: {
e: 2,
f: 9,
},
},
false,
],
d: 10,
},
});
});
});