@mic-rexjs/usecases-react 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +2 -2
  2. package/dist/index.min.js +1 -1
  3. package/es/components/UseCaseFragment/types.d.ts +1 -1
  4. package/es/hooks/useCompareDeps/index.js +3 -16
  5. package/es/hooks/useReducer/index.d.ts +2 -0
  6. package/es/hooks/useReducer/index.js +20 -0
  7. package/es/hooks/useUseCase/index.js +2 -2
  8. package/es/hooks/useUseCase/index.test.js +493 -41
  9. package/es/hooks/useUseCase/types.d.ts +18 -6
  10. package/es/index.d.ts +1 -0
  11. package/es/index.js +1 -0
  12. package/es/methods/compareProperty/index.d.ts +2 -0
  13. package/es/methods/compareProperty/index.js +34 -0
  14. package/es/methods/compareProperty/types.d.ts +3 -0
  15. package/es/methods/hasField/index.d.ts +1 -0
  16. package/es/methods/hasField/index.js +6 -0
  17. package/es/methods/initEntityReducers/types.d.ts +1 -1
  18. package/es/methods/isSameArray/index.d.ts +1 -0
  19. package/es/methods/isSameArray/index.js +14 -0
  20. package/es/methods/triggerCallbacks/index.d.ts +1 -1
  21. package/es/methods/triggerCallbacks/index.js +3 -3
  22. package/es/methods/triggerWatchers/index.d.ts +1 -1
  23. package/es/methods/triggerWatchers/index.js +12 -8
  24. package/lib/hooks/useCompareDeps/index.js +3 -16
  25. package/lib/hooks/useReducer/index.js +30 -0
  26. package/lib/hooks/useUseCase/index.js +2 -2
  27. package/lib/hooks/useUseCase/index.test.js +643 -91
  28. package/lib/index.js +7 -0
  29. package/lib/methods/compareProperty/index.js +50 -0
  30. package/lib/methods/hasField/index.js +15 -0
  31. package/lib/methods/isSameArray/index.js +21 -0
  32. package/lib/methods/triggerCallbacks/index.js +3 -3
  33. package/lib/methods/triggerWatchers/index.js +16 -9
  34. package/package.json +1 -1
  35. package/es/hooks/useScope/index.d.ts +0 -2
  36. package/es/hooks/useScope/index.js +0 -3
  37. package/es/hooks/useScope/types.d.ts +0 -3
  38. package/lib/hooks/useScope/index.js +0 -10
  39. /package/es/{hooks/useScope → methods/compareProperty}/types.js +0 -0
  40. /package/lib/{hooks/useScope → methods/compareProperty}/types.js +0 -0
@@ -81,8 +81,8 @@ var fileUseCase = function fileUseCase() {
81
81
  return (0, _awaitAsyncGenerator2["default"])(Promise.resolve(null));
82
82
  case 4:
83
83
  _context3.next = 6;
84
- return function (prevEntity) {
85
- return _objectSpread(_objectSpread({}, prevEntity), {}, {
84
+ return function (oldEntity) {
85
+ return _objectSpread(_objectSpread({}, oldEntity), {}, {
86
86
  size: size
87
87
  });
88
88
  };
@@ -124,6 +124,9 @@ var mathUseCase = function mathUseCase() {
124
124
  subtraction: subtraction
125
125
  };
126
126
  };
127
+ var fieldPathUseCase = function fieldPathUseCase() {
128
+ return (0, _usecases.objectUseCase)();
129
+ };
127
130
  var Child = function Child(_ref2) {
128
131
  var _ref2$textPrefix = _ref2.textPrefix,
129
132
  textPrefix = _ref2$textPrefix === void 0 ? '' : _ref2$textPrefix,
@@ -243,17 +246,17 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
243
246
  return (0, _.useUseCase)(defaultFile, fileUseCase);
244
247
  }),
245
248
  result = _renderHook.result;
246
- var context = result.current;
247
- (0, _globals.expect)(context).toHaveLength(3);
249
+ var cores = result.current;
250
+ (0, _globals.expect)(cores).toHaveLength(3);
248
251
  });
249
252
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
250
253
  var _renderHook2 = (0, _react.renderHook)(function () {
251
254
  return (0, _.useUseCase)(defaultFile, fileUseCase);
252
255
  }),
253
256
  result = _renderHook2.result;
254
- var context = result.current;
255
- var _context4 = (0, _slicedToArray2["default"])(context, 1),
256
- entity = _context4[0];
257
+ var cores = result.current;
258
+ var _cores = (0, _slicedToArray2["default"])(cores, 1),
259
+ entity = _cores[0];
257
260
  (0, _globals.expect)(entity).toBe(defaultFile);
258
261
  });
259
262
  (0, _globals.test)('`reducers` should be returned as an object', function () {
@@ -261,9 +264,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
261
264
  return (0, _.useUseCase)(defaultFile, fileUseCase);
262
265
  }),
263
266
  result = _renderHook3.result;
264
- var context = result.current;
265
- var _context5 = (0, _slicedToArray2["default"])(context, 2),
266
- reducers = _context5[1];
267
+ var cores = result.current;
268
+ var _cores2 = (0, _slicedToArray2["default"])(cores, 2),
269
+ reducers = _cores2[1];
267
270
  (0, _globals.expect)((0, _typeof2["default"])(reducers)).toBe('object');
