|
1 | | -import { deepEqual, difference } from '../object'; |
| 1 | +import { combineObjects, deepEqual, difference } from '../object'; |
| 2 | + |
| 3 | +test('combineObjects()', async () => { |
| 4 | + expect(combineObjects(undefined, undefined)).toBeUndefined(); |
| 5 | + expect(combineObjects(undefined, 5)).toBe(5); |
| 6 | + expect(combineObjects(5, undefined)).toBeUndefined(); |
| 7 | + expect(combineObjects(5, undefined, { ignoreUndefined: true })).toBe(5); |
| 8 | + expect(combineObjects(5, 10)).toBe(10); |
| 9 | + expect(combineObjects(5, 0, { ignoreUndefined: true })).toBe(0); |
| 10 | + |
| 11 | + expect(combineObjects([1, 2], [3, 4])).toEqual([3, 4]); |
| 12 | + expect(combineObjects([1, 2], [3, 4], { mergeArrays: true })).toEqual([1, 2, 3, 4]); |
| 13 | + |
| 14 | + expect(combineObjects({ a: 1, b: 2 }, { b: 3, c: 4 })).toEqual({ a: 1, b: 3, c: 4 }); |
| 15 | + expect(combineObjects({ a: 1, b: 2 }, { b: undefined, c: 4 }, { ignoreUndefined: false })).toEqual({ |
| 16 | + a: 1, |
| 17 | + b: undefined, |
| 18 | + c: 4, |
| 19 | + }); |
| 20 | + expect(combineObjects({ a: 1, b: 2 }, { b: undefined, c: 4 }, { ignoreUndefined: true })).toEqual({ |
| 21 | + a: 1, |
| 22 | + b: 2, |
| 23 | + c: 4, |
| 24 | + }); |
| 25 | + |
| 26 | + expect(combineObjects({ a: 1, b: { c: 5, d: 6 } }, { b: { e: 7 } }, { recursive: false })).toEqual({ |
| 27 | + a: 1, |
| 28 | + b: { e: 7 }, |
| 29 | + }); |
| 30 | + expect(combineObjects({ a: 1, b: { c: 5, d: 6 } }, { b: { e: 7 } }, { recursive: true })).toEqual({ |
| 31 | + a: 1, |
| 32 | + b: { c: 5, d: 6, e: 7 }, |
| 33 | + }); |
| 34 | + |
| 35 | + expect(combineObjects({ a: [1, 2], b: 2 }, { a: [3, 4] }, { mergeArrays: true })).toEqual({ a: [1, 2, 3, 4], b: 2 }); |
| 36 | +}); |
2 | 37 |
|
3 | 38 | test('deepEqual()', async () => { |
4 | 39 | // Primitive values (true) |
@@ -76,47 +111,62 @@ test('deepEqual()', async () => { |
76 | 111 | }); |
77 | 112 |
|
78 | 113 | test('difference()', async () => { |
79 | | - expect(difference({}, {}, { recursive: false, ignoreOrder: false })).toEqual({}); |
80 | | - expect(difference({ a: 1 }, { a: 1 }, { recursive: false, ignoreOrder: false })).toEqual({}); |
81 | | - expect(difference({ a: 1 }, { a: 2 }, { recursive: false, ignoreOrder: false })).toEqual({ a: 2 }); |
82 | | - expect(difference({ a: 1, b: 2 }, { a: 1 }, { recursive: false, ignoreOrder: false })).toEqual({ b: undefined }); |
83 | | - expect(difference({ a: 1 }, { a: 1, b: 2 }, { recursive: false, ignoreOrder: false })).toEqual({ b: 2 }); |
| 114 | + expect(difference({}, {}, { recursive: false, strictOrder: true })).toEqual({}); |
| 115 | + expect(difference({ a: 1 }, { a: 1 }, { recursive: false, strictOrder: true })).toEqual({}); |
| 116 | + expect(difference({ a: 1 }, { a: 2 }, { recursive: false, strictOrder: true })).toEqual({ a: 2 }); |
| 117 | + expect(difference({ a: 1, b: 2 }, { a: 1 }, { recursive: false, strictOrder: true })).toEqual({ b: undefined }); |
| 118 | + expect(difference({ a: 1 }, { a: 1, b: 2 }, { recursive: false, strictOrder: true })).toEqual({ b: 2 }); |
84 | 119 | expect( |
85 | 120 | difference( |
86 | 121 | { a: { b: 2, c: { d: 3, e: 4 } } }, |
87 | 122 | { a: { b: 2, c: { d: 3, e: 4 } } }, |
88 | | - { recursive: false, ignoreOrder: false }, |
| 123 | + { recursive: false, strictOrder: true }, |
89 | 124 | ), |
90 | 125 | ).toEqual({}); |
91 | 126 | expect( |
92 | 127 | difference( |
93 | 128 | { a: { b: 2, c: { d: 3, e: 4 } } }, |
94 | 129 | { a: { b: 3, c: { d: 3, e: 4 } } }, |
95 | | - { recursive: false, ignoreOrder: false }, |
| 130 | + { recursive: false, strictOrder: true }, |
96 | 131 | ), |
97 | 132 | ).toEqual({ a: { b: 3, c: { d: 3, e: 4 } } }); |
98 | 133 | expect( |
99 | 134 | difference( |
100 | 135 | { a: { b: 2, c: { d: 3, e: 4 } } }, |
101 | 136 | { a: { b: 2, c: { d: 3, e: 5 } } }, |
102 | | - { recursive: false, ignoreOrder: false }, |
| 137 | + { recursive: false, strictOrder: true }, |
103 | 138 | ), |
104 | 139 | ).toEqual({ a: { b: 2, c: { d: 3, e: 5 } } }); |
105 | | - expect(difference({ a: [1, 2, 3] }, { a: [1, 2, 3] }, { recursive: false, ignoreOrder: false })).toEqual({}); |
106 | | - expect(difference({ a: [1, 2, 3] }, { a: [3, 2, 1] }, { recursive: false, ignoreOrder: false })).toEqual({ |
| 140 | + expect(difference({ a: [1, 2, 3] }, { a: [1, 2, 3] }, { recursive: false, strictOrder: true })).toEqual({}); |
| 141 | + expect(difference({ a: [1, 2, 3] }, { a: [3, 2, 1] }, { recursive: false, strictOrder: true })).toEqual({ |
107 | 142 | a: [3, 2, 1], |
108 | 143 | }); |
109 | | - expect(difference({ a: [1, 2, 3] }, { a: [4, 5, 6] }, { recursive: false, ignoreOrder: false })).toEqual({ |
| 144 | + expect(difference({ a: [1, 2, 3] }, { a: [4, 5, 6] }, { recursive: false, strictOrder: true })).toEqual({ |
110 | 145 | a: [4, 5, 6], |
111 | 146 | }); |
112 | 147 |
|
113 | | - expect(difference({ a: [1, 2, 3] }, { a: [3, 2, 1] }, { recursive: false, ignoreOrder: true })).toEqual({}); |
| 148 | + expect(difference({ a: [1, 2, 3] }, { a: [3, 2, 1] }, { recursive: false, strictOrder: false })).toEqual({}); |
114 | 149 |
|
115 | 150 | expect( |
116 | 151 | difference( |
117 | 152 | { a: { b: 2, c: { d: 3, e: 4 } } }, |
118 | 153 | { a: { b: 2, c: { d: 3, e: 5 } } }, |
119 | | - { recursive: true, ignoreOrder: false }, |
| 154 | + { recursive: true, strictOrder: true }, |
120 | 155 | ), |
121 | 156 | ).toEqual({ a: { c: { e: 5 } } }); |
| 157 | + |
| 158 | + expect( |
| 159 | + difference( |
| 160 | + { a: '1', b: '2', c: '3' }, |
| 161 | + { b: '2' }, |
| 162 | + { recursive: false, strictOrder: false, ignoreRemovedKeys: true }, |
| 163 | + ), |
| 164 | + ).toEqual({}); |
| 165 | + expect( |
| 166 | + difference( |
| 167 | + { a: '1', b: '2', c: '3' }, |
| 168 | + { b: '2' }, |
| 169 | + { recursive: false, strictOrder: false, ignoreRemovedKeys: false }, |
| 170 | + ), |
| 171 | + ).toEqual({ a: undefined, c: undefined }); |
122 | 172 | }); |
0 commit comments