@mic-rexjs/usecases-react 2.3.1 → 2.3.2

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.
@@ -606,8 +606,86 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
606
606
  ext: EXT_1
607
607
  }), defaultFile);
608
608
  });
609
- (0, _globals.test)('`options.options` should override rest options', function () {
609
+ (0, _globals.test)('`options.onChange` should be updated after `deps` changed', function () {
610
+ var onChange1 = _globals.jest.fn();
611
+ var onChange2 = _globals.jest.fn();
612
+ var onChange = onChange1;
613
+ var deps = [1];
610
614
  var _renderHook13 = (0, _react.renderHook)(function () {
615
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
616
+ onChange: onChange
617
+ }, deps);
618
+ }),
619
+ result = _renderHook13.result;
620
+ var cores = result.current;
621
+ var _cores11 = (0, _slicedToArray2["default"])(cores, 2),
622
+ reducers = _cores11[1];
623
+ var setPath = reducers.setPath;
624
+ (0, _globals.expect)(onChange1).toHaveBeenCalledTimes(0);
625
+ (0, _react.act)(function () {
626
+ setPath(PATH_1);
627
+ deps = [2];
628
+ onChange = onChange2;
629
+ });
630
+ (0, _globals.expect)(onChange2).toHaveBeenCalledTimes(0);
631
+ (0, _globals.expect)(onChange1).toHaveBeenCalledTimes(1);
632
+ (0, _globals.expect)(onChange1).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
633
+ path: PATH_1,
634
+ ext: EXT_1
635
+ }), defaultFile);
636
+ (0, _react.act)(function () {
637
+ setPath(PATH_2);
638
+ });
639
+ (0, _globals.expect)(onChange1).toHaveBeenCalledTimes(1);
640
+ (0, _globals.expect)(onChange2).toHaveBeenCalledTimes(1);
641
+ (0, _globals.expect)(onChange2).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
642
+ path: PATH_2,
643
+ ext: EXT_2
644
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
645
+ path: PATH_1,
646
+ ext: EXT_1
647
+ }));
648
+ });
649
+ (0, _globals.test)('`options.onChange` should not be updated if `deps` has not changed', function () {
650
+ var onChange1 = _globals.jest.fn();
651
+ var onChange2 = _globals.jest.fn();
652
+ var onChange = onChange1;
653
+ var _renderHook14 = (0, _react.renderHook)(function () {
654
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
655
+ onChange: onChange
656
+ }, []);
657
+ }),
658
+ result = _renderHook14.result;
659
+ var cores = result.current;
660
+ var _cores12 = (0, _slicedToArray2["default"])(cores, 2),
661
+ reducers = _cores12[1];
662
+ var setPath = reducers.setPath;
663
+ (0, _globals.expect)(onChange1).toHaveBeenCalledTimes(0);
664
+ (0, _react.act)(function () {
665
+ setPath(PATH_1);
666
+ onChange = onChange2;
667
+ });
668
+ (0, _globals.expect)(onChange2).toHaveBeenCalledTimes(0);
669
+ (0, _globals.expect)(onChange1).toHaveBeenCalledTimes(1);
670
+ (0, _globals.expect)(onChange1).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
671
+ path: PATH_1,
672
+ ext: EXT_1
673
+ }), defaultFile);
674
+ (0, _react.act)(function () {
675
+ setPath(PATH_2);
676
+ });
677
+ (0, _globals.expect)(onChange2).toHaveBeenCalledTimes(0);
678
+ (0, _globals.expect)(onChange1).toHaveBeenCalledTimes(2);
679
+ (0, _globals.expect)(onChange1).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
680
+ path: PATH_2,
681
+ ext: EXT_2
682
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
683
+ path: PATH_1,
684
+ ext: EXT_1
685
+ }));
686
+ });
687
+ (0, _globals.test)('`options.options` should override rest options', function () {
688
+ var _renderHook15 = (0, _react.renderHook)(function () {
611
689
  return (0, _.useUseCase)(defaultFile, fileUseCase, {
612
690
  pathPrefix: 'xyz/',
613
691
  options: {
@@ -615,11 +693,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
615
693
  }
616
694
  });
617
695
  }),
618
- result = _renderHook13.result;
696
+ result = _renderHook15.result;
619
697
  var cores = result.current;
620
- var _cores11 = (0, _slicedToArray2["default"])(cores, 2),
621
- path = _cores11[0].path,
622
- reducers = _cores11[1];
698
+ var _cores13 = (0, _slicedToArray2["default"])(cores, 2),
699
+ path = _cores13[0].path,
700
+ reducers = _cores13[1];
623
701
  var setPath = reducers.setPath;
624
702
  (0, _globals.expect)(path).toBe('');
625
703
  (0, _react.act)(function () {
@@ -630,7 +708,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
630
708
  (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
631
709
  var onUpdate = _globals.jest.fn();
632
710
  var onDeepUpdate = _globals.jest.fn();
633
- var _renderHook14 = (0, _react.renderHook)(function () {
711
+ var _renderHook16 = (0, _react.renderHook)(function () {
634
712
  var _useState = (0, _react2.useState)('user/'),
635
713
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
636
714
  pathPrefix = _useState2[0],
@@ -646,7 +724,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
646
724
  }, [context]);
647
725
  return setPathPrefix;
648
726
  }),
649
- result = _renderHook14.result;
727
+ result = _renderHook16.result;
650
728
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
651
729
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
652
730
  (0, _react.act)(function () {
@@ -658,7 +736,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
658
736
  (0, _globals.test)('when `entity` change, it should trigger watchers', function () {
659
737
  var onPathChange = _globals.jest.fn();
660
738
  var onSizeChange = _globals.jest.fn();
661
- var _renderHook15 = (0, _react.renderHook)(function () {
739
+ var _renderHook17 = (0, _react.renderHook)(function () {
662
740
  return (0, _.useUseCase)(defaultFile, fileUseCase, {
663
741
  watch: {
664
742
  path: onPathChange,
@@ -666,10 +744,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
666
744
  }
667
745
  });
668
746
  }),
669
- result = _renderHook15.result;
747
+ result = _renderHook17.result;
670
748
  var cores = result.current;
671
- var _cores12 = (0, _slicedToArray2["default"])(cores, 2),
672
- setPath = _cores12[1].setPath;
749
+ var _cores14 = (0, _slicedToArray2["default"])(cores, 2),
750
+ setPath = _cores14[1].setPath;
673
751
  (0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(0);
674
752
  (0, _react.act)(function () {
675
753
  setPath(PATH_1);
@@ -687,64 +765,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
687
765
  oldValue: ''
688
766
  });
689
767
  });
690
- (0, _globals.test)('watcher should be updated after `entity` change', function () {
691
- var onPathChange1 = _globals.jest.fn();
692
- var onPathChange2 = _globals.jest.fn();
693
- var onPathChange = onPathChange1;
694
- var _renderHook16 = (0, _react.renderHook)(function () {
695
- return (0, _.useUseCase)(defaultFile, fileUseCase, {
696
- watch: {
697
- path: onPathChange
698
- }
699
- });
700
- }),
701
- result = _renderHook16.result;
702
- var cores = result.current;
703
- var _cores13 = (0, _slicedToArray2["default"])(cores, 2),
704
- _cores13$ = _cores13[1],
705
- setPath = _cores13$.setPath,
706
- setEntity = _cores13$.setEntity;
707
- onPathChange = onPathChange2;
708
- (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(0);
709
- (0, _react.act)(function () {
710
- setPath(PATH_1);
711
- setEntity({
712
- size: 5000
713
- });
714
- });
715
- (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(1);
716
- (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith({
717
- fieldPaths: ['path'],
718
- newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
719
- path: PATH_1,
720
- ext: EXT_1
721
- }),
722
- oldEntity: defaultFile,
723
- newValue: PATH_1,
724
- oldValue: ''
725
- });
726
- (0, _react.act)(function () {
727
- setPath('');
728
- });
729
- (0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(1);
730
- (0, _globals.expect)(onPathChange2).toHaveBeenLastCalledWith({
731
- fieldPaths: ['path'],
732
- newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
733
- size: 5000
734
- }),
735
- oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
736
- path: PATH_1,
737
- size: 5000,
738
- ext: EXT_1
739
- }),
740
- newValue: '',
741
- oldValue: PATH_1
742
- });
743
- });
744
768
  (0, _globals.test)('when `deps` has changed, it should trigger update', function () {
745
769
  var onUpdate = _globals.jest.fn();
746
770
  var onDeepUpdate = _globals.jest.fn();
747
- var _renderHook17 = (0, _react.renderHook)(function () {
771
+ var _renderHook18 = (0, _react.renderHook)(function () {
748
772
  var _useState3 = (0, _react2.useState)('user/'),
749
773
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
750
774
  pathPrefix = _useState4[0],
@@ -760,7 +784,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
760
784
  }, [context]);
761
785
  return setPathPrefix;
762
786
  }),
763
- result = _renderHook17.result;
787
+ result = _renderHook18.result;
764
788
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
765
789
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
766
790
  (0, _react.act)(function () {
@@ -772,7 +796,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
772
796
  (0, _globals.test)('empty `deps` should not trigger update', function () {
773
797
  var onUpdate = _globals.jest.fn();
774
798
  var onDeepUpdate = _globals.jest.fn();
775
- var _renderHook18 = (0, _react.renderHook)(function () {
799
+ var _renderHook19 = (0, _react.renderHook)(function () {
776
800
  var _useState5 = (0, _react2.useState)('user/'),
777
801
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
778
802
  pathPrefix = _useState6[0],
@@ -788,7 +812,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
788
812
  }, [context]);
789
813
  return setPathPrefix;
790
814
  }),
791
- result = _renderHook18.result;
815
+ result = _renderHook19.result;
792
816
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
793
817
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
794
818
  (0, _react.act)(function () {
@@ -797,139 +821,122 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
797
821
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
798
822
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
799
823
  });
800
- (0, _globals.test)('`options.watch` should be trigger at child elements', function () {
801
- var onFirstExtChange = _globals.jest.fn();
802
- var onSecondExtChange = _globals.jest.fn();
803
- var onParentExtChange = _globals.jest.fn();
804
- var onExtChange = onFirstExtChange;
805
- var firstButtonText = 'first button';
806
- var secondButtonText = 'second button';
807
- var A = function A() {
808
- (0, _.useUseCase)(fileUseCase, {
809
- watch: {
810
- ext: onExtChange
811
- }
812
- });
813
- return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
814
- };
815
- var B = function B() {
816
- var _useUseCase12 = (0, _.useUseCase)(defaultFile, fileUseCase, {
824
+ (0, _globals.test)('`options.watch` should be updated after `deps` changed', function () {
825
+ var onPathChange1 = _globals.jest.fn();
826
+ var onPathChange2 = _globals.jest.fn();
827
+ var onPathChange = onPathChange1;
828
+ var deps = [1];
829
+ var _renderHook20 = (0, _react.renderHook)(function () {
830
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
817
831
  watch: {
818
- ext: onParentExtChange
832
+ path: onPathChange
819
833
  }
820
- }),
821
- _useUseCase13 = (0, _slicedToArray2["default"])(_useUseCase12, 3),
822
- setPath = _useUseCase13[1].setPath,
823
- Provider = _useUseCase13[2];
824
- var onFirstClick = function onFirstClick() {
825
- setPath(PATH_1);
826
- onExtChange = onSecondExtChange;
827
- };
828
- var onSecondClick = function onSecondClick() {
829
- setPath('');
830
- };
831
- return (0, _jsxRuntime.jsxs)(Provider, {
832
- children: [(0, _jsxRuntime.jsx)(A, {}), (0, _jsxRuntime.jsx)("button", {
833
- onClick: onFirstClick,
834
- children: firstButtonText
835
- }), (0, _jsxRuntime.jsx)("button", {
836
- onClick: onSecondClick,
837
- children: secondButtonText
838
- })]
834
+ }, deps);
835
+ }),
836
+ result = _renderHook20.result;
837
+ var cores = result.current;
838
+ var _cores15 = (0, _slicedToArray2["default"])(cores, 2),
839
+ _cores15$ = _cores15[1],
840
+ setPath = _cores15$.setPath,
841
+ setEntity = _cores15$.setEntity;
842
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(0);
843
+ (0, _react.act)(function () {
844
+ setPath(PATH_1);
845
+ setEntity({
846
+ size: 5000
839
847
  });
840
- };
841
- (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
842
- (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(0);
843
- _react.fireEvent.click(_react.screen.getByText(firstButtonText));
844
- (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
845
- (0, _globals.expect)(onFirstExtChange).toHaveBeenLastCalledWith({
846
- fieldPaths: ['ext'],
848
+ deps = [2];
849
+ onPathChange = onPathChange2;
850
+ });
851
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(1);
852
+ (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith({
853
+ fieldPaths: ['path'],
847
854
  newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
848
- ext: EXT_1,
849
- path: PATH_1
855
+ path: PATH_1,
856
+ ext: EXT_1
850
857
  }),
851
858
  oldEntity: defaultFile,
852
- newValue: EXT_1,
859
+ newValue: PATH_1,
853
860
  oldValue: ''
854
861
  });
855
- (0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(1);
856
- (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(0);
857
- _react.fireEvent.click(_react.screen.getByText(secondButtonText));
858
- (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(1);
859
- (0, _globals.expect)(onSecondExtChange).toHaveBeenLastCalledWith({
860
- fieldPaths: ['ext'],
861
- newEntity: defaultFile,
862
+ (0, _react.act)(function () {
863
+ setPath('');
864
+ });
865
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(1);
866
+ (0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(1);
867
+ (0, _globals.expect)(onPathChange2).toHaveBeenLastCalledWith({
868
+ fieldPaths: ['path'],
869
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
870
+ size: 5000
871
+ }),
862
872
  oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
873
+ path: PATH_1,
863
874
  ext: EXT_1,
864
- path: PATH_1
875
+ size: 5000
865
876
  }),
866
877
  newValue: '',
867
- oldValue: EXT_1
878
+ oldValue: PATH_1
868
879
  });
869
- (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
870
- (0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(2);
871
880
  });
872
- (0, _globals.test)('`options.watch` should be trigger in orders', function () {
873
- var changeTimes = 0;
874
- var updateChangeTimes = function updateChangeTimes(e) {
875
- void e;
876
- return ++changeTimes;
877
- };
878
- var onChangeA = _globals.jest.fn(updateChangeTimes);
879
- var onChangeB = _globals.jest.fn(updateChangeTimes);
880
- var onChangeC = _globals.jest.fn(updateChangeTimes);
881
- var buttonText = 'my button';
882
- var A = function A(_ref7) {
883
- var children = _ref7.children;
884
- (0, _.useUseCase)(fileUseCase, {
885
- watch: {
886
- ext: onChangeA
887
- }
888
- });
889
- return (0, _jsxRuntime.jsx)(_react2.Fragment, {
890
- children: children
891
- });
892
- };
893
- var B = function B() {
894
- (0, _.useUseCase)(fileUseCase, {
895
- watch: {
896
- ext: onChangeB
897
- }
898
- });
899
- return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
900
- };
901
- var C = function C() {
902
- var _useUseCase14 = (0, _.useUseCase)(defaultFile, fileUseCase, {
881
+ (0, _globals.test)('`options.watch` should not be updated if `deps` has not changed', function () {
882
+ var onPathChange1 = _globals.jest.fn();
883
+ var onPathChange2 = _globals.jest.fn();
884
+ var onPathChange = onPathChange1;
885
+ var _renderHook21 = (0, _react.renderHook)(function () {
886
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
903
887
  watch: {
904
- ext: onChangeC
888
+ path: onPathChange
905
889
  }
906
- }),
907
- _useUseCase15 = (0, _slicedToArray2["default"])(_useUseCase14, 3),
908
- setPath = _useUseCase15[1].setPath,
909
- Provider = _useUseCase15[2];
910
- var onFirstClick = function onFirstClick() {
911
- setPath(PATH_1);
912
- };
913
- return (0, _jsxRuntime.jsxs)(Provider, {
914
- children: [(0, _jsxRuntime.jsx)(A, {
915
- children: (0, _jsxRuntime.jsx)(B, {})
916
- }), (0, _jsxRuntime.jsx)("button", {
917
- onClick: onFirstClick,
918
- children: buttonText
919
- })]
890
+ }, []);
891
+ }),
892
+ result = _renderHook21.result;
893
+ var cores = result.current;
894
+ var _cores16 = (0, _slicedToArray2["default"])(cores, 2),
895
+ _cores16$ = _cores16[1],
896
+ setPath = _cores16$.setPath,
897
+ setEntity = _cores16$.setEntity;
898
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(0);
899
+ (0, _react.act)(function () {
900
+ setPath(PATH_1);
901
+ setEntity({
902
+ size: 5000
920
903
  });
921
- };
922
- (0, _react.render)((0, _jsxRuntime.jsx)(C, {}));
923
- (0, _globals.expect)(changeTimes).toBe(0);
924
- _react.fireEvent.click(_react.screen.getByText(buttonText));
925
- (0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
926
- (0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
927
- (0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
904
+ onPathChange = onPathChange2;
905
+ });
906
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(1);
907
+ (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith({
908
+ fieldPaths: ['path'],
909
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
910
+ path: PATH_1,
911
+ ext: EXT_1
912
+ }),
913
+ oldEntity: defaultFile,
914
+ newValue: PATH_1,
915
+ oldValue: ''
916
+ });
917
+ (0, _react.act)(function () {
918
+ setPath('');
919
+ });
920
+ (0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(0);
921
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(2);
922
+ (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith({
923
+ fieldPaths: ['path'],
924
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
925
+ size: 5000
926
+ }),
927
+ oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
928
+ path: PATH_1,
929
+ ext: EXT_1,
930
+ size: 5000
931
+ }),
932
+ newValue: '',
933
+ oldValue: PATH_1
934
+ });
928
935
  });
929
936
  (0, _globals.test)('`options.watch` should work with array field path of array', function () {
930
937
  var onExtChange = _globals.jest.fn();
931
938
  var onSizeChange = _globals.jest.fn();
932
- var _renderHook19 = (0, _react.renderHook)(function () {
939
+ var _renderHook22 = (0, _react.renderHook)(function () {
933
940
  return (0, _.useUseCase)({}, fieldPathUseCase, {
934
941
  watch: {
935
942
  'list.ext': onExtChange,
@@ -937,10 +944,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
937
944
  }
938
945
  });
939
946
  }),
940
- result = _renderHook19.result;
947
+ result = _renderHook22.result;
941
948
  var cores = result.current;
942
- var _cores14 = (0, _slicedToArray2["default"])(cores, 2),
943
- setEntity = _cores14[1].setEntity;
949
+ var _cores17 = (0, _slicedToArray2["default"])(cores, 2),
950
+ setEntity = _cores17[1].setEntity;
944
951
  (0, _react.act)(function () {
945
952
  setEntity({
946
953
  list: [defaultFile]
@@ -1225,7 +1232,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1225
1232
  var lengthUseCase = function lengthUseCase() {
1226
1233
  return (0, _usecases.entityUseCase)();
1227
1234
  };
1228
- var _renderHook20 = (0, _react.renderHook)(function () {
1235
+ var _renderHook23 = (0, _react.renderHook)(function () {
1229
1236
  return (0, _.useUseCase)([], lengthUseCase, {
1230
1237
  watch: {
1231
1238
  length: onEntityLengthChange,
@@ -1233,10 +1240,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1233
1240
  }
1234
1241
  });
1235
1242
  }),
1236
- result = _renderHook20.result;
1243
+ result = _renderHook23.result;
1237
1244
  var cores = result.current;
1238
- var _cores15 = (0, _slicedToArray2["default"])(cores, 2),
1239
- setEntity = _cores15[1].setEntity;
1245
+ var _cores18 = (0, _slicedToArray2["default"])(cores, 2),
1246
+ setEntity = _cores18[1].setEntity;
1240
1247
  (0, _globals.expect)(onEntityLengthChange).toHaveBeenCalledTimes(0);
1241
1248
  (0, _globals.expect)(onListLengthChange).toHaveBeenCalledTimes(0);
1242
1249
  (0, _react.act)(function () {
@@ -1267,17 +1274,17 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1267
1274
  });
1268
1275
  (0, _globals.test)('`options.watch` should work with field path of nested array', function () {
1269
1276
  var onChange = _globals.jest.fn();
1270
- var _renderHook21 = (0, _react.renderHook)(function () {
1277
+ var _renderHook24 = (0, _react.renderHook)(function () {
1271
1278
  return (0, _.useUseCase)({}, fieldPathUseCase, {
1272
1279
  watch: {
1273
1280
  'nestedList.size': onChange
1274
1281
  }
1275
1282
  });
1276
1283
  }),
1277
- result = _renderHook21.result;
1284
+ result = _renderHook24.result;
1278
1285
  var cores = result.current;
1279
- var _cores16 = (0, _slicedToArray2["default"])(cores, 2),
1280
- setEntity = _cores16[1].setEntity;
1286
+ var _cores19 = (0, _slicedToArray2["default"])(cores, 2),
1287
+ setEntity = _cores19[1].setEntity;
1281
1288
  (0, _globals.expect)(onChange).toHaveBeenCalledTimes(0);
1282
1289
  (0, _react.act)(function () {
1283
1290
  setEntity({
@@ -1361,7 +1368,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1361
1368
  (0, _globals.test)('`options.watch` should work with field path of object', function () {
1362
1369
  var onExtChange = _globals.jest.fn();
1363
1370
  var onSizeChange = _globals.jest.fn();
1364
- var _renderHook22 = (0, _react.renderHook)(function () {
1371
+ var _renderHook25 = (0, _react.renderHook)(function () {
1365
1372
  return (0, _.useUseCase)({}, fieldPathUseCase, {
1366
1373
  watch: {
1367
1374
  'obj.file.ext': onExtChange,
@@ -1369,10 +1376,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1369
1376
  }
1370
1377
  });
1371
1378
  }),
1372
- result = _renderHook22.result;
1379
+ result = _renderHook25.result;
1373
1380
  var cores = result.current;
1374
- var _cores17 = (0, _slicedToArray2["default"])(cores, 2),
1375
- setEntity = _cores17[1].setEntity;
1381
+ var _cores20 = (0, _slicedToArray2["default"])(cores, 2),
1382
+ setEntity = _cores20[1].setEntity;
1376
1383
  (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(0);
1377
1384
  (0, _react.act)(function () {
1378
1385
  setEntity({
@@ -1433,15 +1440,15 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1433
1440
  return (0, _usecases.objectUseCase)();
1434
1441
  };
1435
1442
  var TestChildComponent = function TestChildComponent() {
1436
- var _useUseCase16 = (0, _.useUseCase)(numberUseCase),
1443
+ var _useUseCase12 = (0, _.useUseCase)(numberUseCase),
1444
+ _useUseCase13 = (0, _slicedToArray2["default"])(_useUseCase12, 1),
1445
+ numberValue = _useUseCase13[0];
1446
+ var _useUseCase14 = (0, _.useUseCase)(stringUseCase),
1447
+ _useUseCase15 = (0, _slicedToArray2["default"])(_useUseCase14, 1),
1448
+ stringValue = _useUseCase15[0];
1449
+ var _useUseCase16 = (0, _.useUseCase)(booleanUseCase),
1437
1450
  _useUseCase17 = (0, _slicedToArray2["default"])(_useUseCase16, 1),
1438
- numberValue = _useUseCase17[0];
1439
- var _useUseCase18 = (0, _.useUseCase)(stringUseCase),
1440
- _useUseCase19 = (0, _slicedToArray2["default"])(_useUseCase18, 1),
1441
- stringValue = _useUseCase19[0];
1442
- var _useUseCase20 = (0, _.useUseCase)(booleanUseCase),
1443
- _useUseCase21 = (0, _slicedToArray2["default"])(_useUseCase20, 1),
1444
- booleanValue = _useUseCase21[0];
1451
+ booleanValue = _useUseCase17[0];
1445
1452
  (0, _ahooks.useMount)(function () {
1446
1453
  onNumberMount(numberValue);
1447
1454
  onStringMount(stringValue);
@@ -1450,15 +1457,15 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1450
1457
  return null;
1451
1458
  };
1452
1459
  var TestParentComponent = function TestParentComponent() {
1453
- var _useUseCase22 = (0, _.useUseCase)(11, numberUseCase),
1460
+ var _useUseCase18 = (0, _.useUseCase)(11, numberUseCase),
1461
+ _useUseCase19 = (0, _slicedToArray2["default"])(_useUseCase18, 3),
1462
+ NumberProvider = _useUseCase19[2];
1463
+ var _useUseCase20 = (0, _.useUseCase)('hello', stringUseCase),
1464
+ _useUseCase21 = (0, _slicedToArray2["default"])(_useUseCase20, 3),
1465
+ StringProvider = _useUseCase21[2];
1466
+ var _useUseCase22 = (0, _.useUseCase)(true, booleanUseCase),
1454
1467
  _useUseCase23 = (0, _slicedToArray2["default"])(_useUseCase22, 3),
1455
- NumberProvider = _useUseCase23[2];
1456
- var _useUseCase24 = (0, _.useUseCase)('hello', stringUseCase),
1457
- _useUseCase25 = (0, _slicedToArray2["default"])(_useUseCase24, 3),
1458
- StringProvider = _useUseCase25[2];
1459
- var _useUseCase26 = (0, _.useUseCase)(true, booleanUseCase),
1460
- _useUseCase27 = (0, _slicedToArray2["default"])(_useUseCase26, 3),
1461
- BooleanProvider = _useUseCase27[2];
1468
+ BooleanProvider = _useUseCase23[2];
1462
1469
  return (0, _jsxRuntime.jsx)(NumberProvider, {
1463
1470
  "with": [StringProvider, BooleanProvider],
1464
1471
  children: (0, _jsxRuntime.jsx)(TestChildComponent, {})
@@ -1471,29 +1478,29 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1471
1478
  });
1472
1479
  });
1473
1480
  (0, _globals.describe)('`useUseCase` should work the same as `ModeCoreCollectionHook`', function () {
1474
- _globals.test.each([_UseCaseModes.UseCaseModes.Normal, _UseCaseModes.UseCaseModes.Stateless])('check context type', function (mode) {
1475
- var _renderHook23 = (0, _react.renderHook)(function () {
1481
+ _globals.test.each([_UseCaseModes.UseCaseModes.Normal, _UseCaseModes.UseCaseModes.Stateless])('[mode=%s]: check context type', function (mode) {
1482
+ var _renderHook26 = (0, _react.renderHook)(function () {
1476
1483
  return (0, _.useUseCase)(defaultFile, fileUseCase, mode);
1477
1484
  }),
1478
- result = _renderHook23.result;
1485
+ result = _renderHook26.result;
1479
1486
  var cores = result.current;
1480
1487
  (0, _globals.expect)(Array.isArray(cores)).toBe(true);
1481
1488
  (0, _globals.expect)(cores).toHaveLength(3);
1482
1489
  });
1483
1490
  (0, _globals.test)('stateless mode should not generate new reducers when `yeild entity`', function () {
1484
1491
  var onUpdate = _globals.jest.fn();
1485
- var _renderHook24 = (0, _react.renderHook)(function () {
1492
+ var _renderHook27 = (0, _react.renderHook)(function () {
1486
1493
  var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
1487
1494
  (0, _ahooks.useUpdateEffect)(function () {
1488
1495
  onUpdate();
1489
1496
  });
1490
1497
  return (0, _.useUseCase)(file, fileUseCase, _UseCaseModes.UseCaseModes.Stateless);
1491
1498
  }),
1492
- result = _renderHook24.result,
1493
- rerender = _renderHook24.rerender;
1499
+ result = _renderHook27.result,
1500
+ rerender = _renderHook27.rerender;
1494
1501
  var cores = result.current;
1495
- var _cores18 = (0, _slicedToArray2["default"])(cores, 2),
1496
- setPath = _cores18[1].setPath;
1502
+ var _cores21 = (0, _slicedToArray2["default"])(cores, 2),
1503
+ setPath = _cores21[1].setPath;
1497
1504
  setPath(PATH_1);
1498
1505
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1499
1506
  (0, _globals.expect)(result.current[0].path).toBe('');
@@ -1506,16 +1513,16 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1506
1513
  });
1507
1514
  (0, _globals.test)('stateless mode should not trigger update when after `yield entity`', function () {
1508
1515
  var onUpdate = _globals.jest.fn();
1509
- var _renderHook25 = (0, _react.renderHook)(function () {
1516
+ var _renderHook28 = (0, _react.renderHook)(function () {
1510
1517
  (0, _ahooks.useUpdateEffect)(function () {
1511
1518
  onUpdate();
1512
1519
  });
1513
1520
  return (0, _.useUseCase)(defaultFile, fileUseCase, _UseCaseModes.UseCaseModes.Stateless);
1514
1521
  }),
1515
- result = _renderHook25.result;
1522
+ result = _renderHook28.result;
1516
1523
  var cores = result.current;
1517
- var _cores19 = (0, _slicedToArray2["default"])(cores, 2),
1518
- reducers = _cores19[1];
1524
+ var _cores22 = (0, _slicedToArray2["default"])(cores, 2),
1525
+ reducers = _cores22[1];
1519
1526
  var setPath = reducers.setPath;
1520
1527
  (0, _react.act)(function () {
1521
1528
  setPath(PATH_1);
@@ -1590,9 +1597,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1590
1597
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1591
1598
  };
1592
1599
  var B = function B() {
1593
- var _useUseCase28 = (0, _.useUseCase)(defaultFile, mockUseCase),
1594
- _useUseCase29 = (0, _slicedToArray2["default"])(_useUseCase28, 3),
1595
- Provider = _useUseCase29[2];
1600
+ var _useUseCase24 = (0, _.useUseCase)(defaultFile, mockUseCase),
1601
+ _useUseCase25 = (0, _slicedToArray2["default"])(_useUseCase24, 3),
1602
+ Provider = _useUseCase25[2];
1596
1603
  return (0, _jsxRuntime.jsx)(Provider, {
1597
1604
  children: (0, _jsxRuntime.jsx)(A, {})
1598
1605
  });
@@ -1612,9 +1619,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1612
1619
  });
1613
1620
  };
1614
1621
  var A = function A() {
1615
- var _useUseCase30 = (0, _.useUseCase)(stringUseCase),
1616
- _useUseCase31 = (0, _slicedToArray2["default"])(_useUseCase30, 2),
1617
- add = _useUseCase31[1].add;
1622
+ var _useUseCase26 = (0, _.useUseCase)(stringUseCase),
1623
+ _useUseCase27 = (0, _slicedToArray2["default"])(_useUseCase26, 2),
1624
+ add = _useUseCase27[1].add;
1618
1625
  var update = (0, _ahooks.useUpdate)();
1619
1626
  var onClick = function onClick() {
1620
1627
  update();
@@ -1626,9 +1633,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1626
1633
  });
1627
1634
  };
1628
1635
  var B = function B() {
1629
- var _useUseCase32 = (0, _.useUseCase)('', stringUseCase),
1630
- _useUseCase33 = (0, _slicedToArray2["default"])(_useUseCase32, 3),
1631
- Provider = _useUseCase33[2];
1636
+ var _useUseCase28 = (0, _.useUseCase)('', stringUseCase),
1637
+ _useUseCase29 = (0, _slicedToArray2["default"])(_useUseCase28, 3),
1638
+ Provider = _useUseCase29[2];
1632
1639
  return (0, _jsxRuntime.jsx)(Provider, {
1633
1640
  children: (0, _jsxRuntime.jsx)(A, {})
1634
1641
  });
@@ -1652,9 +1659,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1652
1659
  });
1653
1660
  };
1654
1661
  var A = function A() {
1655
- var _useUseCase34 = (0, _.useUseCase)(stringUseCase),
1656
- _useUseCase35 = (0, _slicedToArray2["default"])(_useUseCase34, 2),
1657
- add = _useUseCase35[1].add;
1662
+ var _useUseCase30 = (0, _.useUseCase)(stringUseCase),
1663
+ _useUseCase31 = (0, _slicedToArray2["default"])(_useUseCase30, 2),
1664
+ add = _useUseCase31[1].add;
1658
1665
  var onClick = function onClick() {
1659
1666
  add('x');
1660
1667
  };
@@ -1668,9 +1675,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1668
1675
  });
1669
1676
  };
1670
1677
  var B = function B() {
1671
- var _useUseCase36 = (0, _.useUseCase)('', stringUseCase),
1672
- _useUseCase37 = (0, _slicedToArray2["default"])(_useUseCase36, 3),
1673
- Provider = _useUseCase37[2];
1678
+ var _useUseCase32 = (0, _.useUseCase)('', stringUseCase),
1679
+ _useUseCase33 = (0, _slicedToArray2["default"])(_useUseCase32, 3),
1680
+ Provider = _useUseCase33[2];
1674
1681
  return (0, _jsxRuntime.jsx)(Provider, {
1675
1682
  children: (0, _jsxRuntime.jsx)(A, {})
1676
1683
  });
@@ -1698,11 +1705,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1698
1705
  });
1699
1706
  };
1700
1707
  var A = function A() {
1701
- var _useUseCase38 = (0, _.useUseCase)(stringUseCase),
1702
- _useUseCase39 = (0, _slicedToArray2["default"])(_useUseCase38, 2),
1703
- _useUseCase39$ = _useUseCase39[1],
1704
- add = _useUseCase39$.add,
1705
- setEntity = _useUseCase39$.setEntity;
1708
+ var _useUseCase34 = (0, _.useUseCase)(stringUseCase),
1709
+ _useUseCase35 = (0, _slicedToArray2["default"])(_useUseCase34, 2),
1710
+ _useUseCase35$ = _useUseCase35[1],
1711
+ add = _useUseCase35$.add,
1712
+ setEntity = _useUseCase35$.setEntity;
1706
1713
  var update = (0, _ahooks.useUpdate)();
1707
1714
  add(addedText);
1708
1715
  var onSet = function onSet() {
@@ -1722,9 +1729,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1722
1729
  });
1723
1730
  };
1724
1731
  var B = function B() {
1725
- var _useUseCase40 = (0, _.useUseCase)('', stringUseCase),
1726
- _useUseCase41 = (0, _slicedToArray2["default"])(_useUseCase40, 3),
1727
- Provider = _useUseCase41[2];
1732
+ var _useUseCase36 = (0, _.useUseCase)('', stringUseCase),
1733
+ _useUseCase37 = (0, _slicedToArray2["default"])(_useUseCase36, 3),
1734
+ Provider = _useUseCase37[2];
1728
1735
  return (0, _jsxRuntime.jsx)(Provider, {
1729
1736
  children: (0, _jsxRuntime.jsx)(A, {})
1730
1737
  });
@@ -1744,29 +1751,42 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1744
1751
  _react.fireEvent.click(_react.screen.getByText(updateButtonText));
1745
1752
  (0, _globals.expect)(addReducer).toHaveBeenCalledTimes(3);
1746
1753
  });
1747
- (0, _globals.test)('`options.onChange` event should be trigger at child elements', function () {
1748
- var onFirstChange = _globals.jest.fn();
1749
- var onSecondChange = _globals.jest.fn();
1750
- var onParentPathChange = _globals.jest.fn();
1754
+ _globals.test.each([_UseCaseModes.UseCaseModes.Normal, _UseCaseModes.UseCaseModes.Stateless])('[mode=%s]: `options.watch` should be updated in child element after `deps` changed', function (mode) {
1755
+ var onFirstExtChange = _globals.jest.fn();
1756
+ var onSecondExtChange = _globals.jest.fn();
1757
+ var onExtChange = onFirstExtChange;
1758
+ var deps = [1];
1751
1759
  var firstButtonText = 'first button';
1752
1760
  var secondButtonText = 'second button';
1753
- var onChange = onFirstChange;
1754
1761
  var A = function A() {
1755
1762
  (0, _.useUseCase)(fileUseCase, {
1756
- onChange: onChange
1757
- });
1763
+ watch: {
1764
+ ext: onExtChange
1765
+ }
1766
+ }, deps);
1758
1767
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1759
1768
  };
1760
1769
  var B = function B() {
1761
- var _useUseCase42 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1762
- onChange: onParentPathChange
1770
+ var _useState7 = (0, _react2.useState)(defaultFile),
1771
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
1772
+ file = _useState8[0],
1773
+ setFile = _useState8[1];
1774
+ var _useUseCase38 = (0, _.useUseCase)(file, fileUseCase, mode, {
1775
+ onChange: function onChange(newFile) {
1776
+ if ((mode & _UseCaseModes.UseCaseModes.Stateless) !== _UseCaseModes.UseCaseModes.Stateless) {
1777
+ return;
1778
+ }
1779
+ // `stateless` 不会保存状态,所以需要手动保存
1780
+ setFile(newFile);
1781
+ }
1763
1782
  }),
1764
- _useUseCase43 = (0, _slicedToArray2["default"])(_useUseCase42, 3),
1765
- setPath = _useUseCase43[1].setPath,
1766
- Provider = _useUseCase43[2];
1783
+ _useUseCase39 = (0, _slicedToArray2["default"])(_useUseCase38, 3),
1784
+ setPath = _useUseCase39[1].setPath,
1785
+ Provider = _useUseCase39[2];
1767
1786
  var onFirstClick = function onFirstClick() {
1768
1787
  setPath(PATH_1);
1769
- onChange = onSecondChange;
1788
+ deps = [2];
1789
+ onExtChange = onSecondExtChange;
1770
1790
  };
1771
1791
  var onSecondClick = function onSecondClick() {
1772
1792
  setPath('');
@@ -1782,23 +1802,78 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1782
1802
  });
1783
1803
  };
1784
1804
  (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
1785
- (0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(0);
1805
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(0);
1786
1806
  _react.fireEvent.click(_react.screen.getByText(firstButtonText));
1787
- (0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(1);
1788
- (0, _globals.expect)(onFirstChange).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
1789
- ext: EXT_1,
1790
- path: PATH_1
1791
- }), defaultFile);
1792
- (0, _globals.expect)(onParentPathChange).toHaveBeenCalledTimes(1);
1793
- (0, _globals.expect)(onSecondChange).toHaveBeenCalledTimes(0);
1807
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
1808
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(0);
1794
1809
  _react.fireEvent.click(_react.screen.getByText(secondButtonText));
1795
- (0, _globals.expect)(onSecondChange).toHaveBeenCalledTimes(1);
1796
- (0, _globals.expect)(onSecondChange).toHaveBeenLastCalledWith(defaultFile, _objectSpread(_objectSpread({}, defaultFile), {}, {
1797
- ext: EXT_1,
1798
- path: PATH_1
1799
- }));
1800
- (0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(1);
1801
- (0, _globals.expect)(onParentPathChange).toHaveBeenCalledTimes(2);
1810
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
1811
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(1);
1812
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenLastCalledWith({
1813
+ fieldPaths: ['ext'],
1814
+ newEntity: defaultFile,
1815
+ oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
1816
+ ext: EXT_1,
1817
+ path: PATH_1
1818
+ }),
1819
+ newValue: '',
1820
+ oldValue: EXT_1
1821
+ });
1822
+ });
1823
+ _globals.test.each([_UseCaseModes.UseCaseModes.Normal, _UseCaseModes.UseCaseModes.Stateless])('`options.watch` should not be updated in child element if `deps` has not changed', function (mode) {
1824
+ var onFirstExtChange = _globals.jest.fn();
1825
+ var onSecondExtChange = _globals.jest.fn();
1826
+ var onExtChange = onFirstExtChange;
1827
+ var firstButtonText = 'first button';
1828
+ var secondButtonText = 'second button';
1829
+ var A = function A() {
1830
+ (0, _.useUseCase)(fileUseCase, {
1831
+ watch: {
1832
+ ext: onExtChange
1833
+ }
1834
+ }, []);
1835
+ return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1836
+ };
1837
+ var B = function B() {
1838
+ var _useUseCase40 = (0, _.useUseCase)(defaultFile, fileUseCase, mode),
1839
+ _useUseCase41 = (0, _slicedToArray2["default"])(_useUseCase40, 3),
1840
+ setPath = _useUseCase41[1].setPath,
1841
+ Provider = _useUseCase41[2];
1842
+ var onFirstClick = function onFirstClick() {
1843
+ setPath(PATH_1);
1844
+ onExtChange = onSecondExtChange;
1845
+ };
1846
+ var onSecondClick = function onSecondClick() {
1847
+ setPath('');
1848
+ };
1849
+ return (0, _jsxRuntime.jsxs)(Provider, {
1850
+ children: [(0, _jsxRuntime.jsx)(A, {}), (0, _jsxRuntime.jsx)("button", {
1851
+ onClick: onFirstClick,
1852
+ children: firstButtonText
1853
+ }), (0, _jsxRuntime.jsx)("button", {
1854
+ onClick: onSecondClick,
1855
+ children: secondButtonText
1856
+ })]
1857
+ });
1858
+ };
1859
+ (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
1860
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(0);
1861
+ _react.fireEvent.click(_react.screen.getByText(firstButtonText));
1862
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
1863
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(0);
1864
+ _react.fireEvent.click(_react.screen.getByText(secondButtonText));
1865
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(2);
1866
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(0);
1867
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenLastCalledWith({
1868
+ fieldPaths: ['ext'],
1869
+ newEntity: defaultFile,
1870
+ oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
1871
+ ext: EXT_1,
1872
+ path: PATH_1
1873
+ }),
1874
+ newValue: '',
1875
+ oldValue: EXT_1
1876
+ });
1802
1877
  });
1803
1878
  (0, _globals.test)('`options.onChange` event should be trigger in orders', function () {
1804
1879
  var changeTimes = 0;
@@ -1809,8 +1884,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1809
1884
  var onChangeB = _globals.jest.fn(updateChangeTimes);
1810
1885
  var onChangeC = _globals.jest.fn(updateChangeTimes);
1811
1886
  var buttonText = 'my button';
1812
- var A = function A(_ref8) {
1813
- var children = _ref8.children;
1887
+ var A = function A(_ref7) {
1888
+ var children = _ref7.children;
1814
1889
  (0, _.useUseCase)(fileUseCase, {
1815
1890
  onChange: onChangeA
1816
1891
  });
@@ -1825,15 +1900,113 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1825
1900
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1826
1901
  };
1827
1902
  var C = function C() {
1828
- var _useUseCase44 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1903
+ var _useUseCase42 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1829
1904
  onChange: onChangeC
1830
1905
  }),
1906
+ _useUseCase43 = (0, _slicedToArray2["default"])(_useUseCase42, 3),
1907
+ setPath = _useUseCase43[1].setPath,
1908
+ Provider = _useUseCase43[2];
1909
+ var onFirstClick = function onFirstClick() {
1910
+ setPath(PATH_1);
1911
+ };
1912
+ return (0, _jsxRuntime.jsxs)(Provider, {
1913
+ children: [(0, _jsxRuntime.jsx)(A, {
1914
+ children: (0, _jsxRuntime.jsx)(B, {})
1915
+ }), (0, _jsxRuntime.jsx)("button", {
1916
+ onClick: onFirstClick,
1917
+ children: buttonText
1918
+ })]
1919
+ });
1920
+ };
1921
+ (0, _react.render)((0, _jsxRuntime.jsx)(C, {}));
1922
+ (0, _globals.expect)(changeTimes).toBe(0);
1923
+ _react.fireEvent.click(_react.screen.getByText(buttonText));
1924
+ (0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
1925
+ (0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
1926
+ (0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
1927
+ });
1928
+ (0, _globals.test)('`options.watch` should be trigger at child elements', function () {
1929
+ var onExtChange = _globals.jest.fn();
1930
+ var firstButtonText = 'first button';
1931
+ var A = function A() {
1932
+ (0, _.useUseCase)(fileUseCase, {
1933
+ watch: {
1934
+ ext: onExtChange
1935
+ }
1936
+ });
1937
+ return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1938
+ };
1939
+ var B = function B() {
1940
+ var _useUseCase44 = (0, _.useUseCase)(defaultFile, fileUseCase, {}),
1831
1941
  _useUseCase45 = (0, _slicedToArray2["default"])(_useUseCase44, 3),
1832
1942
  setPath = _useUseCase45[1].setPath,
1833
1943
  Provider = _useUseCase45[2];
1834
1944
  var onFirstClick = function onFirstClick() {
1835
1945
  setPath(PATH_1);
1836
1946
  };
1947
+ return (0, _jsxRuntime.jsxs)(Provider, {
1948
+ children: [(0, _jsxRuntime.jsx)(A, {}), (0, _jsxRuntime.jsx)("button", {
1949
+ onClick: onFirstClick,
1950
+ children: firstButtonText
1951
+ })]
1952
+ });
1953
+ };
1954
+ (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
1955
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(0);
1956
+ _react.fireEvent.click(_react.screen.getByText(firstButtonText));
1957
+ (0, _globals.expect)(onExtChange).toHaveBeenCalledTimes(1);
1958
+ (0, _globals.expect)(onExtChange).toHaveBeenLastCalledWith({
1959
+ fieldPaths: ['ext'],
1960
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
1961
+ ext: EXT_1,
1962
+ path: PATH_1
1963
+ }),
1964
+ oldEntity: defaultFile,
1965
+ newValue: EXT_1,
1966
+ oldValue: ''
1967
+ });
1968
+ });
1969
+ (0, _globals.test)('`options.watch` should be trigger in orders', function () {
1970
+ var changeTimes = 0;
1971
+ var updateChangeTimes = function updateChangeTimes(e) {
1972
+ void e;
1973
+ return ++changeTimes;
1974
+ };
1975
+ var onChangeA = _globals.jest.fn(updateChangeTimes);
1976
+ var onChangeB = _globals.jest.fn(updateChangeTimes);
1977
+ var onChangeC = _globals.jest.fn(updateChangeTimes);
1978
+ var buttonText = 'my button';
1979
+ var A = function A(_ref8) {
1980
+ var children = _ref8.children;
1981
+ (0, _.useUseCase)(fileUseCase, {
1982
+ watch: {
1983
+ ext: onChangeA
1984
+ }
1985
+ });
1986
+ return (0, _jsxRuntime.jsx)(_react2.Fragment, {
1987
+ children: children
1988
+ });
1989
+ };
1990
+ var B = function B() {
1991
+ (0, _.useUseCase)(fileUseCase, {
1992
+ watch: {
1993
+ ext: onChangeB
1994
+ }
1995
+ });
1996
+ return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1997
+ };
1998
+ var C = function C() {
1999
+ var _useUseCase46 = (0, _.useUseCase)(defaultFile, fileUseCase, {
2000
+ watch: {
2001
+ ext: onChangeC
2002
+ }
2003
+ }),
2004
+ _useUseCase47 = (0, _slicedToArray2["default"])(_useUseCase46, 3),
2005
+ setPath = _useUseCase47[1].setPath,
2006
+ Provider = _useUseCase47[2];
2007
+ var onFirstClick = function onFirstClick() {
2008
+ setPath(PATH_1);
2009
+ };
1837
2010
  return (0, _jsxRuntime.jsxs)(Provider, {
1838
2011
  children: [(0, _jsxRuntime.jsx)(A, {
1839
2012
  children: (0, _jsxRuntime.jsx)(B, {})
@@ -1853,38 +2026,38 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1853
2026
  });
1854
2027
  (0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
1855
2028
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
1856
- var _renderHook26 = (0, _react.renderHook)(function () {
2029
+ var _renderHook29 = (0, _react.renderHook)(function () {
1857
2030
  return (0, _.useUseCase)(mathUseCase);
1858
2031
  }),
1859
- result = _renderHook26.result;
2032
+ result = _renderHook29.result;
1860
2033
  var reducers = result.current;
1861
2034
  (0, _globals.expect)(Array.isArray(reducers)).toBe(false);
1862
2035
  });
1863
2036
  (0, _globals.test)('returned reducer should work', function () {
1864
- var _renderHook27 = (0, _react.renderHook)(function () {
2037
+ var _renderHook30 = (0, _react.renderHook)(function () {
1865
2038
  return (0, _.useUseCase)(mathUseCase);
1866
2039
  }),
1867
- result = _renderHook27.result;
2040
+ result = _renderHook30.result;
1868
2041
  var reducers = result.current;
1869
2042
  var add = reducers.add;
1870
2043
  (0, _globals.expect)(add(1, 2)).toBe(3);
1871
2044
  });
1872
2045
  (0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
1873
2046
  var mockUseCase = _globals.jest.fn(mathUseCase);
1874
- var _renderHook28 = (0, _react.renderHook)(function () {
2047
+ var _renderHook31 = (0, _react.renderHook)(function () {
1875
2048
  return (0, _.useUseCase)(mockUseCase);
1876
2049
  }),
1877
- rerender = _renderHook28.rerender;
2050
+ rerender = _renderHook31.rerender;
1878
2051
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1879
2052
  rerender();
1880
2053
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1881
2054
  });
1882
2055
  (0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
1883
2056
  var mockUseCase = _globals.jest.fn(mathUseCase);
1884
- var _renderHook29 = (0, _react.renderHook)(function () {
2057
+ var _renderHook32 = (0, _react.renderHook)(function () {
1885
2058
  return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
1886
2059
  }),
1887
- rerender = _renderHook29.rerender;
2060
+ rerender = _renderHook32.rerender;
1888
2061
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1889
2062
  rerender();
1890
2063
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
@@ -1892,10 +2065,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1892
2065
  (0, _globals.test)('`usecase` should be called if deps has changed', function () {
1893
2066
  var i = 0;
1894
2067
  var mockUseCase = _globals.jest.fn(mathUseCase);
1895
- var _renderHook30 = (0, _react.renderHook)(function () {
2068
+ var _renderHook33 = (0, _react.renderHook)(function () {
1896
2069
  return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
1897
2070
  }),
1898
- rerender = _renderHook30.rerender;
2071
+ rerender = _renderHook33.rerender;
1899
2072
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1900
2073
  rerender();
1901
2074
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
@@ -1903,8 +2076,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1903
2076
  (0, _globals.test)('reducer call should not be cached if component is at rendering phase', function () {
1904
2077
  var buttonText = 'button';
1905
2078
  var CacheTestComponent = function CacheTestComponent() {
1906
- var _useUseCase46 = (0, _.useUseCase)(mathUseCase),
1907
- subtraction = _useUseCase46.subtraction;
2079
+ var _useUseCase48 = (0, _.useUseCase)(mathUseCase),
2080
+ subtraction = _useUseCase48.subtraction;
1908
2081
  var update = (0, _ahooks.useUpdate)();
1909
2082
  var onClick = function onClick() {
1910
2083
  update();
@@ -1927,8 +2100,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1927
2100
  (0, _globals.test)('reducer call should not be cached if component is not at rendering phase', function () {
1928
2101
  var buttonText = 'button';
1929
2102
  var CacheTestComponent = function CacheTestComponent() {
1930
- var _useUseCase47 = (0, _.useUseCase)(mathUseCase),
1931
- subtraction = _useUseCase47.subtraction;
2103
+ var _useUseCase49 = (0, _.useUseCase)(mathUseCase),
2104
+ subtraction = _useUseCase49.subtraction;
1932
2105
  var onClick = function onClick() {
1933
2106
  subtraction(5, 3);
1934
2107
  };
@@ -1956,8 +2129,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1956
2129
  var count = 0;
1957
2130
  var buttonText = 'button';
1958
2131
  var StringUseCaseTestComponent = function StringUseCaseTestComponent() {
1959
- var _useUseCase48 = (0, _.useUseCase)(mathUseCase),
1960
- subtraction = _useUseCase48.subtraction;
2132
+ var _useUseCase50 = (0, _.useUseCase)(mathUseCase),
2133
+ subtraction = _useUseCase50.subtraction;
1961
2134
  var update = (0, _ahooks.useUpdate)();
1962
2135
  subtraction(5, count++);
1963
2136
  var onUpdate = function onUpdate() {
@@ -1979,12 +2152,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1979
2152
  (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
1980
2153
  });
1981
2154
  (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
1982
- var _renderHook31 = (0, _react.renderHook)(function () {
2155
+ var _renderHook34 = (0, _react.renderHook)(function () {
1983
2156
  return (0, _.useUseCase)(mathUseCase, {
1984
2157
  extraValue: 5
1985
2158
  });
1986
2159
  }),
1987
- result = _renderHook31.result;
2160
+ result = _renderHook34.result;
1988
2161
  var reducers = result.current;
1989
2162
  var add = reducers.add;
1990
2163
  (0, _globals.expect)(add(1, 2)).toBe(8);
@@ -1992,11 +2165,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1992
2165
  (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
1993
2166
  var onUpdate = _globals.jest.fn();
1994
2167
  var onDeepUpdate = _globals.jest.fn();
1995
- var _renderHook32 = (0, _react.renderHook)(function () {
1996
- var _useState7 = (0, _react2.useState)(0),
1997
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
1998
- extraValue = _useState8[0],
1999
- setExtraValue = _useState8[1];
2168
+ var _renderHook35 = (0, _react.renderHook)(function () {
2169
+ var _useState9 = (0, _react2.useState)(0),
2170
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
2171
+ extraValue = _useState10[0],
2172
+ setExtraValue = _useState10[1];
2000
2173
  var reducers = (0, _.useUseCase)(mathUseCase, {
2001
2174
  extraValue: extraValue
2002
2175
  });
@@ -2008,7 +2181,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2008
2181
  }, [reducers]);
2009
2182
  return setExtraValue;
2010
2183
  }),
2011
- result = _renderHook32.result;
2184
+ result = _renderHook35.result;
2012
2185
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2013
2186
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2014
2187
  (0, _react.act)(function () {
@@ -2020,11 +2193,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2020
2193
  (0, _globals.test)('when `deps` change, it should update reducers', function () {
2021
2194
  var onUpdate = _globals.jest.fn();
2022
2195
  var onDeepUpdate = _globals.jest.fn();
2023
- var _renderHook33 = (0, _react.renderHook)(function () {
2024
- var _useState9 = (0, _react2.useState)(0),
2025
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
2026
- extraValue = _useState10[0],
2027
- setExtraValue = _useState10[1];
2196
+ var _renderHook36 = (0, _react.renderHook)(function () {
2197
+ var _useState11 = (0, _react2.useState)(0),
2198
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
2199
+ extraValue = _useState12[0],
2200
+ setExtraValue = _useState12[1];
2028
2201
  var reducers = (0, _.useUseCase)(mathUseCase, {
2029
2202
  extraValue: extraValue
2030
2203
  }, [extraValue]);
@@ -2036,7 +2209,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2036
2209
  }, [reducers]);
2037
2210
  return setExtraValue;
2038
2211
  }),
2039
- result = _renderHook33.result;
2212
+ result = _renderHook36.result;
2040
2213
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2041
2214
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2042
2215
  (0, _react.act)(function () {
@@ -2048,11 +2221,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2048
2221
  (0, _globals.test)('empty `deps` should not update reducers', function () {
2049
2222
  var onUpdate = _globals.jest.fn();
2050
2223
  var onDeepUpdate = _globals.jest.fn();
2051
- var _renderHook34 = (0, _react.renderHook)(function () {
2052
- var _useState11 = (0, _react2.useState)(0),
2053
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
2054
- extraValue = _useState12[0],
2055
- setExtraValue = _useState12[1];
2224
+ var _renderHook37 = (0, _react.renderHook)(function () {
2225
+ var _useState13 = (0, _react2.useState)(0),
2226
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
2227
+ extraValue = _useState14[0],
2228
+ setExtraValue = _useState14[1];
2056
2229
  var reducers = (0, _.useUseCase)(mathUseCase, {
2057
2230
  extraValue: extraValue
2058
2231
  }, []);
@@ -2064,7 +2237,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2064
2237
  }, [reducers]);
2065
2238
  return setExtraValue;
2066
2239
  }),
2067
- result = _renderHook34.result;
2240
+ result = _renderHook37.result;
2068
2241
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2069
2242
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2070
2243
  (0, _react.act)(function () {