-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdeepToMutate.test.js
More file actions
64 lines (54 loc) · 1.72 KB
/
deepToMutate.test.js
File metadata and controls
64 lines (54 loc) · 1.72 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import mutate, { deepPatch } from '../index';
const data = [
[
{ a: { a1: { a11: 10 }, a2: 20 }, b: 99 },
{ a: deepPatch({ a2: 18, a3: 30, a4: { a41: 41 } }), 'a.a4.a41': 98 },
{ a: { a1: { a11: 10 }, a2: 18, a3: 30, a4: { a41: 98 } }, b: 99 },
],
[
{ a: { a1: 1 } },
{ 'a.a4': { a41: 1, a42: 5 }, a: deepPatch({ a4: { a41: 41 } }) },
{ a: { a1: 1, a4: { a41: 41, a42: 5 } } },
],
[
{ a: { a1: 1, a4: { a41: 1, a42: 5 } } },
deepPatch({ a: { a4: { a41: 41 } } }),
{ a: { a1: 1, a4: { a41: 41, a42: 5 } } },
],
[
{ a: { a1: 1 } },
{ a: deepPatch({ a4: { a41: 41, a45: 1 } }), 'a.a4': deepPatch({ a41: 12, a42: 10, a43: [1, 2, 3] }) },
{ a: { a1: 1, a4: { a41: 12, a45: 1, a42: 10, a43: [1, 2, 3] } } },
],
[
{ a: { a1: 1, a4: { a41: 1, a42: 5 } } },
[deepPatch({ a: { a4: { a41: 41 } } }), deepPatch({ a: { a4: { a42: [1, 2, 3] } } })],
{ a: { a1: 1, a4: { a41: 41, a42: [1, 2, 3] } } },
],
[
{ a: [{ z: 100, z2: [1, 2, 3] }] },
deepPatch({ a: { '[0]': { z: 9, z2: ['q'] } } }),
{ a: [{ z: 9, z2: ['q'] }] },
],
[
{ a: [1, 2] },
deepPatch({ a: { '[]': 3, '[+123]': 4 } }),
{ a: [1, 2, 3, 4] },
],
[
{ a: { 'a1.1': 'Hi', 'a1.2': 'world' } },
deepPatch({ a: { 'a1.1': 'Hello' } }),
{ a: { 'a1.1': 'Hello', 'a1.2': 'world' } },
],
];
describe('mutate with deep', () => {
test.each(data)('mutate(%j, %j) === %j', (obj, ext, expected) => {
expect(mutate(obj, ext)).toEqual(expected);
});
test('not Objects should be as it is', () => {
const err = new Error('example');
const result = mutate({ a: 10 }, deepPatch({ a: err }));
expect(result).toEqual({ a: err });
expect(result.a).toBe(err);
});
});