@@ -154,7 +154,7 @@ describe('.detailedDiff', () => {
154
154
test . each ( [
155
155
[ { } , { a : [ "a" , "b" ] } ] ,
156
156
] ) ( 'returns right hand side value when different to left hand side value (%s, %s)' , ( lhs , rhs ) => {
157
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { after : [ "a" , "b" ] } } , "deleted" : { } , "updated" : { } } ) ;
157
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { a : { after : [ "a" , "b" ] } } , "deleted" : { } , "updated" : { } } ) ;
158
158
} ) ;
159
159
} ) ;
160
160
@@ -165,7 +165,7 @@ describe('.detailedDiff', () => {
165
165
[ { a : [ "a" ] } , { a : [ "a" , "b" , "b" , "b" ] } , [ 1 , 2 , 3 ] ] ,
166
166
[ { a : [ "a" ] } , { a : [ "b" , "a" , "b" , "b" ] } , [ 0 , 2 , 3 ] ] ,
167
167
] ) ( 'returns inserted array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
168
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { after : [ { content : "b" , index : indexes } ] } } , "deleted" : { } , "updated" : { } } ) ;
168
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { a : { after : [ { content : "b" , indices : indexes } ] } } , "deleted" : { } , "updated" : { } } ) ;
169
169
} ) ;
170
170
} ) ;
171
171
@@ -176,15 +176,45 @@ describe('.detailedDiff', () => {
176
176
[ { a : [ "a" , "b" , "b" , "b" ] } , { a : [ "a" ] } , [ 1 , 2 , 3 ] ] ,
177
177
[ { a : [ "b" , "a" , "b" , "b" ] } , { a : [ "a" ] } , [ 0 , 2 , 3 ] ] ,
178
178
] ) ( 'returns removed array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
179
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { } , "deleted" : { a : { before : [ { content : "b" , index : indexes } ] } } , "updated" : { } } ) ;
179
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { } , "deleted" : { a : { before : [ { content : "b" , indices : indexes } ] } } , "updated" : { } } ) ;
180
180
} ) ;
181
181
} ) ;
182
182
183
183
describe ( 'change array field (pull one insert one)' , ( ) => {
184
184
test . each ( [
185
185
[ { a : [ "a" , "c" ] } , { a : [ "a" , "b" ] } ] ,
186
186
] ) ( 'returns inserted and removed array element of right hand side (%s, %s)' , ( lhs , rhs ) => {
187
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { after : [ { content : "b" , index : [ 1 ] } ] } } , "deleted" : { a : { before : [ { content : "c" , index : [ 1 ] } ] } } , "updated" : { } } ) ;
187
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { a : { after : [ { content : "b" , indices : [ 1 ] } ] } } , "deleted" : { a : { before : [ { content : "c" , indices : [ 1 ] } ] } } , "updated" : { } } ) ;
188
+ } ) ;
189
+ } ) ;
190
+
191
+ describe ( 'add array *element* (simple array)' , ( ) => {
192
+ test . each ( [
193
+ [ { a : [ "a" ] } , { a : [ "a" , "b" ] } , [ 1 ] ] ,
194
+ [ { a : [ "a" ] } , { a : [ "a" , "b" , "b" ] } , [ 1 , 2 ] ] ,
195
+ [ { a : [ "a" ] } , { a : [ "a" , "b" , "b" , "b" ] } , [ 1 , 2 , 3 ] ] ,
196
+ [ { a : [ "a" ] } , { a : [ "b" , "a" , "b" , "b" ] } , [ 0 , 2 , 3 ] ] ,
197
+ ] ) ( 'returns inserted array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
198
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { after : [ "b" ] } } , "deleted" : { } , "updated" : { } } ) ;
199
+ } ) ;
200
+ } ) ;
201
+
202
+ describe ( 'remove array element (simple array)' , ( ) => {
203
+ test . each ( [
204
+ [ { a : [ "a" , "b" ] } , { a : [ "a" ] } , [ 1 ] ] ,
205
+ [ { a : [ "a" , "b" , "b" ] } , { a : [ "a" ] } , [ 1 , 2 ] ] ,
206
+ [ { a : [ "a" , "b" , "b" , "b" ] } , { a : [ "a" ] } , [ 1 , 2 , 3 ] ] ,
207
+ [ { a : [ "b" , "a" , "b" , "b" ] } , { a : [ "a" ] } , [ 0 , 2 , 3 ] ] ,
208
+ ] ) ( 'returns removed array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
209
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { } , "deleted" : { a : { before : [ "b" ] } } , "updated" : { } } ) ;
210
+ } ) ;
211
+ } ) ;
212
+
213
+ describe ( 'change array field (pull one insert one) (simple array)' , ( ) => {
214
+ test . each ( [
215
+ [ { a : [ "a" , "c" ] } , { a : [ "a" , "b" ] } ] ,
216
+ ] ) ( 'returns inserted and removed array element of right hand side (%s, %s)' , ( lhs , rhs ) => {
217
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { after : [ "b" ] } } , "deleted" : { a : { before : [ "c" ] } } , "updated" : { } } ) ;
188
218
} ) ;
189
219
} ) ;
190
220
} ) ;
@@ -198,7 +228,7 @@ describe('.detailedDiff', () => {
198
228
[ { a : { a : [ "a" ] } } , { a : { a : [ "a" , "b" , "b" , "b" ] } } , [ 1 , 2 , 3 ] ] ,
199
229
[ { a : { a : [ "a" ] } } , { a : { a : [ "b" , "a" , "b" , "b" ] } } , [ 0 , 2 , 3 ] ] ,
200
230
] ) ( 'returns inserted array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
201
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { a : { after : [ { content : "b" , index : indexes } ] } } } , "deleted" : { } , "updated" : { } } ) ;
231
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { a : { a : { after : [ { content : "b" , indices : indexes } ] } } } , "deleted" : { } , "updated" : { } } ) ;
202
232
} ) ;
203
233
} ) ;
204
234
@@ -209,15 +239,61 @@ describe('.detailedDiff', () => {
209
239
[ { a : { a : [ "a" , "b" , "b" , "b" ] } } , { a : { a : [ "a" ] } } , [ 1 , 2 , 3 ] ] ,
210
240
[ { a : { a : [ "b" , "a" , "b" , "b" ] } } , { a : { a : [ "a" ] } } , [ 0 , 2 , 3 ] ] ,
211
241
] ) ( 'returns removed array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
212
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { } , "deleted" : { a : { a : { before : [ { content : "b" , index : indexes } ] } } } , "updated" : { } } ) ;
242
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { } , "deleted" : { a : { a : { before : [ { content : "b" , indices : indexes } ] } } } , "updated" : { } } ) ;
213
243
} ) ;
214
244
} ) ;
215
245
216
246
describe ( 'change array field (pull one insert one) not in root' , ( ) => {
217
247
test . each ( [
218
248
[ { a : { a : [ "a" , "c" ] } } , { a : { a : [ "a" , "b" ] } } ] ,
219
249
] ) ( 'returns inserted and removed array element of right hand side (%s, %s)' , ( lhs , rhs ) => {
220
- expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { a : { after : [ { content : "b" , index : [ 1 ] } ] } } } , "deleted" : { a : { a : { before : [ { content : "c" , index : [ 1 ] } ] } } } , "updated" : { } } ) ;
250
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { a : { a : { after : [ { content : "b" , indices : [ 1 ] } ] } } } , "deleted" : { a : { a : { before : [ { content : "c" , indices : [ 1 ] } ] } } } , "updated" : { } } ) ;
251
+ } ) ;
252
+ } ) ;
253
+
254
+ describe ( 'reorder not in root' , ( ) => {
255
+ test . each ( [
256
+ [ { a : { a : [ "a" , "b" , "c" ] } } , { a : { a : [ "a" , "c" , "b" ] } } ] ,
257
+ ] ) ( 'returns inserted and removed array element of right hand side (%s, %s)' , ( lhs , rhs ) => {
258
+ expect ( detailedDiff ( lhs , rhs , false ) ) . toEqual ( { "added" : { } , "deleted" : { } , "updated" : { a : { a : { after : { b : [ { counter : 0 , newIndex : 2 } ] , c : [ { counter : 0 , newIndex : 1 } ] } } } } } ) ;
259
+ } ) ;
260
+ } ) ;
261
+
262
+ describe ( 'add array *element* not in root (simple array)' , ( ) => {
263
+ test . each ( [
264
+ [ { a : { a : [ "a" ] } } , { a : { a : [ "a" , "b" ] } } , [ 1 ] ] ,
265
+ [ { a : { a : [ "a" ] } } , { a : { a : [ "a" , "b" , "b" ] } } , [ 1 , 2 ] ] ,
266
+ [ { a : { a : [ "a" ] } } , { a : { a : [ "a" , "b" , "b" , "b" ] } } , [ 1 , 2 , 3 ] ] ,
267
+ [ { a : { a : [ "a" ] } } , { a : { a : [ "b" , "a" , "b" , "b" ] } } , [ 0 , 2 , 3 ] ] ,
268
+ ] ) ( 'returns inserted array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
269
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { a : { after : [ "b" ] } } } , "deleted" : { } , "updated" : { } } ) ;
270
+ } ) ;
271
+ } ) ;
272
+
273
+ describe ( 'remove array element not in root (simple array)' , ( ) => {
274
+ test . each ( [
275
+ [ { a : { a : [ "a" , "b" ] } } , { a : { a : [ "a" ] } } , [ 1 ] ] ,
276
+ [ { a : { a : [ "a" , "b" , "b" ] } } , { a : { a : [ "a" ] } } , [ 1 , 2 ] ] ,
277
+ [ { a : { a : [ "a" , "b" , "b" , "b" ] } } , { a : { a : [ "a" ] } } , [ 1 , 2 , 3 ] ] ,
278
+ [ { a : { a : [ "b" , "a" , "b" , "b" ] } } , { a : { a : [ "a" ] } } , [ 0 , 2 , 3 ] ] ,
279
+ ] ) ( 'returns removed array element content and position of right hand side (%s, %s)' , ( lhs , rhs , indexes ) => {
280
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { } , "deleted" : { a : { a : { before : [ "b" ] } } } , "updated" : { } } ) ;
281
+ } ) ;
282
+ } ) ;
283
+
284
+ describe ( 'change array field (pull one insert one) not in root (simple array)' , ( ) => {
285
+ test . each ( [
286
+ [ { a : { a : [ "a" , "c" ] } } , { a : { a : [ "a" , "b" ] } } ] ,
287
+ ] ) ( 'returns inserted and removed array element of right hand side (%s, %s)' , ( lhs , rhs ) => {
288
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { a : { a : { after : [ "b" ] } } } , "deleted" : { a : { a : { before : [ "c" ] } } } , "updated" : { } } ) ;
289
+ } ) ;
290
+ } ) ;
291
+
292
+ describe ( 'reorder not in root (simple array)' , ( ) => {
293
+ test . each ( [
294
+ [ { a : { a : [ "a" , "b" , "c" ] } } , { a : { a : [ "a" , "c" , "b" ] } } ] ,
295
+ ] ) ( 'returns inserted and removed array element of right hand side (%s, %s)' , ( lhs , rhs ) => {
296
+ expect ( detailedDiff ( lhs , rhs ) ) . toEqual ( { "added" : { } , "deleted" : { } , "updated" : { } } ) ;
221
297
} ) ;
222
298
} ) ;
223
299
} ) ;
0 commit comments