@mic-rexjs/usecases-react 3.1.0 → 3.1.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.
- package/dist/index.min.js +1 -1
- package/es/hooks/useStore/index.js +19 -5
- package/es/hooks/useUseCase/index.test.js +118 -77
- package/es/index.d.ts +1 -0
- package/es/usecases/valueUseCase/index.js +14 -37
- package/es/usecases/valueUseCase/types.d.ts +1 -2
- package/lib/hooks/useStore/index.js +19 -5
- package/lib/hooks/useUseCase/index.test.js +133 -84
- package/lib/usecases/valueUseCase/index.js +27 -63
- package/package.json +1 -1
|
@@ -486,6 +486,47 @@ describe('useUseCase', () => {
|
|
|
486
486
|
path: PATH_1
|
|
487
487
|
});
|
|
488
488
|
});
|
|
489
|
+
test('Entity property accessors should be reserved in initializer', () => {
|
|
490
|
+
let updateIndex = 0;
|
|
491
|
+
const defaultFileWithAccessors = {
|
|
492
|
+
...defaultFile,
|
|
493
|
+
get text() {
|
|
494
|
+
const path = this.path;
|
|
495
|
+
return `xyz-${path}`;
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
const _renderHook10 = renderHook(() => {
|
|
499
|
+
return useUseCase(function* () {
|
|
500
|
+
yield defaultFileWithAccessors;
|
|
501
|
+
yield {
|
|
502
|
+
path: PATH_1
|
|
503
|
+
};
|
|
504
|
+
}, fileUseCase, {}, [updateIndex++]);
|
|
505
|
+
}),
|
|
506
|
+
result = _renderHook10.result;
|
|
507
|
+
const current1 = result.current;
|
|
508
|
+
const _current5 = _slicedToArray(current1, 2),
|
|
509
|
+
entity1 = _current5[0],
|
|
510
|
+
setEntity = _current5[1].setEntity;
|
|
511
|
+
expect(entity1).toEqual({
|
|
512
|
+
...defaultFile,
|
|
513
|
+
path: PATH_1,
|
|
514
|
+
text: `xyz-${PATH_1}`
|
|
515
|
+
});
|
|
516
|
+
act(() => {
|
|
517
|
+
setEntity({
|
|
518
|
+
path: PATH_2
|
|
519
|
+
});
|
|
520
|
+
});
|
|
521
|
+
const current2 = result.current;
|
|
522
|
+
const _current6 = _slicedToArray(current2, 1),
|
|
523
|
+
entity2 = _current6[0];
|
|
524
|
+
expect(entity2).toEqual({
|
|
525
|
+
...defaultFile,
|
|
526
|
+
path: PATH_2,
|
|
527
|
+
text: `xyz-${PATH_2}`
|
|
528
|
+
});
|
|
529
|
+
});
|
|
489
530
|
test('Entity property getter should always return the same object if nothing changed after component update', () => {
|
|
490
531
|
let updateTimes = 0;
|
|
491
532
|
const data = {
|
|
@@ -494,7 +535,7 @@ describe('useUseCase', () => {
|
|
|
494
535
|
return {};
|
|
495
536
|
}
|
|
496
537
|
};
|
|
497
|
-
const
|
|
538
|
+
const _renderHook11 = renderHook(() => {
|
|
498
539
|
const collection = useUseCase(data, entityUseCase);
|
|
499
540
|
const _collection3 = _slicedToArray(collection, 1),
|
|
500
541
|
obj = _collection3[0].obj;
|
|
@@ -504,7 +545,7 @@ describe('useUseCase', () => {
|
|
|
504
545
|
}, [obj]);
|
|
505
546
|
return collection;
|
|
506
547
|
}),
|
|
507
|
-
rerender =
|
|
548
|
+
rerender = _renderHook11.rerender;
|
|
508
549
|
expect(updateTimes).toEqual(1);
|
|
509
550
|
act(() => {
|
|
510
551
|
rerender();
|
|
@@ -519,7 +560,7 @@ describe('useUseCase', () => {
|
|
|
519
560
|
return {};
|
|
520
561
|
}
|
|
521
562
|
};
|
|
522
|
-
const
|
|
563
|
+
const _renderHook12 = renderHook(() => {
|
|
523
564
|
const collection = useUseCase(data, entityUseCase);
|
|
524
565
|
const _collection4 = _slicedToArray(collection, 1),
|
|
525
566
|
obj = _collection4[0].obj;
|
|
@@ -529,10 +570,10 @@ describe('useUseCase', () => {
|
|
|
529
570
|
}, [obj]);
|
|
530
571
|
return collection;
|
|
531
572
|
}),
|
|
532
|
-
result =
|
|
573
|
+
result = _renderHook12.result;
|
|
533
574
|
const current = result.current;
|
|
534
|
-
const
|
|
535
|
-
setEntity =
|
|
575
|
+
const _current7 = _slicedToArray(current, 2),
|
|
576
|
+
setEntity = _current7[1].setEntity;
|
|
536
577
|
expect(updateTimes).toEqual(1);
|
|
537
578
|
act(() => {
|
|
538
579
|
setEntity({
|
|
@@ -545,7 +586,7 @@ describe('useUseCase', () => {
|
|
|
545
586
|
let entityArg;
|
|
546
587
|
let times = 0;
|
|
547
588
|
const file = defaultFile;
|
|
548
|
-
const
|
|
589
|
+
const _renderHook13 = renderHook(() => {
|
|
549
590
|
return useUseCase(function () {
|
|
550
591
|
let entity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : file;
|
|
551
592
|
const path = entity.path;
|
|
@@ -556,7 +597,7 @@ describe('useUseCase', () => {
|
|
|
556
597
|
};
|
|
557
598
|
}, fileUseCase, {}, [times++]);
|
|
558
599
|
}),
|
|
559
|
-
result =
|
|
600
|
+
result = _renderHook13.result;
|
|
560
601
|
const collection1 = result.current;
|
|
561
602
|
const _collection5 = _slicedToArray(collection1, 2),
|
|
562
603
|
currentFile1 = _collection5[0],
|
|
@@ -582,20 +623,20 @@ describe('useUseCase', () => {
|
|
|
582
623
|
});
|
|
583
624
|
});
|
|
584
625
|
test('`reducers` should be returned as an object', () => {
|
|
585
|
-
const
|
|
626
|
+
const _renderHook14 = renderHook(() => {
|
|
586
627
|
return useUseCase(defaultFile, fileUseCase);
|
|
587
628
|
}),
|
|
588
|
-
result =
|
|
629
|
+
result = _renderHook14.result;
|
|
589
630
|
const cores = result.current;
|
|
590
631
|
const _cores2 = _slicedToArray(cores, 2),
|
|
591
632
|
reducers = _cores2[1];
|
|
592
633
|
expect(typeof reducers).toBe('object');
|
|
593
634
|
});
|
|
594
635
|
test('`Provider` should be returned as a function', () => {
|
|
595
|
-
const
|
|
636
|
+
const _renderHook15 = renderHook(() => {
|
|
596
637
|
return useUseCase(defaultFile, fileUseCase);
|
|
597
638
|
}),
|
|
598
|
-
result =
|
|
639
|
+
result = _renderHook15.result;
|
|
599
640
|
const cores = result.current;
|
|
600
641
|
const _cores3 = _slicedToArray(cores, 3),
|
|
601
642
|
Provider = _cores3[2];
|
|
@@ -603,11 +644,11 @@ describe('useUseCase', () => {
|
|
|
603
644
|
});
|
|
604
645
|
test('`usecase` should be called only once if deps has not provided', () => {
|
|
605
646
|
const mockUseCase = jest.fn(fileUseCase);
|
|
606
|
-
const
|
|
647
|
+
const _renderHook16 = renderHook(() => {
|
|
607
648
|
return useUseCase(defaultFile, mockUseCase);
|
|
608
649
|
}),
|
|
609
|
-
result =
|
|
610
|
-
rerender =
|
|
650
|
+
result = _renderHook16.result,
|
|
651
|
+
rerender = _renderHook16.rerender;
|
|
611
652
|
const cores = result.current;
|
|
612
653
|
const _cores4 = _slicedToArray(cores, 2),
|
|
613
654
|
setEntity = _cores4[1].setEntity;
|
|
@@ -622,11 +663,11 @@ describe('useUseCase', () => {
|
|
|
622
663
|
});
|
|
623
664
|
test('`usecase` should be called only once if deps has not changed', () => {
|
|
624
665
|
const mockUseCase = jest.fn(fileUseCase);
|
|
625
|
-
const
|
|
666
|
+
const _renderHook17 = renderHook(() => {
|
|
626
667
|
return useUseCase(defaultFile, mockUseCase, {}, [1, 'x']);
|
|
627
668
|
}),
|
|
628
|
-
result =
|
|
629
|
-
rerender =
|
|
669
|
+
result = _renderHook17.result,
|
|
670
|
+
rerender = _renderHook17.rerender;
|
|
630
671
|
const cores = result.current;
|
|
631
672
|
const _cores5 = _slicedToArray(cores, 2),
|
|
632
673
|
setEntity = _cores5[1].setEntity;
|
|
@@ -642,11 +683,11 @@ describe('useUseCase', () => {
|
|
|
642
683
|
test('`usecase` should be called if deps has changed', () => {
|
|
643
684
|
let i = 0;
|
|
644
685
|
const mockUseCase = jest.fn(fileUseCase);
|
|
645
|
-
const
|
|
686
|
+
const _renderHook18 = renderHook(() => {
|
|
646
687
|
return useUseCase(defaultFile, mockUseCase, {}, [i++, 'x']);
|
|
647
688
|
}),
|
|
648
|
-
result =
|
|
649
|
-
rerender =
|
|
689
|
+
result = _renderHook18.result,
|
|
690
|
+
rerender = _renderHook18.rerender;
|
|
650
691
|
const cores = result.current;
|
|
651
692
|
const _cores6 = _slicedToArray(cores, 2),
|
|
652
693
|
setEntity = _cores6[1].setEntity;
|
|
@@ -663,7 +704,7 @@ describe('useUseCase', () => {
|
|
|
663
704
|
test('after call non-generator reducer, it should not trigger update', () => {
|
|
664
705
|
const onUpdate = jest.fn();
|
|
665
706
|
const onDeepUpdate = jest.fn();
|
|
666
|
-
const
|
|
707
|
+
const _renderHook19 = renderHook(() => {
|
|
667
708
|
const context = useUseCase(defaultFile, fileUseCase);
|
|
668
709
|
const _context = _slicedToArray(context, 2),
|
|
669
710
|
reducers = _context[1];
|
|
@@ -683,7 +724,7 @@ describe('useUseCase', () => {
|
|
|
683
724
|
update();
|
|
684
725
|
};
|
|
685
726
|
}),
|
|
686
|
-
result =
|
|
727
|
+
result = _renderHook19.result;
|
|
687
728
|
act(() => {
|
|
688
729
|
result.current();
|
|
689
730
|
});
|
|
@@ -697,13 +738,13 @@ describe('useUseCase', () => {
|
|
|
697
738
|
});
|
|
698
739
|
test('after `yield entity`, it should trigger update', () => {
|
|
699
740
|
const onUpdate = jest.fn();
|
|
700
|
-
const
|
|
741
|
+
const _renderHook20 = renderHook(() => {
|
|
701
742
|
useUpdateEffect(() => {
|
|
702
743
|
onUpdate();
|
|
703
744
|
});
|
|
704
745
|
return useUseCase(defaultFile, fileUseCase);
|
|
705
746
|
}),
|
|
706
|
-
result =
|
|
747
|
+
result = _renderHook20.result;
|
|
707
748
|
const cores = result.current;
|
|
708
749
|
const _cores7 = _slicedToArray(cores, 2),
|
|
709
750
|
entity = _cores7[0],
|
|
@@ -730,13 +771,13 @@ describe('useUseCase', () => {
|
|
|
730
771
|
});
|
|
731
772
|
test('after `yield entity` on async mode, it should trigger update', async () => {
|
|
732
773
|
const onUpdate = jest.fn();
|
|
733
|
-
const
|
|
774
|
+
const _renderHook21 = renderHook(() => {
|
|
734
775
|
useUpdateEffect(() => {
|
|
735
776
|
onUpdate();
|
|
736
777
|
});
|
|
737
778
|
return useUseCase(defaultFile, fileUseCase);
|
|
738
779
|
}),
|
|
739
|
-
result =
|
|
780
|
+
result = _renderHook21.result;
|
|
740
781
|
const cores = result.current;
|
|
741
782
|
const _cores8 = _slicedToArray(cores, 2),
|
|
742
783
|
entity = _cores8[0],
|
|
@@ -759,13 +800,13 @@ describe('useUseCase', () => {
|
|
|
759
800
|
});
|
|
760
801
|
test('after `yield entity` callbacks, it should trigger update', () => {
|
|
761
802
|
const onUpdate = jest.fn();
|
|
762
|
-
const
|
|
803
|
+
const _renderHook22 = renderHook(() => {
|
|
763
804
|
useUpdateEffect(() => {
|
|
764
805
|
onUpdate();
|
|
765
806
|
});
|
|
766
807
|
return useUseCase(defaultFile, fileUseCase);
|
|
767
808
|
}),
|
|
768
|
-
result =
|
|
809
|
+
result = _renderHook22.result;
|
|
769
810
|
const cores = result.current;
|
|
770
811
|
const _cores9 = _slicedToArray(cores, 2),
|
|
771
812
|
reducers = _cores9[1];
|
|
@@ -906,12 +947,12 @@ describe('useUseCase', () => {
|
|
|
906
947
|
});
|
|
907
948
|
test('`options.onChange` should be trigger when entity has changed', () => {
|
|
908
949
|
const onChange = jest.fn();
|
|
909
|
-
const
|
|
950
|
+
const _renderHook23 = renderHook(() => {
|
|
910
951
|
return useUseCase(defaultFile, fileUseCase, {
|
|
911
952
|
onChange
|
|
912
953
|
});
|
|
913
954
|
}),
|
|
914
|
-
result =
|
|
955
|
+
result = _renderHook23.result;
|
|
915
956
|
const cores = result.current;
|
|
916
957
|
const _cores0 = _slicedToArray(cores, 2),
|
|
917
958
|
reducers = _cores0[1];
|
|
@@ -931,12 +972,12 @@ describe('useUseCase', () => {
|
|
|
931
972
|
const onChange1 = jest.fn();
|
|
932
973
|
const onChange2 = jest.fn();
|
|
933
974
|
let onChange = onChange1;
|
|
934
|
-
const
|
|
975
|
+
const _renderHook24 = renderHook(() => {
|
|
935
976
|
return useUseCase(defaultFile, fileUseCase, {
|
|
936
977
|
onChange
|
|
937
978
|
}, []);
|
|
938
979
|
}),
|
|
939
|
-
result =
|
|
980
|
+
result = _renderHook24.result;
|
|
940
981
|
const cores = result.current;
|
|
941
982
|
const _cores1 = _slicedToArray(cores, 2),
|
|
942
983
|
reducers = _cores1[1];
|
|
@@ -969,7 +1010,7 @@ describe('useUseCase', () => {
|
|
|
969
1010
|
});
|
|
970
1011
|
});
|
|
971
1012
|
test('`options.options` should override rest options', () => {
|
|
972
|
-
const
|
|
1013
|
+
const _renderHook25 = renderHook(() => {
|
|
973
1014
|
return useUseCase(defaultFile, fileUseCase, {
|
|
974
1015
|
pathPrefix: 'xyz/',
|
|
975
1016
|
options: {
|
|
@@ -977,7 +1018,7 @@ describe('useUseCase', () => {
|
|
|
977
1018
|
}
|
|
978
1019
|
});
|
|
979
1020
|
}),
|
|
980
|
-
result =
|
|
1021
|
+
result = _renderHook25.result;
|
|
981
1022
|
const cores = result.current;
|
|
982
1023
|
const _cores10 = _slicedToArray(cores, 2),
|
|
983
1024
|
path = _cores10[0].path,
|
|
@@ -1012,7 +1053,7 @@ describe('useUseCase', () => {
|
|
|
1012
1053
|
test('when `options` has changed, it should not trigger update', () => {
|
|
1013
1054
|
const onUpdate = jest.fn();
|
|
1014
1055
|
const onDeepUpdate = jest.fn();
|
|
1015
|
-
const
|
|
1056
|
+
const _renderHook26 = renderHook(() => {
|
|
1016
1057
|
const _useState = useState('user/'),
|
|
1017
1058
|
_useState2 = _slicedToArray(_useState, 2),
|
|
1018
1059
|
pathPrefix = _useState2[0],
|
|
@@ -1028,7 +1069,7 @@ describe('useUseCase', () => {
|
|
|
1028
1069
|
}, [context]);
|
|
1029
1070
|
return setPathPrefix;
|
|
1030
1071
|
}),
|
|
1031
|
-
result =
|
|
1072
|
+
result = _renderHook26.result;
|
|
1032
1073
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
1033
1074
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1034
1075
|
act(() => {
|
|
@@ -1040,7 +1081,7 @@ describe('useUseCase', () => {
|
|
|
1040
1081
|
test('when `deps` has changed, it should trigger update', () => {
|
|
1041
1082
|
const onUpdate = jest.fn();
|
|
1042
1083
|
const onDeepUpdate = jest.fn();
|
|
1043
|
-
const
|
|
1084
|
+
const _renderHook27 = renderHook(() => {
|
|
1044
1085
|
const _useState3 = useState('user/'),
|
|
1045
1086
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
1046
1087
|
pathPrefix = _useState4[0],
|
|
@@ -1056,7 +1097,7 @@ describe('useUseCase', () => {
|
|
|
1056
1097
|
}, [context]);
|
|
1057
1098
|
return setPathPrefix;
|
|
1058
1099
|
}),
|
|
1059
|
-
result =
|
|
1100
|
+
result = _renderHook27.result;
|
|
1060
1101
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
1061
1102
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1062
1103
|
act(() => {
|
|
@@ -1068,7 +1109,7 @@ describe('useUseCase', () => {
|
|
|
1068
1109
|
test('empty `deps` should not trigger update', () => {
|
|
1069
1110
|
const onUpdate = jest.fn();
|
|
1070
1111
|
const onDeepUpdate = jest.fn();
|
|
1071
|
-
const
|
|
1112
|
+
const _renderHook28 = renderHook(() => {
|
|
1072
1113
|
const _useState5 = useState('user/'),
|
|
1073
1114
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
1074
1115
|
pathPrefix = _useState6[0],
|
|
@@ -1084,7 +1125,7 @@ describe('useUseCase', () => {
|
|
|
1084
1125
|
}, [context]);
|
|
1085
1126
|
return setPathPrefix;
|
|
1086
1127
|
}),
|
|
1087
|
-
result =
|
|
1128
|
+
result = _renderHook28.result;
|
|
1088
1129
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
1089
1130
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1090
1131
|
act(() => {
|
|
@@ -1097,12 +1138,12 @@ describe('useUseCase', () => {
|
|
|
1097
1138
|
const onPathChange1 = jest.fn();
|
|
1098
1139
|
const onPathChange2 = jest.fn();
|
|
1099
1140
|
let onPathChange = onPathChange1;
|
|
1100
|
-
const
|
|
1141
|
+
const _renderHook29 = renderHook(() => {
|
|
1101
1142
|
return useUseCase(defaultFile, fileUseCase, {
|
|
1102
1143
|
onPathChange
|
|
1103
1144
|
});
|
|
1104
1145
|
}),
|
|
1105
|
-
result =
|
|
1146
|
+
result = _renderHook29.result;
|
|
1106
1147
|
const context = result.current;
|
|
1107
1148
|
const _context2 = _slicedToArray(context, 2),
|
|
1108
1149
|
setPath = _context2[1].setPath;
|
|
@@ -1123,7 +1164,7 @@ describe('useUseCase', () => {
|
|
|
1123
1164
|
test('`options.watch` should be trigger after entity changed', () => {
|
|
1124
1165
|
const onPathChange = jest.fn();
|
|
1125
1166
|
const onSizeChange = jest.fn();
|
|
1126
|
-
const
|
|
1167
|
+
const _renderHook30 = renderHook(() => {
|
|
1127
1168
|
return useUseCase(defaultFile, fileUseCase, {
|
|
1128
1169
|
watch: {
|
|
1129
1170
|
path: onPathChange,
|
|
@@ -1131,7 +1172,7 @@ describe('useUseCase', () => {
|
|
|
1131
1172
|
}
|
|
1132
1173
|
});
|
|
1133
1174
|
}),
|
|
1134
|
-
result =
|
|
1175
|
+
result = _renderHook30.result;
|
|
1135
1176
|
const cores = result.current;
|
|
1136
1177
|
const _cores11 = _slicedToArray(cores, 2),
|
|
1137
1178
|
setPath = _cores11[1].setPath;
|
|
@@ -1155,7 +1196,7 @@ describe('useUseCase', () => {
|
|
|
1155
1196
|
});
|
|
1156
1197
|
test('`options.watch` should be trigger after update entity by entity initializer', () => {
|
|
1157
1198
|
const onPathChange = jest.fn();
|
|
1158
|
-
const
|
|
1199
|
+
const _renderHook31 = renderHook(function () {
|
|
1159
1200
|
let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
1160
1201
|
return useUseCase(function () {
|
|
1161
1202
|
let currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
|
|
@@ -1169,7 +1210,7 @@ describe('useUseCase', () => {
|
|
|
1169
1210
|
}
|
|
1170
1211
|
}, [path]);
|
|
1171
1212
|
}),
|
|
1172
|
-
rerender =
|
|
1213
|
+
rerender = _renderHook31.rerender;
|
|
1173
1214
|
expect(onPathChange).toHaveBeenCalledTimes(0);
|
|
1174
1215
|
act(() => {
|
|
1175
1216
|
rerender(PATH_1);
|
|
@@ -1280,14 +1321,14 @@ describe('useUseCase', () => {
|
|
|
1280
1321
|
const onPathChange1 = jest.fn();
|
|
1281
1322
|
const onPathChange2 = jest.fn();
|
|
1282
1323
|
let onPathChange = onPathChange1;
|
|
1283
|
-
const
|
|
1324
|
+
const _renderHook32 = renderHook(() => {
|
|
1284
1325
|
return useUseCase(defaultFile, fileUseCase, {
|
|
1285
1326
|
watch: {
|
|
1286
1327
|
path: onPathChange
|
|
1287
1328
|
}
|
|
1288
1329
|
});
|
|
1289
1330
|
}),
|
|
1290
|
-
result =
|
|
1331
|
+
result = _renderHook32.result;
|
|
1291
1332
|
const cores = result.current;
|
|
1292
1333
|
const _cores12 = _slicedToArray(cores, 2),
|
|
1293
1334
|
_cores12$ = _cores12[1],
|
|
@@ -1338,7 +1379,7 @@ describe('useUseCase', () => {
|
|
|
1338
1379
|
const initialData = {};
|
|
1339
1380
|
const onExtChange = jest.fn();
|
|
1340
1381
|
const onSizeChange = jest.fn();
|
|
1341
|
-
const
|
|
1382
|
+
const _renderHook33 = renderHook(() => {
|
|
1342
1383
|
return useUseCase(initialData, fieldPathUseCase, {
|
|
1343
1384
|
watch: {
|
|
1344
1385
|
'list.ext': onExtChange,
|
|
@@ -1346,7 +1387,7 @@ describe('useUseCase', () => {
|
|
|
1346
1387
|
}
|
|
1347
1388
|
});
|
|
1348
1389
|
}),
|
|
1349
|
-
result =
|
|
1390
|
+
result = _renderHook33.result;
|
|
1350
1391
|
const cores = result.current;
|
|
1351
1392
|
const _cores13 = _slicedToArray(cores, 2),
|
|
1352
1393
|
setEntity = _cores13[1].setEntity;
|
|
@@ -1691,7 +1732,7 @@ describe('useUseCase', () => {
|
|
|
1691
1732
|
const lengthUseCase = () => {
|
|
1692
1733
|
return entityUseCase();
|
|
1693
1734
|
};
|
|
1694
|
-
const
|
|
1735
|
+
const _renderHook34 = renderHook(() => {
|
|
1695
1736
|
return useUseCase(defaultList, lengthUseCase, {
|
|
1696
1737
|
watch: {
|
|
1697
1738
|
length: onEntityLengthChange,
|
|
@@ -1699,7 +1740,7 @@ describe('useUseCase', () => {
|
|
|
1699
1740
|
}
|
|
1700
1741
|
});
|
|
1701
1742
|
}),
|
|
1702
|
-
result =
|
|
1743
|
+
result = _renderHook34.result;
|
|
1703
1744
|
const cores = result.current;
|
|
1704
1745
|
const _cores14 = _slicedToArray(cores, 2),
|
|
1705
1746
|
setEntity = _cores14[1].setEntity;
|
|
@@ -1734,14 +1775,14 @@ describe('useUseCase', () => {
|
|
|
1734
1775
|
test('`options.watch` should work with field path of nested array', () => {
|
|
1735
1776
|
const initialData = {};
|
|
1736
1777
|
const onChange = jest.fn();
|
|
1737
|
-
const
|
|
1778
|
+
const _renderHook35 = renderHook(() => {
|
|
1738
1779
|
return useUseCase(initialData, fieldPathUseCase, {
|
|
1739
1780
|
watch: {
|
|
1740
1781
|
'nestedList.size': onChange
|
|
1741
1782
|
}
|
|
1742
1783
|
});
|
|
1743
1784
|
}),
|
|
1744
|
-
result =
|
|
1785
|
+
result = _renderHook35.result;
|
|
1745
1786
|
const cores = result.current;
|
|
1746
1787
|
const _cores15 = _slicedToArray(cores, 2),
|
|
1747
1788
|
setEntity = _cores15[1].setEntity;
|
|
@@ -1841,7 +1882,7 @@ describe('useUseCase', () => {
|
|
|
1841
1882
|
const initialData = {};
|
|
1842
1883
|
const onExtChange = jest.fn();
|
|
1843
1884
|
const onSizeChange = jest.fn();
|
|
1844
|
-
const
|
|
1885
|
+
const _renderHook36 = renderHook(() => {
|
|
1845
1886
|
return useUseCase(initialData, fieldPathUseCase, {
|
|
1846
1887
|
watch: {
|
|
1847
1888
|
'obj.file.ext': onExtChange,
|
|
@@ -1849,7 +1890,7 @@ describe('useUseCase', () => {
|
|
|
1849
1890
|
}
|
|
1850
1891
|
});
|
|
1851
1892
|
}),
|
|
1852
|
-
result =
|
|
1893
|
+
result = _renderHook36.result;
|
|
1853
1894
|
const cores = result.current;
|
|
1854
1895
|
const _cores16 = _slicedToArray(cores, 2),
|
|
1855
1896
|
setEntity = _cores16[1].setEntity;
|
|
@@ -1990,7 +2031,7 @@ describe('useUseCase', () => {
|
|
|
1990
2031
|
unbindEntity
|
|
1991
2032
|
};
|
|
1992
2033
|
};
|
|
1993
|
-
const
|
|
2034
|
+
const _renderHook37 = renderHook(() => {
|
|
1994
2035
|
const _useUseCase26 = useUseCase(5, testUseCase),
|
|
1995
2036
|
_useUseCase27 = _slicedToArray(_useUseCase26, 2),
|
|
1996
2037
|
setEntity = _useUseCase27[1].setEntity;
|
|
@@ -1998,7 +2039,7 @@ describe('useUseCase', () => {
|
|
|
1998
2039
|
setEntity(100);
|
|
1999
2040
|
});
|
|
2000
2041
|
}),
|
|
2001
|
-
unmount =
|
|
2042
|
+
unmount = _renderHook37.unmount;
|
|
2002
2043
|
expect(unbindEntity).toHaveBeenCalledTimes(0);
|
|
2003
2044
|
unmount();
|
|
2004
2045
|
expect(unbindEntity).toHaveBeenCalledTimes(1);
|
|
@@ -2565,38 +2606,38 @@ describe('useUseCase', () => {
|
|
|
2565
2606
|
});
|
|
2566
2607
|
describe('`useUseCase` should work the same as `useReducers`', () => {
|
|
2567
2608
|
test('`entity` should equal `defaultFile`', () => {
|
|
2568
|
-
const
|
|
2609
|
+
const _renderHook38 = renderHook(() => {
|
|
2569
2610
|
return useUseCase(mathUseCase);
|
|
2570
2611
|
}),
|
|
2571
|
-
result =
|
|
2612
|
+
result = _renderHook38.result;
|
|
2572
2613
|
const reducers = result.current;
|
|
2573
2614
|
expect(Array.isArray(reducers)).toBe(false);
|
|
2574
2615
|
});
|
|
2575
2616
|
test('returned reducer should work', () => {
|
|
2576
|
-
const
|
|
2617
|
+
const _renderHook39 = renderHook(() => {
|
|
2577
2618
|
return useUseCase(mathUseCase);
|
|
2578
2619
|
}),
|
|
2579
|
-
result =
|
|
2620
|
+
result = _renderHook39.result;
|
|
2580
2621
|
const reducers = result.current;
|
|
2581
2622
|
const add = reducers.add;
|
|
2582
2623
|
expect(add(1, 2)).toBe(3);
|
|
2583
2624
|
});
|
|
2584
2625
|
test('`usecase` should be called only once if deps has not provided', () => {
|
|
2585
2626
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2586
|
-
const
|
|
2627
|
+
const _renderHook40 = renderHook(() => {
|
|
2587
2628
|
return useUseCase(mockUseCase);
|
|
2588
2629
|
}),
|
|
2589
|
-
rerender =
|
|
2630
|
+
rerender = _renderHook40.rerender;
|
|
2590
2631
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2591
2632
|
rerender();
|
|
2592
2633
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2593
2634
|
});
|
|
2594
2635
|
test('`usecase` should be called only once if deps has not changed', () => {
|
|
2595
2636
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2596
|
-
const
|
|
2637
|
+
const _renderHook41 = renderHook(() => {
|
|
2597
2638
|
return useUseCase(mockUseCase, {}, [1, 'x']);
|
|
2598
2639
|
}),
|
|
2599
|
-
rerender =
|
|
2640
|
+
rerender = _renderHook41.rerender;
|
|
2600
2641
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2601
2642
|
rerender();
|
|
2602
2643
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
@@ -2604,10 +2645,10 @@ describe('useUseCase', () => {
|
|
|
2604
2645
|
test('`usecase` should be called if deps has changed', () => {
|
|
2605
2646
|
let i = 0;
|
|
2606
2647
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2607
|
-
const
|
|
2648
|
+
const _renderHook42 = renderHook(() => {
|
|
2608
2649
|
return useUseCase(mockUseCase, {}, [i++, 'x']);
|
|
2609
2650
|
}),
|
|
2610
|
-
rerender =
|
|
2651
|
+
rerender = _renderHook42.rerender;
|
|
2611
2652
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2612
2653
|
rerender();
|
|
2613
2654
|
expect(mockUseCase).toHaveBeenCalledTimes(2);
|
|
@@ -2691,12 +2732,12 @@ describe('useUseCase', () => {
|
|
|
2691
2732
|
expect(subtractionReducer).toHaveReturnedWith(4);
|
|
2692
2733
|
});
|
|
2693
2734
|
test('`options.extraValue` should be added after call `add` method', () => {
|
|
2694
|
-
const
|
|
2735
|
+
const _renderHook43 = renderHook(() => {
|
|
2695
2736
|
return useUseCase(mathUseCase, {
|
|
2696
2737
|
extraValue: 5
|
|
2697
2738
|
});
|
|
2698
2739
|
}),
|
|
2699
|
-
result =
|
|
2740
|
+
result = _renderHook43.result;
|
|
2700
2741
|
const reducers = result.current;
|
|
2701
2742
|
const add = reducers.add;
|
|
2702
2743
|
expect(add(1, 2)).toBe(8);
|
|
@@ -2704,7 +2745,7 @@ describe('useUseCase', () => {
|
|
|
2704
2745
|
test('when `options` has changed, it should not trigger update', () => {
|
|
2705
2746
|
const onUpdate = jest.fn();
|
|
2706
2747
|
const onDeepUpdate = jest.fn();
|
|
2707
|
-
const
|
|
2748
|
+
const _renderHook44 = renderHook(() => {
|
|
2708
2749
|
const _useState7 = useState(0),
|
|
2709
2750
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
2710
2751
|
extraValue = _useState8[0],
|
|
@@ -2720,7 +2761,7 @@ describe('useUseCase', () => {
|
|
|
2720
2761
|
}, [reducers]);
|
|
2721
2762
|
return setExtraValue;
|
|
2722
2763
|
}),
|
|
2723
|
-
result =
|
|
2764
|
+
result = _renderHook44.result;
|
|
2724
2765
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2725
2766
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2726
2767
|
act(() => {
|
|
@@ -2732,7 +2773,7 @@ describe('useUseCase', () => {
|
|
|
2732
2773
|
test('when `deps` change, it should update reducers', () => {
|
|
2733
2774
|
const onUpdate = jest.fn();
|
|
2734
2775
|
const onDeepUpdate = jest.fn();
|
|
2735
|
-
const
|
|
2776
|
+
const _renderHook45 = renderHook(() => {
|
|
2736
2777
|
const _useState9 = useState(0),
|
|
2737
2778
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
2738
2779
|
extraValue = _useState0[0],
|
|
@@ -2748,7 +2789,7 @@ describe('useUseCase', () => {
|
|
|
2748
2789
|
}, [reducers]);
|
|
2749
2790
|
return setExtraValue;
|
|
2750
2791
|
}),
|
|
2751
|
-
result =
|
|
2792
|
+
result = _renderHook45.result;
|
|
2752
2793
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2753
2794
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2754
2795
|
act(() => {
|
|
@@ -2760,7 +2801,7 @@ describe('useUseCase', () => {
|
|
|
2760
2801
|
test('empty `deps` should not update reducers', () => {
|
|
2761
2802
|
const onUpdate = jest.fn();
|
|
2762
2803
|
const onDeepUpdate = jest.fn();
|
|
2763
|
-
const
|
|
2804
|
+
const _renderHook46 = renderHook(() => {
|
|
2764
2805
|
const _useState1 = useState(0),
|
|
2765
2806
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
2766
2807
|
extraValue = _useState10[0],
|
|
@@ -2776,7 +2817,7 @@ describe('useUseCase', () => {
|
|
|
2776
2817
|
}, [reducers]);
|
|
2777
2818
|
return setExtraValue;
|
|
2778
2819
|
}),
|
|
2779
|
-
result =
|
|
2820
|
+
result = _renderHook46.result;
|
|
2780
2821
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2781
2822
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2782
2823
|
act(() => {
|
package/es/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export { lifeCycleUseCase } from './usecases/lifeCycleUseCase';
|
|
|
4
4
|
export type { EntityWatchEvent, RootCoreCollection, ContextualCoreCollection, CoreCollection, } from './hooks/useUseCase/types';
|
|
5
5
|
export type { UseCaseHookOptions } from './hooks/useUseCase/types';
|
|
6
6
|
export type { UseCaseProvider } from './hooks/useProvider/types';
|
|
7
|
+
export type { LifeCycleReducers, LifeCycleUseCaseOptions } from './usecases/lifeCycleUseCase/types';
|
|
7
8
|
export type { UseCaseFragmentProps } from './components/UseCaseFragment/types';
|