-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeepMerge.test.js
More file actions
47 lines (45 loc) · 1.25 KB
/
deepMerge.test.js
File metadata and controls
47 lines (45 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const { deepMerge } = require("./deepMerge.js");
describe("deepMerge", () => {
it("combines", () => {
const actual = val(deepMerge({ a: 1 }, { b: 2 }));
const expected = val({ a: 1, b: 2 });
expect(actual).toBe(expected);
});
it("overwrites collisions", () => {
const actual = val(deepMerge({ a: 1 }, { a: 2 }));
const expected = val({ a: 2 });
expect(actual).toBe(expected);
});
it("combines at 1 level down too without deleting", () => {
const actual = val(
deepMerge({ a: 1, b: { c: 2 } }, { a: 3, b: { d: 4 }, e: 5 })
);
const expected = val({ a: 3, b: { c: 2, d: 4 }, e: 5 });
expect(actual).toBe(expected);
});
it("combines multiple levels down without deleting, and different data types", () => {
const actual = val(
deepMerge(
{ a: 1, b: { c: 2, third: { first: 1, second: 1 } } },
{
a: 3,
b: { d: 4, third: { second: 2, third: 3, fourth: "4th" } },
e: 5,
}
)
);
const expected = val({
a: 3,
b: {
c: 2,
third: { first: 1, second: 2, third: 3, fourth: "4th" },
d: 4,
},
e: 5,
});
expect(actual).toBe(expected);
});
});
function val(json) {
return JSON.stringify(json);
}