268
271
  });
269
272
  (0, _globals.test)('`Provider` should be returned as a function', function () {
@@ -271,9 +274,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
271
274
  return (0, _.useUseCase)(defaultFile, fileUseCase);
272
275
  }),
273
276
  result = _renderHook4.result;
274
- var context = result.current;
275
- var _context6 = (0, _slicedToArray2["default"])(context, 3),
276
- Provider = _context6[2];
277
+ var cores = result.current;
278
+ var _cores3 = (0, _slicedToArray2["default"])(cores, 3),
279
+ Provider = _cores3[2];
277
280
  (0, _globals.expect)((0, _typeof2["default"])(Provider)).toBe('function');
278
281
  });
279
282
  (0, _globals.test)('after call non-generator reducer, it should not trigger update', function () {
@@ -281,8 +284,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
281
284
  var onDeepUpdate = _globals.jest.fn();
282
285
  var _renderHook5 = (0, _react.renderHook)(function () {
283
286
  var context = (0, _.useUseCase)(defaultFile, fileUseCase);
284
- var _context7 = (0, _slicedToArray2["default"])(context, 2),
285
- reducers = _context7[1];
287
+ var _context4 = (0, _slicedToArray2["default"])(context, 2),
288
+ reducers = _context4[1];
286
289
  var isImage = reducers.isImage;
287
290
  var update = (0, _ahooks.useUpdate)();
288
291
  (0, _ahooks.useUpdateEffect)(function () {
@@ -320,10 +323,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
320
323
  return (0, _.useUseCase)(defaultFile, fileUseCase);
321
324
  }),
322
325
  result = _renderHook6.result;
323
- var context = result.current;
324
- var _context8 = (0, _slicedToArray2["default"])(context, 2),
325
- entity = _context8[0],
326
- reducers = _context8[1];
326
+ var cores = result.current;
327
+ var _cores4 = (0, _slicedToArray2["default"])(cores, 2),
328
+ entity = _cores4[0],
329
+ reducers = _cores4[1];
327
330
  var setPath = reducers.setPath,
328
331
  setEntity = reducers.setEntity;
329
332
  (0, _react.act)(function () {
@@ -332,7 +335,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
332
335
  size: 5000
333
336
  });
334
337
  });
335
- (0, _globals.expect)(result.current).not.toBe(context);
338
+ (0, _globals.expect)(result.current).not.toBe(cores);
336
339
  (0, _globals.expect)(result.current[0]).not.toBe(entity);
337
340
  (0, _globals.expect)(result.current[1]).not.toBe(reducers);
338
341
  (0, _globals.expect)(result.current[1].setPath).not.toBe(setPath);
@@ -344,9 +347,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
344
347
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
345
348
  });
346
349
  (0, _globals.test)('after `yield entity` on async mode, it should trigger update', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
347
- var onUpdate, _renderHook7, result, context, _context9, entity, reducers, readFile, promise;
348
- return _regenerator["default"].wrap(function _callee3$(_context10) {
349
- while (1) switch (_context10.prev = _context10.next) {
350
+ var onUpdate, _renderHook7, result, cores, _cores5, entity, reducers, readFile, promise;
351
+ return _regenerator["default"].wrap(function _callee3$(_context5) {
352
+ while (1) switch (_context5.prev = _context5.next) {
350
353
  case 0:
351
354
  onUpdate = _globals.jest.fn();
352
355
  _renderHook7 = (0, _react.renderHook)(function () {
@@ -355,16 +358,16 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
355
358
  });
356
359
  return (0, _.useUseCase)(defaultFile, fileUseCase);
357
360
  }), result = _renderHook7.result;
358
- context = result.current;
359
- _context9 = (0, _slicedToArray2["default"])(context, 2), entity = _context9[0], reducers = _context9[1];
361
+ cores = result.current;
362
+ _cores5 = (0, _slicedToArray2["default"])(cores, 2), entity = _cores5[0], reducers = _cores5[1];
360
363
  readFile = reducers.readFile;
361
364
  promise = (0, _react.act)(function () {
362
365
  return readFile(PATH_1);
363
366
  });
364
- (0, _globals.expect)(result.current).toBe(context);
365
- (0, _globals.expect)(result.current).toEqual(context);
367
+ (0, _globals.expect)(result.current).toBe(cores);
368
+ (0, _globals.expect)(result.current).toEqual(cores);
366
369
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
367
- _context10.next = 11;
370
+ _context5.next = 11;
368
371
  return promise;
369
372
  case 11:
370
373
  (0, _globals.expect)(result.current[0]).not.toBe(entity);
@@ -376,7 +379,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
376
379
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
377
380
  case 18:
378
381
  case "end":
379
- return _context10.stop();
382
+ return _context5.stop();
380
383
  }
381
384
  }, _callee3);
382
385
  })));
@@ -389,9 +392,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
389
392
  return (0, _.useUseCase)(defaultFile, fileUseCase);
390
393
  }),
391
394
  result = _renderHook8.result;
392
- var context = result.current;
393
- var _context11 = (0, _slicedToArray2["default"])(context, 2),
394
- reducers = _context11[1];
395
+ var cores = result.current;
396
+ var _cores6 = (0, _slicedToArray2["default"])(cores, 2),
397
+ reducers = _cores6[1];
395
398
  var init = reducers.init;
396
399
  (0, _react.act)(function () {
397
400
  init(_objectSpread(_objectSpread({}, defaultFile), {}, {
@@ -416,9 +419,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
416
419
  }),
417
420
  result = _renderHook9.result,
418
421
  rerender = _renderHook9.rerender;
419
- var context = result.current;
420
- var _context12 = (0, _slicedToArray2["default"])(context, 2),
421
- setPath = _context12[1].setPath;
422
+ var cores = result.current;
423
+ var _cores7 = (0, _slicedToArray2["default"])(cores, 2),
424
+ setPath = _cores7[1].setPath;
422
425
  setPath(PATH_1);
423
426
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
424
427
  (0, _globals.expect)(result.current[0].path).toBe('');
@@ -440,15 +443,15 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
440
443
  });
441
444
  }),
442
445
  result = _renderHook10.result;
443
- var context = result.current;
444
- var _context13 = (0, _slicedToArray2["default"])(context, 2),
445
- reducers = _context13[1];
446
+ var cores = result.current;
447
+ var _cores8 = (0, _slicedToArray2["default"])(cores, 2),
448
+ reducers = _cores8[1];
446
449
  var setPath = reducers.setPath;
447
450
  (0, _react.act)(function () {
448
451
  setPath(PATH_1);
449
452
  });
450
- (0, _globals.expect)(result.current).toBe(context);
451
- (0, _globals.expect)(result.current).toEqual(context);
453
+ (0, _globals.expect)(result.current).toBe(cores);
454
+ (0, _globals.expect)(result.current).toEqual(cores);
452
455
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
453
456
  });
454
457
  (0, _globals.test)('`options.onChange` should be trigger when entity has changed', function () {
@@ -459,10 +462,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
459
462
  });
460
463
  }),
461
464
  result = _renderHook11.result;
462
- "";
463
- var context = result.current;
464
- var _context14 = (0, _slicedToArray2["default"])(context, 2),
465
- reducers = _context14[1];
465
+ var cores = result.current;
466
+ var _cores9 = (0, _slicedToArray2["default"])(cores, 2),
467
+ reducers = _cores9[1];
466
468
  var setPath = reducers.setPath;
467
469
  (0, _globals.expect)(onChange).toHaveBeenCalledTimes(0);
468
470
  (0, _react.act)(function () {
@@ -484,10 +486,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
484
486
  });
485
487
  }),
486
488
  result = _renderHook12.result;
487
- var context = result.current;
488
- var _context15 = (0, _slicedToArray2["default"])(context, 2),
489
- path = _context15[0].path,
490
- reducers = _context15[1];
489
+ var cores = result.current;
490
+ var _cores10 = (0, _slicedToArray2["default"])(cores, 2),
491
+ path = _cores10[0].path,
492
+ reducers = _cores10[1];
491
493
  var setPath = reducers.setPath;
492
494
  (0, _globals.expect)(path).toBe('');
493
495
  (0, _react.act)(function () {
@@ -524,22 +526,54 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
524
526
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
525
527
  });
526
528
  (0, _globals.test)('when `entity` change, it should trigger watchers', function () {
529
+ var onPathChange = _globals.jest.fn();
530
+ var onSizeChange = _globals.jest.fn();
531
+ var _renderHook14 = (0, _react.renderHook)(function () {
532
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
533
+ watch: {
534
+ path: onPathChange,
535
+ size: onSizeChange
536
+ }
537
+ });
538
+ }),
539
+ result = _renderHook14.result;
540
+ var cores = result.current;
541
+ var _cores11 = (0, _slicedToArray2["default"])(cores, 2),
542
+ setPath = _cores11[1].setPath;
543
+ (0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(0);
544
+ (0, _react.act)(function () {
545
+ setPath(PATH_1);
546
+ });
547
+ (0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(1);
548
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(0);
549
+ (0, _globals.expect)(onPathChange).toHaveBeenLastCalledWith({
550
+ fieldPaths: ['path'],
551
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
552
+ path: PATH_1,
553
+ ext: EXT_1
554
+ }),
555
+ oldEntity: defaultFile,
556
+ newValue: PATH_1,
557
+ oldValue: ''
558
+ });
559
+ });
560
+ (0, _globals.test)('watcher should be updated after `entity` change', function () {
527
561
  var onPathChange1 = _globals.jest.fn();
528
562
  var onPathChange2 = _globals.jest.fn();
529
563
  var onPathChange = onPathChange1;
530
- var _renderHook14 = (0, _react.renderHook)(function () {
564
+ var _renderHook15 = (0, _react.renderHook)(function () {
531
565
  return (0, _.useUseCase)(defaultFile, fileUseCase, {
532
566
  watch: {
533
567
  path: onPathChange
534
568
  }
535
569
  });
536
570
  }),
537
- result = _renderHook14.result;
538
- var context = result.current;
539
- var _context16 = (0, _slicedToArray2["default"])(context, 2),
540
- _context16$ = _context16[1],
541
- setPath = _context16$.setPath,
542
- setEntity = _context16$.setEntity;
571
+ result = _renderHook15.result;
572
+ var cores = result.current;
573
+ var _cores12 = (0, _slicedToArray2["default"])(cores, 2),
574
+ _cores12$ = _cores12[1],
575
+ setPath = _cores12$.setPath,
576
+ setEntity = _cores12$.setEntity;
543
577
  onPathChange = onPathChange2;
544
578
  (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(0);
545
579
  (0, _react.act)(function () {
@@ -549,26 +583,38 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
549
583
  });
550
584
  });
551
585
  (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(1);
552
- (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
553
- path: PATH_1,
554
- ext: EXT_1
555
- }), defaultFile);
586
+ (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith({
587
+ fieldPaths: ['path'],
588
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
589
+ path: PATH_1,
590
+ ext: EXT_1
591
+ }),
592
+ oldEntity: defaultFile,
593
+ newValue: PATH_1,
594
+ oldValue: ''
595
+ });
556
596
  (0, _react.act)(function () {
557
597
  setPath('');
558
598
  });
559
599
  (0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(1);
560
- (0, _globals.expect)(onPathChange2).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
561
- size: 5000
562
- }), _objectSpread(_objectSpread({}, defaultFile), {}, {
563
- path: PATH_1,
564
- size: 5000,
565
- ext: EXT_1
566
- }));
600
+ (0, _globals.expect)(onPathChange2).toHaveBeenLastCalledWith({
601
+ fieldPaths: ['path'],
602
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
603
+ size: 5000
604
+ }),
605
+ oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
606
+ path: PATH_1,
607
+ size: 5000,
608
+ ext: EXT_1
609
+ }),
610
+ newValue: '',
611
+ oldValue: PATH_1
612
+ });
567
613
  });
568
614
  (0, _globals.test)('when `deps` has changed, it should trigger update', function () {
569
615
  var onUpdate = _globals.jest.fn();
570
616
  var onDeepUpdate = _globals.jest.fn();
571
- var _renderHook15 = (0, _react.renderHook)(function () {
617
+ var _renderHook16 = (0, _react.renderHook)(function () {
572
618
  var _useState3 = (0, _react2.useState)('user/'),
573
619
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
574
620
  pathPrefix = _useState4[0],
@@ -584,7 +630,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
584
630
  }, [context]);
585
631
  return setPathPrefix;
586
632
  }),
587
- result = _renderHook15.result;
633
+ result = _renderHook16.result;
588
634
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
589
635
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
590
636
  (0, _react.act)(function () {
@@ -596,7 +642,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
596
642
  (0, _globals.test)('empty `deps` should not trigger update', function () {
597
643
  var onUpdate = _globals.jest.fn();
598
644
  var onDeepUpdate = _globals.jest.fn();
599
- var _renderHook16 = (0, _react.renderHook)(function () {
645
+ var _renderHook17 = (0, _react.renderHook)(function () {
600
646
  var _useState5 = (0, _react2.useState)('user/'),
601
647
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
602
648
  pathPrefix = _useState6[0],
@@ -612,7 +658,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
612
658
  }, [context]);
613
659
  return setPathPrefix;
614
660
  }),
615
- result = _renderHook16.result;
661
+ result = _renderHook17.result;
616
662
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
617
663
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
618
664
  (0, _react.act)(function () {
@@ -624,29 +670,29 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
624
670
  });
625
671
  (0, _globals.describe)('`useUseCase` should work with 1+ arguments on non-entity mode', function () {
626
672
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
627
- var _renderHook17 = (0, _react.renderHook)(function () {
673
+ var _renderHook18 = (0, _react.renderHook)(function () {
628
674
  return (0, _.useUseCase)(mathUseCase);
629
675
  }),
630
- result = _renderHook17.result;
676
+ result = _renderHook18.result;
631
677
  var reducers = result.current;
632
678
  (0, _globals.expect)(Array.isArray(reducers)).toBe(false);
633
679
  });
634
680
  (0, _globals.test)('returned reducer should work', function () {
635
- var _renderHook18 = (0, _react.renderHook)(function () {
681
+ var _renderHook19 = (0, _react.renderHook)(function () {
636
682
  return (0, _.useUseCase)(mathUseCase);
637
683
  }),
638
- result = _renderHook18.result;
684
+ result = _renderHook19.result;
639
685
  var reducers = result.current;
640
686
  var add = reducers.add;
641
687
  (0, _globals.expect)(add(1, 2)).toBe(3);
642
688
  });
643
689
  (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
644
- var _renderHook19 = (0, _react.renderHook)(function () {
690
+ var _renderHook20 = (0, _react.renderHook)(function () {
645
691
  return (0, _.useUseCase)(mathUseCase, {
646
692
  extraValue: 5
647
693
  });
648
694
  }),
649
- result = _renderHook19.result;
695
+ result = _renderHook20.result;
650
696
  var reducers = result.current;
651
697
  var add = reducers.add;
652
698
  (0, _globals.expect)(add(1, 2)).toBe(8);
@@ -654,7 +700,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
654
700
  (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
655
701
  var onUpdate = _globals.jest.fn();
656
702
  var onDeepUpdate = _globals.jest.fn();
657
- var _renderHook20 = (0, _react.renderHook)(function () {
703
+ var _renderHook21 = (0, _react.renderHook)(function () {
658
704
  var _useState7 = (0, _react2.useState)(0),
659
705
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
660
706
  extraValue = _useState8[0],
@@ -670,7 +716,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
670
716
  }, [reducers]);
671
717
  return setExtraValue;
672
718
  }),
673
- result = _renderHook20.result;
719
+ result = _renderHook21.result;
674
720
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
675
721
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
676
722
  (0, _react.act)(function () {
@@ -682,7 +728,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
682
728
  (0, _globals.test)('when `deps` change, it should update reducers', function () {
683
729
  var onUpdate = _globals.jest.fn();
684
730
  var onDeepUpdate = _globals.jest.fn();
685
- var _renderHook21 = (0, _react.renderHook)(function () {
731
+ var _renderHook22 = (0, _react.renderHook)(function () {
686
732
  var _useState9 = (0, _react2.useState)(0),
687
733
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
688
734
  extraValue = _useState10[0],
@@ -698,7 +744,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
698
744
  }, [reducers]);
699
745
  return setExtraValue;
700
746
  }),
701
- result = _renderHook21.result;
747
+ result = _renderHook22.result;
702
748
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
703
749
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
704
750
  (0, _react.act)(function () {
@@ -710,7 +756,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
710
756
  (0, _globals.test)('empty `deps` should not update reducers', function () {
711
757
  var onUpdate = _globals.jest.fn();
712
758
  var onDeepUpdate = _globals.jest.fn();
713
- var _renderHook22 = (0, _react.renderHook)(function () {
759
+ var _renderHook23 = (0, _react.renderHook)(function () {
714
760
  var _useState11 = (0, _react2.useState)(0),
715
761
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
716
762
  extraValue = _useState12[0],
@@ -726,7 +772,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
726
772
  }, [reducers]);
727
773
  return setExtraValue;
728
774
  }),
729
- result = _renderHook22.result;
775
+ result = _renderHook23.result;
730
776
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
731
777
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
732
778
  (0, _react.act)(function () {
@@ -925,24 +971,37 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
925
971
  (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(0);
926
972
  _react.fireEvent.click(_react.screen.getByText(firstButtonText));
927
973
  (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
928
- (0, _globals.expect)(onFirstExtChange).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
929
- ext: EXT_1,
930
- path: PATH_1
931
- }), defaultFile);
974
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenLastCalledWith({
975
+ fieldPaths: ['ext'],
976
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
977
+ ext: EXT_1,
978
+ path: PATH_1
979
+ }),
980
+ oldEntity: defaultFile,
981
+ newValue: EXT_1,
982
+ oldValue: ''
983
+ });
932
984
  (0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(1);
933
985
  (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(0);
934
986
  _react.fireEvent.click(_react.screen.getByText(secondButtonText));
935
987
  (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(1);
936
- (0, _globals.expect)(onSecondExtChange).toHaveBeenLastCalledWith(defaultFile, _objectSpread(_objectSpread({}, defaultFile), {}, {
937
- ext: EXT_1,
938
- path: PATH_1
939
- }));
988
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenLastCalledWith({
989
+ fieldPaths: ['ext'],
990
+ newEntity: defaultFile,
991
+ oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
992
+ ext: EXT_1,
993
+ path: PATH_1
994
+ }),
995
+ newValue: '',
996
+ oldValue: EXT_1
997
+ });
940
998
  (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
941
999
  (0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(2);
942
1000
  });
943
1001
  (0, _globals.test)('`options.watch` should be trigger in orders', function () {
944
1002
  var changeTimes = 0;
945
- var updateChangeTimes = function updateChangeTimes() {
1003
+ var updateChangeTimes = function updateChangeTimes(e) {
1004
+ void e;
946
1005
  return ++changeTimes;
947
1006
  };
948
1007
  var onChangeA = _globals.jest.fn(updateChangeTimes);
@@ -996,5 +1055,498 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
996
1055
  (0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
997
1056
  (0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
998
1057
  });
1058
+ (0, _globals.test)('`options.watch` should work with array field path of array', function () {
1059
+ var onExtChange = _globals.jest.fn();
1060
+ var onSizeChange = _globals.jest.fn();
1061
+ var _renderHook24 = (0, _react.renderHook)(function () {
1062
+ return (0, _.useUseCase)({}, fieldPathUseCase, {
1063
+ watch: {
1064
+ 'list.ext': onExtChange,
1065
+ 'list.size': onSizeChange
1066
+ }
1067
+ });
1068
+ }),
1069
+ result = _renderHook24.result;
1070
+ var cores = result.current;
1071
+ var _cores13 = (0, _slicedToArray2["default"])(cores, 2),
1072
+ setEntity = _cores13[1].setEntity;
1073
+ (0, _react.act)(function () {
1074
+ setEntity({
1075
+ list: [defaultFile]
1076
+ });
1077
+ });
1078
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(1);
1079
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(1);
1080
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledWith({
1081
+ fieldPaths: ['list', '0', 'ext'],
1082
+ newEntity: {
1083
+ list: [defaultFile]
1084
+ },
1085
+ oldEntity: {},
1086
+ newValue: '',
1087
+ oldValue: void 0
1088
+ });
1089
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledWith({
1090
+ fieldPaths: ['list', '0', 'size'],
1091
+ newEntity: {
1092
+ list: [defaultFile]
1093
+ },
1094
+ oldEntity: {},
1095
+ newValue: 0,
1096
+ oldValue: void 0
1097
+ });
1098
+ (0, _react.act)(function () {
1099
+ setEntity({
1100
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1101
+ ext: EXT_1
1102
+ })]
1103
+ });
1104
+ });
1105
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(2);
1106
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(1);
1107
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledWith({
1108
+ fieldPaths: ['list', '0', 'ext'],
1109
+ newEntity: {
1110
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1111
+ ext: EXT_1
1112
+ })]
1113
+ },
1114
+ oldEntity: {
1115
+ list: [defaultFile]
1116
+ },
1117
+ newValue: EXT_1,
1118
+ oldValue: ''
1119
+ });
1120
+ (0, _react.act)(function () {
1121
+ setEntity({
1122
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1123
+ ext: EXT_1
1124
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1125
+ ext: EXT_2
1126
+ })]
1127
+ });
1128
+ });
1129
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(3);
1130
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(2);
1131
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledWith({
1132
+ fieldPaths: ['list', '1', 'ext'],
1133
+ newEntity: {
1134
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1135
+ ext: EXT_1
1136
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1137
+ ext: EXT_2
1138
+ })]
1139
+ },
1140
+ oldEntity: {
1141
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1142
+ ext: EXT_1
1143
+ })]
1144
+ },
1145
+ newValue: EXT_2,
1146
+ oldValue: void 0
1147
+ });
1148
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledWith({
1149
+ fieldPaths: ['list', '1', 'size'],
1150
+ newEntity: {
1151
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1152
+ ext: EXT_1
1153
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1154
+ ext: EXT_2
1155
+ })]
1156
+ },
1157
+ oldEntity: {
1158
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1159
+ ext: EXT_1
1160
+ })]
1161
+ },
1162
+ newValue: 0,
1163
+ oldValue: void 0
1164
+ });
1165
+ (0, _react.act)(function () {
1166
+ setEntity({
1167
+ nestedList: []
1168
+ });
1169
+ });
1170
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(3);
1171
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(2);
1172
+ (0, _react.act)(function () {
1173
+ setEntity(function () {
1174
+ return {
1175
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1176
+ ext: EXT_2
1177
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1178
+ ext: EXT_1
1179
+ }), defaultFile]
1180
+ };
1181
+ });
1182
+ });
1183
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(6);
1184
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(3);
1185
+ (0, _globals.expect)(onExtChange).toHaveBeenNthCalledWith(4, {
1186
+ fieldPaths: ['list', '0', 'ext'],
1187
+ newEntity: {
1188
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1189
+ ext: EXT_2
1190
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1191
+ ext: EXT_1
1192
+ }), defaultFile]
1193
+ },
1194
+ oldEntity: {
1195
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1196
+ ext: EXT_1
1197
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1198
+ ext: EXT_2
1199
+ })],
1200
+ nestedList: []
1201
+ },
1202
+ newValue: EXT_2,
1203
+ oldValue: EXT_1
1204
+ });
1205
+ (0, _globals.expect)(onExtChange).toHaveBeenNthCalledWith(5, {
1206
+ fieldPaths: ['list', '1', 'ext'],
1207
+ newEntity: {
1208
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1209
+ ext: EXT_2
1210
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1211
+ ext: EXT_1
1212
+ }), defaultFile]
1213
+ },
1214
+ oldEntity: {
1215
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1216
+ ext: EXT_1
1217
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1218
+ ext: EXT_2
1219
+ })],
1220
+ nestedList: []
1221
+ },
1222
+ newValue: EXT_1,
1223
+ oldValue: EXT_2
1224
+ });
1225
+ (0, _globals.expect)(onExtChange).toHaveBeenNthCalledWith(6, {
1226
+ fieldPaths: ['list', '2', 'ext'],
1227
+ newEntity: {
1228
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1229
+ ext: EXT_2
1230
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1231
+ ext: EXT_1
1232
+ }), defaultFile]
1233
+ },
1234
+ oldEntity: {
1235
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1236
+ ext: EXT_1
1237
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1238
+ ext: EXT_2
1239
+ })],
1240
+ nestedList: []
1241
+ },
1242
+ newValue: '',
1243
+ oldValue: void 0
1244
+ });
1245
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledWith({
1246
+ fieldPaths: ['list', '2', 'size'],
1247
+ newEntity: {
1248
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1249
+ ext: EXT_2
1250
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1251
+ ext: EXT_1
1252
+ }), defaultFile]
1253
+ },
1254
+ oldEntity: {
1255
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1256
+ ext: EXT_1
1257
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1258
+ ext: EXT_2
1259
+ })],
1260
+ nestedList: []
1261
+ },
1262
+ newValue: 0,
1263
+ oldValue: void 0
1264
+ });
1265
+ (0, _react.act)(function () {
1266
+ setEntity(function () {
1267
+ return {};
1268
+ });
1269
+ });
1270
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(9);
1271
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(6);
1272
+ (0, _globals.expect)(onExtChange).toHaveBeenNthCalledWith(7, {
1273
+ fieldPaths: ['list', '0', 'ext'],
1274
+ newEntity: {},
1275
+ oldEntity: {
1276
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1277
+ ext: EXT_2
1278
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1279
+ ext: EXT_1
1280
+ }), defaultFile]
1281
+ },
1282
+ newValue: void 0,
1283
+ oldValue: EXT_2
1284
+ });
1285
+ (0, _globals.expect)(onExtChange).toHaveBeenNthCalledWith(8, {
1286
+ fieldPaths: ['list', '1', 'ext'],
1287
+ newEntity: {},
1288
+ oldEntity: {
1289
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1290
+ ext: EXT_2
1291
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1292
+ ext: EXT_1
1293
+ }), defaultFile]
1294
+ },
1295
+ newValue: void 0,
1296
+ oldValue: EXT_1
1297
+ });
1298
+ (0, _globals.expect)(onExtChange).toHaveBeenNthCalledWith(9, {
1299
+ fieldPaths: ['list', '2', 'ext'],
1300
+ newEntity: {},
1301
+ oldEntity: {
1302
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1303
+ ext: EXT_2
1304
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1305
+ ext: EXT_1
1306
+ }), defaultFile]
1307
+ },
1308
+ newValue: void 0,
1309
+ oldValue: ''
1310
+ });
1311
+ (0, _globals.expect)(onSizeChange).toHaveBeenNthCalledWith(4, {
1312
+ fieldPaths: ['list', '0', 'size'],
1313
+ newEntity: {},
1314
+ oldEntity: {
1315
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1316
+ ext: EXT_2
1317
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1318
+ ext: EXT_1
1319
+ }), defaultFile]
1320
+ },
1321
+ newValue: void 0,
1322
+ oldValue: 0
1323
+ });
1324
+ (0, _globals.expect)(onSizeChange).toHaveBeenNthCalledWith(5, {
1325
+ fieldPaths: ['list', '1', 'size'],
1326
+ newEntity: {},
1327
+ oldEntity: {
1328
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1329
+ ext: EXT_2
1330
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1331
+ ext: EXT_1
1332
+ }), defaultFile]
1333
+ },
1334
+ newValue: void 0,
1335
+ oldValue: 0
1336
+ });
1337
+ (0, _globals.expect)(onSizeChange).toHaveBeenNthCalledWith(6, {
1338
+ fieldPaths: ['list', '2', 'size'],
1339
+ newEntity: {},
1340
+ oldEntity: {
1341
+ list: [_objectSpread(_objectSpread({}, defaultFile), {}, {
1342
+ ext: EXT_2
1343
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1344
+ ext: EXT_1
1345
+ }), defaultFile]
1346
+ },
1347
+ newValue: void 0,
1348
+ oldValue: 0
1349
+ });
1350
+ });
1351
+ (0, _globals.test)('`options.watch` should work with field path of array length', function () {
1352
+ var onEntityLengthChange = _globals.jest.fn();
1353
+ var onListLengthChange = _globals.jest.fn();
1354
+ var lengthUseCase = function lengthUseCase() {
1355
+ return (0, _usecases.entityUseCase)();
1356
+ };
1357
+ var _renderHook25 = (0, _react.renderHook)(function () {
1358
+ return (0, _.useUseCase)([], lengthUseCase, {
1359
+ watch: {
1360
+ length: onEntityLengthChange,
1361
+ 'list.length': onListLengthChange
1362
+ }
1363
+ });
1364
+ }),
1365
+ result = _renderHook25.result;
1366
+ var cores = result.current;
1367
+ var _cores14 = (0, _slicedToArray2["default"])(cores, 2),
1368
+ setEntity = _cores14[1].setEntity;
1369
+ (0, _globals.expect)(onEntityLengthChange).toHaveBeenCalledTimes(0);
1370
+ (0, _globals.expect)(onListLengthChange).toHaveBeenCalledTimes(0);
1371
+ (0, _react.act)(function () {
1372
+ setEntity([{
1373
+ list: [defaultFile, defaultFile]
1374
+ }]);
1375
+ });
1376
+ (0, _globals.expect)(onEntityLengthChange).toHaveBeenCalledTimes(1);
1377
+ (0, _globals.expect)(onListLengthChange).toHaveBeenCalledTimes(1);
1378
+ (0, _globals.expect)(onEntityLengthChange).toHaveBeenCalledWith({
1379
+ fieldPaths: ['length'],
1380
+ newEntity: [{
1381
+ list: [defaultFile, defaultFile]
1382
+ }],
1383
+ oldEntity: [],
1384
+ newValue: 1,
1385
+ oldValue: 0
1386
+ });
1387
+ (0, _globals.expect)(onListLengthChange).toHaveBeenCalledWith({
1388
+ fieldPaths: ['0', 'list', 'length'],
1389
+ newEntity: [{
1390
+ list: [defaultFile, defaultFile]
1391
+ }],
1392
+ oldEntity: [],
1393
+ newValue: 2,
1394
+ oldValue: void 0
1395
+ });
1396
+ });
1397
+ (0, _globals.test)('`options.watch` should work with field path of nested array', function () {
1398
+ var onChange = _globals.jest.fn();
1399
+ var _renderHook26 = (0, _react.renderHook)(function () {
1400
+ return (0, _.useUseCase)({}, fieldPathUseCase, {
1401
+ watch: {
1402
+ 'nestedList.size': onChange
1403
+ }
1404
+ });
1405
+ }),
1406
+ result = _renderHook26.result;
1407
+ var cores = result.current;
1408
+ var _cores15 = (0, _slicedToArray2["default"])(cores, 2),
1409
+ setEntity = _cores15[1].setEntity;
1410
+ (0, _globals.expect)(onChange).toHaveBeenCalledTimes(0);
1411
+ (0, _react.act)(function () {
1412
+ setEntity({
1413
+ nestedList: [[[defaultFile]]]
1414
+ });
1415
+ });
1416
+ (0, _globals.expect)(onChange).toHaveBeenCalledTimes(1);
1417
+ (0, _globals.expect)(onChange).toHaveBeenCalledWith({
1418
+ fieldPaths: ['nestedList', '0', '0', '0', 'size'],
1419
+ newEntity: {
1420
+ nestedList: [[[defaultFile]]]
1421
+ },
1422
+ oldEntity: {},
1423
+ newValue: 0,
1424
+ oldValue: void 0
1425
+ });
1426
+ (0, _react.act)(function () {
1427
+ setEntity({
1428
+ nestedList: [[[_objectSpread(_objectSpread({}, defaultFile), {}, {
1429
+ size: 100
1430
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1431
+ size: 200
1432
+ })]], [[_objectSpread(_objectSpread({}, defaultFile), {}, {
1433
+ size: 300
1434
+ })]]]
1435
+ });
1436
+ });
1437
+ (0, _globals.expect)(onChange).toHaveBeenCalledTimes(4);
1438
+ (0, _globals.expect)(onChange).toHaveBeenNthCalledWith(2, {
1439
+ fieldPaths: ['nestedList', '0', '0', '0', 'size'],
1440
+ newEntity: {
1441
+ nestedList: [[[_objectSpread(_objectSpread({}, defaultFile), {}, {
1442
+ size: 100
1443
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1444
+ size: 200
1445
+ })]], [[_objectSpread(_objectSpread({}, defaultFile), {}, {
1446
+ size: 300
1447
+ })]]]
1448
+ },
1449
+ oldEntity: {
1450
+ nestedList: [[[defaultFile]]]
1451
+ },
1452
+ newValue: 100,
1453
+ oldValue: 0
1454
+ });
1455
+ (0, _globals.expect)(onChange).toHaveBeenNthCalledWith(3, {
1456
+ fieldPaths: ['nestedList', '0', '0', '1', 'size'],
1457
+ newEntity: {
1458
+ nestedList: [[[_objectSpread(_objectSpread({}, defaultFile), {}, {
1459
+ size: 100
1460
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1461
+ size: 200
1462
+ })]], [[_objectSpread(_objectSpread({}, defaultFile), {}, {
1463
+ size: 300
1464
+ })]]]
1465
+ },
1466
+ oldEntity: {
1467
+ nestedList: [[[defaultFile]]]
1468
+ },
1469
+ newValue: 200,
1470
+ oldValue: void 0
1471
+ });
1472
+ (0, _globals.expect)(onChange).toHaveBeenNthCalledWith(4, {
1473
+ fieldPaths: ['nestedList', '1', '0', '0', 'size'],
1474
+ newEntity: {
1475
+ nestedList: [[[_objectSpread(_objectSpread({}, defaultFile), {}, {
1476
+ size: 100
1477
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
1478
+ size: 200
1479
+ })]], [[_objectSpread(_objectSpread({}, defaultFile), {}, {
1480
+ size: 300
1481
+ })]]]
1482
+ },
1483
+ oldEntity: {
1484
+ nestedList: [[[defaultFile]]]
1485
+ },
1486
+ newValue: 300,
1487
+ oldValue: void 0
1488
+ });
1489
+ });
1490
+ (0, _globals.test)('`options.watch` should work with field path of object', function () {
1491
+ var onExtChange = _globals.jest.fn();
1492
+ var onSizeChange = _globals.jest.fn();
1493
+ var _renderHook27 = (0, _react.renderHook)(function () {
1494
+ return (0, _.useUseCase)({}, fieldPathUseCase, {
1495
+ watch: {
1496
+ 'obj.file.ext': onExtChange,
1497
+ 'obj.file.size': onSizeChange
1498
+ }
1499
+ });
1500
+ }),
1501
+ result = _renderHook27.result;
1502
+ var cores = result.current;
1503
+ var _cores16 = (0, _slicedToArray2["default"])(cores, 2),
1504
+ setEntity = _cores16[1].setEntity;
1505
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(0);
1506
+ (0, _react.act)(function () {
1507
+ setEntity({
1508
+ obj: {
1509
+ file: {
1510
+ ext: EXT_1
1511
+ }
1512
+ }
1513
+ });
1514
+ });
1515
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(1);
1516
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(0);
1517
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledWith({
1518
+ fieldPaths: ['obj', 'file', 'ext'],
1519
+ newEntity: {
1520
+ obj: {
1521
+ file: {
1522
+ ext: EXT_1
1523
+ }
1524
+ }
1525
+ },
1526
+ oldEntity: {},
1527
+ newValue: EXT_1,
1528
+ oldValue: void 0
1529
+ });
1530
+ (0, _react.act)(function () {
1531
+ setEntity(function () {
1532
+ return {};
1533
+ });
1534
+ });
1535
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(2);
1536
+ (0, _globals.expect)(onSizeChange).toHaveBeenCalledTimes(0);
1537
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledWith({
1538
+ fieldPaths: ['obj', 'file', 'ext'],
1539
+ newEntity: {},
1540
+ oldEntity: {
1541
+ obj: {
1542
+ file: {
1543
+ ext: EXT_1
1544
+ }
1545
+ }
1546
+ },
1547
+ newValue: void 0,
1548
+ oldValue: EXT_1
1549
+ });
1550
+ });
999
1551
  });
1000
1552
  });