@mic-rexjs/usecases-react 4.0.0-beta.0 → 4.0.0-beta.3

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 (150) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.LICENSE.txt +2 -0
  3. package/es/components/UseCaseFragment/index.js +2 -2
  4. package/es/enums/Statuses/index.d.ts +86 -10
  5. package/es/enums/Statuses/index.js +86 -10
  6. package/es/hooks/useAlternateStatuses/index.d.ts +2 -0
  7. package/es/hooks/useAlternateStatuses/index.js +16 -0
  8. package/es/hooks/useChanged/index.d.ts +2 -0
  9. package/es/hooks/useChanged/index.js +17 -0
  10. package/es/hooks/useChanged/types.d.ts +3 -0
  11. package/es/hooks/useContext/index.d.ts +3 -4
  12. package/es/hooks/useContext/index.js +17 -15
  13. package/es/hooks/useContext/index.test.js +13 -24
  14. package/es/hooks/useContextValue/index.d.ts +3 -4
  15. package/es/hooks/useContextValue/index.js +9 -16
  16. package/es/hooks/useDepsKey/index.js +11 -9
  17. package/es/hooks/useEntity/index.d.ts +3 -2
  18. package/es/hooks/useEntity/index.js +51 -50
  19. package/es/hooks/useEntityReturn/index.d.ts +5 -0
  20. package/es/hooks/useEntityReturn/index.js +15 -0
  21. package/es/hooks/useEntityReturn/types.d.ts +7 -0
  22. package/es/hooks/useEntityRootExec/index.d.ts +5 -0
  23. package/es/hooks/useEntityRootExec/index.js +7 -0
  24. package/es/hooks/useEntityRootExec/types.d.ts +7 -0
  25. package/es/hooks/useEntityRootReturn/index.d.ts +5 -0
  26. package/es/hooks/useEntityRootReturn/index.js +14 -0
  27. package/es/hooks/useEntityRootReturn/types.d.ts +7 -0
  28. package/es/hooks/useEntityRootReturn/types.js +1 -0
  29. package/es/hooks/useExec/index.d.ts +2 -3
  30. package/es/hooks/useExec/index.js +3 -25
  31. package/es/hooks/useExec/types.d.ts +7 -2
  32. package/es/hooks/useFullArguments/index.d.ts +2 -3
  33. package/es/hooks/useFullArguments/index.js +4 -6
  34. package/es/hooks/useIfExec/index.d.ts +2 -0
  35. package/es/hooks/useIfExec/index.js +20 -0
  36. package/es/hooks/useIfExec/types.d.ts +6 -0
  37. package/es/hooks/useIfExec/types.js +1 -0
  38. package/es/hooks/useIfReturn/index.d.ts +2 -0
  39. package/es/hooks/useIfReturn/index.js +22 -0
  40. package/es/hooks/useIfReturn/types.d.ts +6 -0
  41. package/es/hooks/useIfReturn/types.js +1 -0
  42. package/es/hooks/useProvider/index.d.ts +3 -3
  43. package/es/hooks/useProvider/index.js +15 -13
  44. package/es/hooks/useProviders/index.js +4 -4
  45. package/es/hooks/useReducers/index.d.ts +5 -4
  46. package/es/hooks/useReducers/index.js +47 -10
  47. package/es/hooks/useReturn/index.d.ts +2 -0
  48. package/es/hooks/useReturn/index.js +33 -0
  49. package/es/hooks/useReturn/types.d.ts +11 -0
  50. package/es/hooks/useReturn/types.js +1 -0
  51. package/es/hooks/useRootInitializing/index.d.ts +2 -0
  52. package/es/hooks/useRootInitializing/index.js +14 -0
  53. package/es/hooks/useRootReturn/index.d.ts +5 -0
  54. package/es/hooks/useRootReturn/index.js +22 -0
  55. package/es/hooks/useRootReturn/types.d.ts +14 -0
  56. package/es/hooks/useRootReturn/types.js +1 -0
  57. package/es/hooks/useStatuses/index.d.ts +4 -4
  58. package/es/hooks/useStatuses/index.js +46 -21
  59. package/es/hooks/useStore/index.d.ts +3 -3
  60. package/es/hooks/useStore/index.js +24 -47
  61. package/es/hooks/useThrottleUpdate/index.d.ts +2 -0
  62. package/es/hooks/useThrottleUpdate/index.js +31 -0
  63. package/es/hooks/useThrottleUpdate/types.d.ts +3 -0
  64. package/es/hooks/useThrottleUpdate/types.js +1 -0
  65. package/es/hooks/useUseCase/index.js +18 -27
  66. package/es/hooks/useUseCase/index.test.js +357 -227
  67. package/es/hooks/useUseCase/types.d.ts +13 -2
  68. package/es/types.d.ts +2 -1
  69. package/es/usecases/contextUseCase/index.js +21 -38
  70. package/es/usecases/contextUseCase/types.d.ts +6 -9
  71. package/es/usecases/lifecycleEventUseCase/index.js +37 -9
  72. package/es/usecases/lifecycleEventUseCase/types.d.ts +11 -8
  73. package/lib/components/UseCaseFragment/index.js +2 -2
  74. package/lib/enums/Statuses/index.js +86 -10
  75. package/lib/hooks/useAlternateStatuses/index.js +22 -0
  76. package/lib/hooks/useChanged/index.js +23 -0
  77. package/lib/hooks/useContext/index.js +19 -17
  78. package/lib/hooks/useContext/index.test.js +13 -24
  79. package/lib/hooks/useContextValue/index.js +8 -15
  80. package/lib/hooks/useDepsKey/index.js +10 -8
  81. package/lib/hooks/useEntity/index.js +82 -53
  82. package/lib/hooks/useEntityReturn/index.js +22 -0
  83. package/lib/hooks/useEntityRootExec/index.js +13 -0
  84. package/lib/hooks/useEntityRootReturn/index.js +21 -0
  85. package/lib/hooks/useEntityRootReturn/types.js +5 -0
  86. package/lib/hooks/useExec/index.js +3 -25
  87. package/lib/hooks/useFullArguments/index.js +4 -6
  88. package/lib/hooks/useIfExec/index.js +27 -0
  89. package/lib/hooks/useIfExec/types.js +5 -0
  90. package/lib/hooks/useIfReturn/index.js +29 -0
  91. package/lib/hooks/useIfReturn/types.js +5 -0
  92. package/lib/hooks/useProvider/index.js +15 -13
  93. package/lib/hooks/useProviders/index.js +3 -3
  94. package/lib/hooks/useReducers/index.js +50 -10
  95. package/lib/hooks/useReturn/index.js +40 -0
  96. package/lib/hooks/useReturn/types.js +5 -0
  97. package/lib/hooks/useRootInitializing/index.js +20 -0
  98. package/lib/hooks/useRootReturn/index.js +30 -0
  99. package/lib/hooks/useRootReturn/types.js +5 -0
  100. package/lib/hooks/useStatuses/index.js +47 -21
  101. package/lib/hooks/useStore/index.js +22 -46
  102. package/lib/hooks/useThrottleUpdate/index.js +37 -0
  103. package/lib/hooks/useThrottleUpdate/types.js +5 -0
  104. package/lib/hooks/useUseCase/index.js +18 -27
  105. package/lib/hooks/useUseCase/index.test.js +389 -267
  106. package/lib/usecases/contextUseCase/index.js +21 -38
  107. package/lib/usecases/lifecycleEventUseCase/index.js +48 -8
  108. package/package.json +1 -1
  109. package/es/classes/OptionsSet/index.d.ts +0 -6
  110. package/es/classes/OptionsSet/index.js +0 -44
  111. package/es/classes/OptionsSet/types.d.ts +0 -8
  112. package/es/enums/ArgumentTypes/index.d.ts +0 -4
  113. package/es/enums/ArgumentTypes/index.js +0 -5
  114. package/es/hooks/useArgumentTypes/index.d.ts +0 -3
  115. package/es/hooks/useArgumentTypes/index.js +0 -14
  116. package/es/hooks/useConstantEntityReducers/index.d.ts +0 -3
  117. package/es/hooks/useConstantEntityReducers/index.js +0 -7
  118. package/es/hooks/useConstantFn/index.d.ts +0 -1
  119. package/es/hooks/useConstantFn/index.js +0 -10
  120. package/es/hooks/useConstantReducers/index.d.ts +0 -3
  121. package/es/hooks/useConstantReducers/index.js +0 -6
  122. package/es/hooks/useContextualItem/index.d.ts +0 -4
  123. package/es/hooks/useContextualItem/index.js +0 -11
  124. package/es/hooks/useEntityInitializing/index.d.ts +0 -2
  125. package/es/hooks/useEntityInitializing/index.js +0 -16
  126. package/es/hooks/useOptions/index.d.ts +0 -5
  127. package/es/hooks/useOptions/index.js +0 -54
  128. package/es/hooks/useOptions/types.d.ts +0 -5
  129. package/es/hooks/useOptionsSet/index.d.ts +0 -5
  130. package/es/hooks/useOptionsSet/index.js +0 -16
  131. package/es/hooks/useRootCreation/index.d.ts +0 -4
  132. package/es/hooks/useRootCreation/index.js +0 -20
  133. package/es/hooks/useRootCreation/types.d.ts +0 -3
  134. package/lib/classes/OptionsSet/index.js +0 -94
  135. package/lib/enums/ArgumentTypes/index.js +0 -11
  136. package/lib/hooks/useArgumentTypes/index.js +0 -22
  137. package/lib/hooks/useConstantEntityReducers/index.js +0 -13
  138. package/lib/hooks/useConstantFn/index.js +0 -17
  139. package/lib/hooks/useConstantReducers/index.js +0 -12
  140. package/lib/hooks/useContextualItem/index.js +0 -17
  141. package/lib/hooks/useEntityInitializing/index.js +0 -22
  142. package/lib/hooks/useOptions/index.js +0 -61
  143. package/lib/hooks/useOptionsSet/index.js +0 -22
  144. package/lib/hooks/useRootCreation/index.js +0 -26
  145. /package/es/{classes/OptionsSet → hooks/useChanged}/types.js +0 -0
  146. /package/es/hooks/{useOptions → useEntityReturn}/types.js +0 -0
  147. /package/es/hooks/{useRootCreation → useEntityRootExec}/types.js +0 -0
  148. /package/lib/{classes/OptionsSet → hooks/useChanged}/types.js +0 -0
  149. /package/lib/hooks/{useOptions → useEntityReturn}/types.js +0 -0
  150. /package/lib/hooks/{useRootCreation → useEntityRootExec}/types.js +0 -0
@@ -1137,44 +1137,6 @@ describe('useUseCase', () => {
1137
1137
  expect(onUpdate).toHaveBeenCalledTimes(0);
1138
1138
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
1139
1139
  });
1140
- test('event options should be triggered', async () => {
1141
- let readFilePromise = null;
1142
- const buttonText = 'my button';
1143
- const onReadFile = jest.fn(path => {
1144
- void path;
1145
- return 1024;
1146
- });
1147
- const onSizeChange = jest.fn();
1148
- const TestComponent = () => {
1149
- const _useUseCase10 = useUseCase(defaultFile, fileUseCase, {
1150
- onReadFile
1151
- }),
1152
- _useUseCase11 = _slicedToArray(_useUseCase10, 2),
1153
- size = _useUseCase11[0].size,
1154
- readFile = _useUseCase11[1].readFile;
1155
- const onClick = () => {
1156
- readFilePromise = readFile(PATH_1);
1157
- };
1158
- useUpdateEffect(() => {
1159
- onSizeChange(size);
1160
- }, [size]);
1161
- return _jsx("button", {
1162
- onClick: onClick,
1163
- children: buttonText
1164
- });
1165
- };
1166
- render(_jsx(TestComponent, {}));
1167
- expect(onReadFile).toHaveBeenCalledTimes(0);
1168
- expect(onSizeChange).toHaveBeenCalledTimes(0);
1169
- await act(async () => {
1170
- fireEvent.click(screen.getByText(buttonText));
1171
- await readFilePromise;
1172
- });
1173
- expect(onReadFile).toHaveBeenCalledTimes(1);
1174
- expect(onReadFile).toHaveBeenCalledWith(PATH_1);
1175
- expect(onSizeChange).toHaveBeenCalledTimes(1);
1176
- expect(onSizeChange).toHaveBeenCalledWith(1024);
1177
- });
1178
1140
  test(`should call latest functions of usecase options even deps has not change`, () => {
1179
1141
  const onPathChange1 = jest.fn();
1180
1142
  const onPathChange2 = jest.fn();
@@ -1297,15 +1259,15 @@ describe('useUseCase', () => {
1297
1259
  const TestParent = _ref5 => {
1298
1260
  let file = _ref5.file;
1299
1261
  const path = file.path;
1300
- const _useUseCase12 = useUseCase(function () {
1262
+ const _useUseCase10 = useUseCase(function () {
1301
1263
  let currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
1302
1264
  return {
1303
1265
  ...currentFile,
1304
1266
  path
1305
1267
  };
1306
1268
  }, fileUseCase, {}, [path]),
1307
- _useUseCase13 = _slicedToArray(_useUseCase12, 3),
1308
- Provider = _useUseCase13[2];
1269
+ _useUseCase11 = _slicedToArray(_useUseCase10, 3),
1270
+ Provider = _useUseCase11[2];
1309
1271
  return _jsx(Provider, {
1310
1272
  children: _jsx(TestChild, {})
1311
1273
  });
@@ -2003,15 +1965,15 @@ describe('useUseCase', () => {
2003
1965
  return entityUseCase();
2004
1966
  };
2005
1967
  const TestChildComponent = () => {
2006
- const _useUseCase14 = useUseCase(numberUseCase),
1968
+ const _useUseCase12 = useUseCase(numberUseCase),
1969
+ _useUseCase13 = _slicedToArray(_useUseCase12, 1),
1970
+ numberValue = _useUseCase13[0];
1971
+ const _useUseCase14 = useUseCase(stringUseCase),
2007
1972
  _useUseCase15 = _slicedToArray(_useUseCase14, 1),
2008
- numberValue = _useUseCase15[0];
2009
- const _useUseCase16 = useUseCase(stringUseCase),
1973
+ stringValue = _useUseCase15[0];
1974
+ const _useUseCase16 = useUseCase(booleanUseCase),
2010
1975
  _useUseCase17 = _slicedToArray(_useUseCase16, 1),
2011
- stringValue = _useUseCase17[0];
2012
- const _useUseCase18 = useUseCase(booleanUseCase),
2013
- _useUseCase19 = _slicedToArray(_useUseCase18, 1),
2014
- booleanValue = _useUseCase19[0];
1976
+ booleanValue = _useUseCase17[0];
2015
1977
  useMount(() => {
2016
1978
  onNumberMount(numberValue);
2017
1979
  onStringMount(stringValue);
@@ -2020,15 +1982,15 @@ describe('useUseCase', () => {
2020
1982
  return null;
2021
1983
  };
2022
1984
  const TestParentComponent = () => {
2023
- const _useUseCase20 = useUseCase(11, numberUseCase),
1985
+ const _useUseCase18 = useUseCase(11, numberUseCase),
1986
+ _useUseCase19 = _slicedToArray(_useUseCase18, 3),
1987
+ NumberProvider = _useUseCase19[2];
1988
+ const _useUseCase20 = useUseCase('hello', stringUseCase),
2024
1989
  _useUseCase21 = _slicedToArray(_useUseCase20, 3),
2025
- NumberProvider = _useUseCase21[2];
2026
- const _useUseCase22 = useUseCase('hello', stringUseCase),
1990
+ StringProvider = _useUseCase21[2];
1991
+ const _useUseCase22 = useUseCase(true, booleanUseCase),
2027
1992
  _useUseCase23 = _slicedToArray(_useUseCase22, 3),
2028
- StringProvider = _useUseCase23[2];
2029
- const _useUseCase24 = useUseCase(true, booleanUseCase),
2030
- _useUseCase25 = _slicedToArray(_useUseCase24, 3),
2031
- BooleanProvider = _useUseCase25[2];
1993
+ BooleanProvider = _useUseCase23[2];
2032
1994
  return _jsx(NumberProvider, {
2033
1995
  with: [StringProvider, BooleanProvider],
2034
1996
  children: _jsx(TestChildComponent, {})
@@ -2039,7 +2001,7 @@ describe('useUseCase', () => {
2039
2001
  expect(onStringMount).toHaveBeenCalledWith('hello');
2040
2002
  expect(onBooleanMount).toHaveBeenCalledWith(true);
2041
2003
  });
2042
- test('`onBind` event should be called when component mount', () => {
2004
+ test('Lifecycle `onBind` event should be called when component mount', () => {
2043
2005
  const onBind = jest.fn(entity => {
2044
2006
  void entity;
2045
2007
  });
@@ -2053,9 +2015,9 @@ describe('useUseCase', () => {
2053
2015
  };
2054
2016
  };
2055
2017
  renderHook(() => {
2056
- const _useUseCase26 = useUseCase(5, testUseCase),
2057
- _useUseCase27 = _slicedToArray(_useUseCase26, 2),
2058
- setEntity = _useUseCase27[1].setEntity;
2018
+ const _useUseCase24 = useUseCase(5, testUseCase),
2019
+ _useUseCase25 = _slicedToArray(_useUseCase24, 2),
2020
+ setEntity = _useUseCase25[1].setEntity;
2059
2021
  useMount(() => {
2060
2022
  setEntity(100);
2061
2023
  });
@@ -2063,7 +2025,7 @@ describe('useUseCase', () => {
2063
2025
  expect(onBind).toHaveBeenCalledTimes(1);
2064
2026
  expect(onBind).toHaveBeenCalledWith(5);
2065
2027
  });
2066
- test('`onChange` event should be called when entity change', () => {
2028
+ test('Lifecycle `onChange` event should be called when entity change', () => {
2067
2029
  const onChange = jest.fn((newEntity, oldEntity) => {
2068
2030
  void newEntity;
2069
2031
  void oldEntity;
@@ -2091,27 +2053,177 @@ describe('useUseCase', () => {
2091
2053
  expect(onChange).toHaveBeenCalledTimes(1);
2092
2054
  expect(onChange).toHaveBeenCalledWith(100, 5);
2093
2055
  });
2094
- test('`onUpdate` event should be called when entity change', () => {
2095
- const onUpdate = jest.fn((newEntity, oldEntity) => {
2056
+ test('Lifecycle `onChange` event should support returning a boolean to control whether the component updates', () => {
2057
+ let i = 0;
2058
+ const onChange = jest.fn((newEntity, oldEntity) => {
2096
2059
  void newEntity;
2097
2060
  void oldEntity;
2061
+ return i++ === 0;
2098
2062
  });
2063
+ const onRenderHook = jest.fn();
2099
2064
  const testUseCase = () => {
2100
2065
  const entityReducers = entityUseCase();
2101
2066
  lifecycleUseCase({
2102
- onUpdate
2067
+ onChange
2103
2068
  });
2104
2069
  return {
2105
2070
  ...entityReducers
2106
2071
  };
2107
2072
  };
2108
2073
  const _renderHook38 = renderHook(() => {
2109
- return useUseCase(5, testUseCase);
2074
+ const core = useUseCase(5, testUseCase);
2075
+ const _core = _slicedToArray(core, 1),
2076
+ value = _core[0];
2077
+ onRenderHook(value);
2078
+ return core;
2110
2079
  }),
2111
2080
  result = _renderHook38.result;
2112
2081
  const current = result.current;
2113
2082
  const _current9 = _slicedToArray(current, 2),
2114
2083
  setEntity = _current9[1].setEntity;
2084
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2085
+ expect(onRenderHook).toHaveBeenLastCalledWith(5);
2086
+ act(() => {
2087
+ setEntity(100);
2088
+ });
2089
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2090
+ act(() => {
2091
+ setEntity(200);
2092
+ });
2093
+ expect(onRenderHook).toHaveBeenCalledTimes(2);
2094
+ expect(onRenderHook).toHaveBeenLastCalledWith(200);
2095
+ });
2096
+ test('Lifecycle `onChange` event should support returning a Promise<boolean> to control whether the component updates', async () => {
2097
+ let i = 0;
2098
+ let promise = null;
2099
+ const onChange = jest.fn((newEntity, oldEntity) => {
2100
+ void newEntity;
2101
+ void oldEntity;
2102
+ promise = new Promise(res => {
2103
+ setTimeout(() => {
2104
+ res(i++ === 0);
2105
+ }, 500);
2106
+ });
2107
+ return promise;
2108
+ });
2109
+ const onRenderHook = jest.fn();
2110
+ const testUseCase = () => {
2111
+ const entityReducers = entityUseCase();
2112
+ lifecycleUseCase({
2113
+ onChange
2114
+ });
2115
+ return {
2116
+ ...entityReducers
2117
+ };
2118
+ };
2119
+ const _renderHook39 = renderHook(() => {
2120
+ const core = useUseCase(5, testUseCase);
2121
+ const _core2 = _slicedToArray(core, 1),
2122
+ value = _core2[0];
2123
+ onRenderHook(value);
2124
+ return core;
2125
+ }),
2126
+ result = _renderHook39.result;
2127
+ const current = result.current;
2128
+ const _current0 = _slicedToArray(current, 2),
2129
+ setEntity = _current0[1].setEntity;
2130
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2131
+ expect(onRenderHook).toHaveBeenLastCalledWith(5);
2132
+ act(() => {
2133
+ setEntity(100);
2134
+ });
2135
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2136
+ await act(async () => {
2137
+ await Promise.resolve(promise);
2138
+ });
2139
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2140
+ act(() => {
2141
+ setEntity(200);
2142
+ });
2143
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2144
+ await act(async () => {
2145
+ await Promise.resolve(promise);
2146
+ });
2147
+ expect(onRenderHook).toHaveBeenCalledTimes(2);
2148
+ expect(onRenderHook).toHaveBeenLastCalledWith(200);
2149
+ });
2150
+ test('Lifecycle `onChange` event should support returning a number to control whether the component updates', async () => {
2151
+ const onChange = jest.fn((newEntity, oldEntity) => {
2152
+ void newEntity;
2153
+ void oldEntity;
2154
+ return 500;
2155
+ });
2156
+ const onRenderHook = jest.fn();
2157
+ const testUseCase = () => {
2158
+ const entityReducers = entityUseCase();
2159
+ lifecycleUseCase({
2160
+ onChange
2161
+ });
2162
+ return {
2163
+ ...entityReducers
2164
+ };
2165
+ };
2166
+ const _renderHook40 = renderHook(() => {
2167
+ const core = useUseCase(5, testUseCase);
2168
+ const _core3 = _slicedToArray(core, 1),
2169
+ value = _core3[0];
2170
+ onRenderHook(value);
2171
+ return core;
2172
+ }),
2173
+ result = _renderHook40.result;
2174
+ const current = result.current;
2175
+ const _current1 = _slicedToArray(current, 2),
2176
+ setEntity = _current1[1].setEntity;
2177
+ expect(onRenderHook).toHaveBeenCalledTimes(1);
2178
+ expect(onRenderHook).toHaveBeenLastCalledWith(5);
2179
+ act(() => {
2180
+ setEntity(100);
2181
+ });
2182
+ expect(onRenderHook).toHaveBeenCalledTimes(2);
2183
+ expect(onRenderHook).toHaveBeenLastCalledWith(100);
2184
+ await act(() => {
2185
+ return new Promise(res => {
2186
+ setEntity(200);
2187
+ setTimeout(res, 100);
2188
+ });
2189
+ });
2190
+ expect(onRenderHook).toHaveBeenCalledTimes(2);
2191
+ await act(() => {
2192
+ return new Promise(res => {
2193
+ setEntity(300);
2194
+ setTimeout(res, 100);
2195
+ });
2196
+ });
2197
+ expect(onRenderHook).toHaveBeenCalledTimes(2);
2198
+ await act(() => {
2199
+ return new Promise(res => {
2200
+ setTimeout(res, 500);
2201
+ });
2202
+ });
2203
+ expect(onRenderHook).toHaveBeenCalledTimes(3);
2204
+ expect(onRenderHook).toHaveBeenLastCalledWith(300);
2205
+ });
2206
+ test('Lifecycle `onUpdate` event should be called when entity change', () => {
2207
+ const onUpdate = jest.fn((newEntity, oldEntity) => {
2208
+ void newEntity;
2209
+ void oldEntity;
2210
+ });
2211
+ const testUseCase = () => {
2212
+ const entityReducers = entityUseCase();
2213
+ lifecycleUseCase({
2214
+ onUpdate
2215
+ });
2216
+ return {
2217
+ ...entityReducers
2218
+ };
2219
+ };
2220
+ const _renderHook41 = renderHook(() => {
2221
+ return useUseCase(5, testUseCase);
2222
+ }),
2223
+ result = _renderHook41.result;
2224
+ const current = result.current;
2225
+ const _current10 = _slicedToArray(current, 2),
2226
+ setEntity = _current10[1].setEntity;
2115
2227
  expect(onUpdate).toHaveBeenCalledTimes(0);
2116
2228
  act(() => {
2117
2229
  setEntity(100);
@@ -2119,7 +2231,7 @@ describe('useUseCase', () => {
2119
2231
  expect(onUpdate).toHaveBeenCalledTimes(1);
2120
2232
  expect(onUpdate).toHaveBeenCalledWith(100, 5);
2121
2233
  });
2122
- test('`onUnbind` event should be called when component unmount', () => {
2234
+ test('Lifecycle `onUnbind` event should be called when component unmount', () => {
2123
2235
  const onUnbind = jest.fn(entity => {
2124
2236
  void entity;
2125
2237
  });
@@ -2132,21 +2244,21 @@ describe('useUseCase', () => {
2132
2244
  ...entityReducers
2133
2245
  };
2134
2246
  };
2135
- const _renderHook39 = renderHook(() => {
2136
- const _useUseCase28 = useUseCase(5, testUseCase),
2137
- _useUseCase29 = _slicedToArray(_useUseCase28, 2),
2138
- setEntity = _useUseCase29[1].setEntity;
2247
+ const _renderHook42 = renderHook(() => {
2248
+ const _useUseCase26 = useUseCase(5, testUseCase),
2249
+ _useUseCase27 = _slicedToArray(_useUseCase26, 2),
2250
+ setEntity = _useUseCase27[1].setEntity;
2139
2251
  useMount(() => {
2140
2252
  setEntity(100);
2141
2253
  });
2142
2254
  }),
2143
- unmount = _renderHook39.unmount;
2255
+ unmount = _renderHook42.unmount;
2144
2256
  expect(onUnbind).toHaveBeenCalledTimes(0);
2145
2257
  unmount();
2146
2258
  expect(onUnbind).toHaveBeenCalledTimes(1);
2147
2259
  expect(onUnbind).toHaveBeenCalledWith(100);
2148
2260
  });
2149
- test('`onAdopt` event should be called when entity change', () => {
2261
+ test('Lifecycle `onAdopt` event should be called when entity change', () => {
2150
2262
  const onAdopt = jest.fn((newEntity, oldeEntity) => {
2151
2263
  void newEntity;
2152
2264
  void oldeEntity;
@@ -2160,13 +2272,13 @@ describe('useUseCase', () => {
2160
2272
  ...entityReducers
2161
2273
  };
2162
2274
  };
2163
- const _renderHook40 = renderHook(() => {
2275
+ const _renderHook43 = renderHook(() => {
2164
2276
  return useUseCase(5, testUseCase);
2165
2277
  }),
2166
- result = _renderHook40.result;
2278
+ result = _renderHook43.result;
2167
2279
  const current = result.current;
2168
- const _current0 = _slicedToArray(current, 2),
2169
- setEntity = _current0[1].setEntity;
2280
+ const _current11 = _slicedToArray(current, 2),
2281
+ setEntity = _current11[1].setEntity;
2170
2282
  expect(onAdopt).toHaveBeenCalledTimes(1);
2171
2283
  expect(onAdopt).toHaveBeenCalledWith(5);
2172
2284
  act(() => {
@@ -2175,7 +2287,7 @@ describe('useUseCase', () => {
2175
2287
  expect(onAdopt).toHaveBeenCalledTimes(2);
2176
2288
  expect(onAdopt).toHaveBeenCalledWith(100, 5);
2177
2289
  });
2178
- test('`onDiscard` event should be called when component unmount', () => {
2290
+ test('Lifecycle `onDiscard` event should be called when component unmount', () => {
2179
2291
  const onDiscard = jest.fn(entity => {
2180
2292
  void entity;
2181
2293
  });
@@ -2188,14 +2300,14 @@ describe('useUseCase', () => {
2188
2300
  ...entityReducers
2189
2301
  };
2190
2302
  };
2191
- const _renderHook41 = renderHook(() => {
2303
+ const _renderHook44 = renderHook(() => {
2192
2304
  return useUseCase(5, testUseCase);
2193
2305
  }),
2194
- result = _renderHook41.result,
2195
- unmount = _renderHook41.unmount;
2306
+ result = _renderHook44.result,
2307
+ unmount = _renderHook44.unmount;
2196
2308
  const current = result.current;
2197
- const _current1 = _slicedToArray(current, 2),
2198
- setEntity = _current1[1].setEntity;
2309
+ const _current12 = _slicedToArray(current, 2),
2310
+ setEntity = _current12[1].setEntity;
2199
2311
  expect(onDiscard).toHaveBeenCalledTimes(0);
2200
2312
  act(() => {
2201
2313
  setEntity(100);
@@ -2206,6 +2318,80 @@ describe('useUseCase', () => {
2206
2318
  expect(onDiscard).toHaveBeenCalledTimes(2);
2207
2319
  expect(onDiscard).toHaveBeenCalledWith(100);
2208
2320
  });
2321
+ test('Should support call lifecycleUseCase at parent usecase and child usecase', () => {
2322
+ const onParentBind = jest.fn(entity => {
2323
+ void entity;
2324
+ });
2325
+ const onParentChange = jest.fn((newEntity, oldEntity) => {
2326
+ void newEntity;
2327
+ void oldEntity;
2328
+ });
2329
+ const onParentUnbind = jest.fn(entity => {
2330
+ void entity;
2331
+ });
2332
+ const onChildBind = jest.fn(entity => {
2333
+ void entity;
2334
+ });
2335
+ const onChildChange = jest.fn((newEntity, oldEntity) => {
2336
+ void newEntity;
2337
+ void oldEntity;
2338
+ });
2339
+ const onChildUnbind = jest.fn(entity => {
2340
+ void entity;
2341
+ });
2342
+ const parentUseCase = () => {
2343
+ const entityReducers = entityUseCase();
2344
+ lifecycleUseCase({
2345
+ onBind: onParentBind,
2346
+ onUnbind: onParentUnbind,
2347
+ onChange: onParentChange
2348
+ });
2349
+ return {
2350
+ ...entityReducers
2351
+ };
2352
+ };
2353
+ const childUseCase = () => {
2354
+ const parentReducers = parentUseCase();
2355
+ lifecycleUseCase({
2356
+ onBind: onChildBind,
2357
+ onUnbind: onChildUnbind,
2358
+ onChange: onChildChange
2359
+ });
2360
+ return {
2361
+ ...parentReducers
2362
+ };
2363
+ };
2364
+ const _renderHook45 = renderHook(() => {
2365
+ return useUseCase(5, childUseCase);
2366
+ }),
2367
+ result = _renderHook45.result,
2368
+ unmount = _renderHook45.unmount;
2369
+ const current = result.current;
2370
+ const _current13 = _slicedToArray(current, 2),
2371
+ setEntity = _current13[1].setEntity;
2372
+ expect(onParentBind).toHaveBeenCalledTimes(1);
2373
+ expect(onParentBind).toHaveBeenCalledWith(5);
2374
+ expect(onParentChange).toHaveBeenCalledTimes(0);
2375
+ expect(onChildBind).toHaveBeenCalledTimes(1);
2376
+ expect(onChildBind).toHaveBeenCalledWith(5);
2377
+ expect(onChildChange).toHaveBeenCalledTimes(0);
2378
+ act(() => {
2379
+ setEntity(100);
2380
+ });
2381
+ expect(onParentBind).toHaveBeenCalledTimes(1);
2382
+ expect(onParentChange).toHaveBeenCalledTimes(1);
2383
+ expect(onParentChange).toHaveBeenCalledWith(100, 5);
2384
+ expect(onChildBind).toHaveBeenCalledTimes(1);
2385
+ expect(onChildChange).toHaveBeenCalledTimes(1);
2386
+ expect(onChildChange).toHaveBeenCalledWith(100, 5);
2387
+ expect(onParentUnbind).toHaveBeenCalledTimes(0);
2388
+ expect(onChildUnbind).toHaveBeenCalledTimes(0);
2389
+ unmount();
2390
+ expect(onParentUnbind).toHaveBeenCalledTimes(1);
2391
+ expect(onParentUnbind).toHaveBeenCalledWith(100);
2392
+ expect(onChildUnbind).toHaveBeenCalledTimes(1);
2393
+ expect(onChildUnbind).toHaveBeenCalledWith(100);
2394
+ });
2209
2395
  });
2210
2396
  describe('`useUseCase` should work the same as `useContextualCoreCollection`', () => {
2211
2397
  test('Provider should be returned in child component', () => {
@@ -2213,23 +2399,23 @@ describe('useUseCase', () => {
2213
2399
  const TestChild = () => {
2214
2400
  const core = useUseCase(fileUseCase);
2215
2401
  const length = core.length;
2216
- const _core = _slicedToArray(core, 3),
2217
- file = _core[0],
2218
- Provider = _core[2];
2402
+ const _core4 = _slicedToArray(core, 3),
2403
+ file = _core4[0],
2404
+ Provider = _core4[2];
2219
2405
  useEffect(() => {
2220
2406
  onCore(file, length, typeof Provider);
2221
2407
  });
2222
2408
  return _jsx(Fragment, {});
2223
2409
  };
2224
2410
  const TestParent = () => {
2225
- const _useUseCase30 = useUseCase(() => {
2411
+ const _useUseCase28 = useUseCase(() => {
2226
2412
  return {
2227
2413
  ...defaultFile,
2228
2414
  ext: EXT_1
2229
2415
  };
2230
2416
  }, fileUseCase),
2231
- _useUseCase31 = _slicedToArray(_useUseCase30, 3),
2232
- Provider = _useUseCase31[2];
2417
+ _useUseCase29 = _slicedToArray(_useUseCase28, 3),
2418
+ Provider = _useUseCase29[2];
2233
2419
  return _jsx(Provider, {
2234
2420
  children: _jsx(TestChild, {})
2235
2421
  });
@@ -2246,10 +2432,10 @@ describe('useUseCase', () => {
2246
2432
  const onPopupFile = jest.fn();
2247
2433
  const buttonText = 'button';
2248
2434
  const Popup = () => {
2249
- const _useUseCase32 = useUseCase(fileUseCase),
2250
- _useUseCase33 = _slicedToArray(_useUseCase32, 2),
2251
- file = _useUseCase33[0],
2252
- setEntity = _useUseCase33[1].setEntity;
2435
+ const _useUseCase30 = useUseCase(fileUseCase),
2436
+ _useUseCase31 = _slicedToArray(_useUseCase30, 2),
2437
+ file = _useUseCase31[0],
2438
+ setEntity = _useUseCase31[1].setEntity;
2253
2439
  const onClick = () => {
2254
2440
  setEntity({
2255
2441
  ext: EXT_2
@@ -2264,15 +2450,15 @@ describe('useUseCase', () => {
2264
2450
  });
2265
2451
  };
2266
2452
  const TestChild = () => {
2267
- const _useUseCase34 = useUseCase(fileUseCase),
2268
- _useUseCase35 = _slicedToArray(_useUseCase34, 3),
2269
- Provider = _useUseCase35[2];
2453
+ const _useUseCase32 = useUseCase(fileUseCase),
2454
+ _useUseCase33 = _slicedToArray(_useUseCase32, 3),
2455
+ Provider = _useUseCase33[2];
2270
2456
  return createPortal(_jsx(Provider, {
2271
2457
  children: _jsx(Popup, {})
2272
2458
  }), document.body);
2273
2459
  };
2274
2460
  const TestParent = () => {
2275
- const _useUseCase36 = useUseCase(() => {
2461
+ const _useUseCase34 = useUseCase(() => {
2276
2462
  return {
2277
2463
  ...defaultFile,
2278
2464
  ext: EXT_1
@@ -2280,9 +2466,9 @@ describe('useUseCase', () => {
2280
2466
  }, fileUseCase, {
2281
2467
  onChange
2282
2468
  }),
2283
- _useUseCase37 = _slicedToArray(_useUseCase36, 3),
2284
- file = _useUseCase37[0],
2285
- Provider = _useUseCase37[2];
2469
+ _useUseCase35 = _slicedToArray(_useUseCase34, 3),
2470
+ file = _useUseCase35[0],
2471
+ Provider = _useUseCase35[2];
2286
2472
  useEffect(() => {
2287
2473
  onRootFile(file);
2288
2474
  }, [file]);
@@ -2347,9 +2533,9 @@ describe('useUseCase', () => {
2347
2533
  return _jsx(Fragment, {});
2348
2534
  };
2349
2535
  const B = () => {
2350
- const _useUseCase38 = useUseCase(defaultFile, mockUseCase),
2351
- _useUseCase39 = _slicedToArray(_useUseCase38, 3),
2352
- Provider = _useUseCase39[2];
2536
+ const _useUseCase36 = useUseCase(defaultFile, mockUseCase),
2537
+ _useUseCase37 = _slicedToArray(_useUseCase36, 3),
2538
+ Provider = _useUseCase37[2];
2353
2539
  return _jsx(Provider, {
2354
2540
  children: _jsx(A, {})
2355
2541
  });
@@ -2370,9 +2556,9 @@ describe('useUseCase', () => {
2370
2556
  };
2371
2557
  };
2372
2558
  const A = () => {
2373
- const _useUseCase40 = useUseCase(stringUseCase),
2374
- _useUseCase41 = _slicedToArray(_useUseCase40, 2),
2375
- add = _useUseCase41[1].add;
2559
+ const _useUseCase38 = useUseCase(stringUseCase),
2560
+ _useUseCase39 = _slicedToArray(_useUseCase38, 2),
2561
+ add = _useUseCase39[1].add;
2376
2562
  const update = useUpdate();
2377
2563
  const onClick = () => {
2378
2564
  update();
@@ -2384,9 +2570,9 @@ describe('useUseCase', () => {
2384
2570
  });
2385
2571
  };
2386
2572
  const B = () => {
2387
- const _useUseCase42 = useUseCase('', stringUseCase),
2388
- _useUseCase43 = _slicedToArray(_useUseCase42, 3),
2389
- Provider = _useUseCase43[2];
2573
+ const _useUseCase40 = useUseCase('', stringUseCase),
2574
+ _useUseCase41 = _slicedToArray(_useUseCase40, 3),
2575
+ Provider = _useUseCase41[2];
2390
2576
  return _jsx(Provider, {
2391
2577
  children: _jsx(A, {})
2392
2578
  });
@@ -2411,9 +2597,9 @@ describe('useUseCase', () => {
2411
2597
  };
2412
2598
  };
2413
2599
  const A = () => {
2414
- const _useUseCase44 = useUseCase(stringUseCase),
2415
- _useUseCase45 = _slicedToArray(_useUseCase44, 2),
2416
- add = _useUseCase45[1].add;
2600
+ const _useUseCase42 = useUseCase(stringUseCase),
2601
+ _useUseCase43 = _slicedToArray(_useUseCase42, 2),
2602
+ add = _useUseCase43[1].add;
2417
2603
  const onClick = () => {
2418
2604
  add('x');
2419
2605
  };
@@ -2427,9 +2613,9 @@ describe('useUseCase', () => {
2427
2613
  });
2428
2614
  };
2429
2615
  const B = () => {
2430
- const _useUseCase46 = useUseCase('', stringUseCase),
2431
- _useUseCase47 = _slicedToArray(_useUseCase46, 3),
2432
- Provider = _useUseCase47[2];
2616
+ const _useUseCase44 = useUseCase('', stringUseCase),
2617
+ _useUseCase45 = _slicedToArray(_useUseCase44, 3),
2618
+ Provider = _useUseCase45[2];
2433
2619
  return _jsx(Provider, {
2434
2620
  children: _jsx(A, {})
2435
2621
  });
@@ -2458,11 +2644,11 @@ describe('useUseCase', () => {
2458
2644
  };
2459
2645
  };
2460
2646
  const A = () => {
2461
- const _useUseCase48 = useUseCase(stringUseCase),
2462
- _useUseCase49 = _slicedToArray(_useUseCase48, 2),
2463
- _useUseCase49$ = _useUseCase49[1],
2464
- add = _useUseCase49$.add,
2465
- setEntity = _useUseCase49$.setEntity;
2647
+ const _useUseCase46 = useUseCase(stringUseCase),
2648
+ _useUseCase47 = _slicedToArray(_useUseCase46, 2),
2649
+ _useUseCase47$ = _useUseCase47[1],
2650
+ add = _useUseCase47$.add,
2651
+ setEntity = _useUseCase47$.setEntity;
2466
2652
  const update = useUpdate();
2467
2653
  add(addedText);
2468
2654
  const onSet = () => {
@@ -2482,9 +2668,9 @@ describe('useUseCase', () => {
2482
2668
  });
2483
2669
  };
2484
2670
  const B = () => {
2485
- const _useUseCase50 = useUseCase('', stringUseCase),
2486
- _useUseCase51 = _slicedToArray(_useUseCase50, 3),
2487
- Provider = _useUseCase51[2];
2671
+ const _useUseCase48 = useUseCase('', stringUseCase),
2672
+ _useUseCase49 = _slicedToArray(_useUseCase48, 3),
2673
+ Provider = _useUseCase49[2];
2488
2674
  return _jsx(Provider, {
2489
2675
  children: _jsx(A, {})
2490
2676
  });
@@ -2529,12 +2715,12 @@ describe('useUseCase', () => {
2529
2715
  return _jsx(Fragment, {});
2530
2716
  };
2531
2717
  const C = () => {
2532
- const _useUseCase52 = useUseCase(defaultFile, fileUseCase, {
2718
+ const _useUseCase50 = useUseCase(defaultFile, fileUseCase, {
2533
2719
  onChange: onChangeC
2534
2720
  }),
2535
- _useUseCase53 = _slicedToArray(_useUseCase52, 3),
2536
- setPath = _useUseCase53[1].setPath,
2537
- Provider = _useUseCase53[2];
2721
+ _useUseCase51 = _slicedToArray(_useUseCase50, 3),
2722
+ setPath = _useUseCase51[1].setPath,
2723
+ Provider = _useUseCase51[2];
2538
2724
  const onFirstClick = () => {
2539
2725
  setPath(PATH_1);
2540
2726
  };
@@ -2561,11 +2747,11 @@ describe('useUseCase', () => {
2561
2747
  const firstButtonText = 'first button';
2562
2748
  const secondButtonText = 'second button';
2563
2749
  const A = () => {
2564
- const _useUseCase54 = useUseCase(fileUseCase, {
2750
+ const _useUseCase52 = useUseCase(fileUseCase, {
2565
2751
  onChange
2566
2752
  }),
2567
- _useUseCase55 = _slicedToArray(_useUseCase54, 2),
2568
- setPath = _useUseCase55[1].setPath;
2753
+ _useUseCase53 = _slicedToArray(_useUseCase52, 2),
2754
+ setPath = _useUseCase53[1].setPath;
2569
2755
  const onFirstClick = () => {
2570
2756
  setPath(PATH_1);
2571
2757
  onChange = onSecondChange;
@@ -2584,9 +2770,9 @@ describe('useUseCase', () => {
2584
2770
  });
2585
2771
  };
2586
2772
  const B = () => {
2587
- const _useUseCase56 = useUseCase(defaultFile, fileUseCase),
2588
- _useUseCase57 = _slicedToArray(_useUseCase56, 3),
2589
- Provider = _useUseCase57[2];
2773
+ const _useUseCase54 = useUseCase(defaultFile, fileUseCase),
2774
+ _useUseCase55 = _slicedToArray(_useUseCase54, 3),
2775
+ Provider = _useUseCase55[2];
2590
2776
  return _jsx(Provider, {
2591
2777
  children: _jsx(A, {})
2592
2778
  });
@@ -2605,73 +2791,17 @@ describe('useUseCase', () => {
2605
2791
  path: PATH_1
2606
2792
  });
2607
2793
  });
2608
- test('event options should be triggered at child components', async () => {
2609
- let readFilePromise = null;
2610
- const buttonText = 'my button';
2611
- const onReadFile1 = jest.fn(path => {
2612
- void path;
2613
- return 512;
2614
- });
2615
- const onReadFile2 = jest.fn(path => {
2616
- void path;
2617
- return 1024;
2618
- });
2619
- const onSizeChange = jest.fn();
2620
- const A = () => {
2621
- const _useUseCase58 = useUseCase(fileUseCase, {
2622
- onReadFile: onReadFile1
2623
- }),
2624
- _useUseCase59 = _slicedToArray(_useUseCase58, 2),
2625
- size = _useUseCase59[0].size,
2626
- readFile = _useUseCase59[1].readFile;
2627
- const onClick = () => {
2628
- readFilePromise = readFile(PATH_1);
2629
- };
2630
- useUpdateEffect(() => {
2631
- onSizeChange(size);
2632
- }, [size]);
2633
- return _jsx(Fragment, {
2634
- children: _jsx("button", {
2635
- onClick: onClick,
2636
- children: buttonText
2637
- })
2638
- });
2639
- };
2640
- const B = () => {
2641
- const _useUseCase60 = useUseCase(defaultFile, fileUseCase, {
2642
- onReadFile: onReadFile2
2643
- }),
2644
- _useUseCase61 = _slicedToArray(_useUseCase60, 3),
2645
- Provider = _useUseCase61[2];
2646
- return _jsx(Provider, {
2647
- children: _jsx(A, {})
2648
- });
2649
- };
2650
- render(_jsx(B, {}));
2651
- expect(onReadFile1).toHaveBeenCalledTimes(0);
2652
- expect(onReadFile2).toHaveBeenCalledTimes(0);
2653
- await act(async () => {
2654
- fireEvent.click(screen.getByText(buttonText));
2655
- await readFilePromise;
2656
- });
2657
- expect(onReadFile1).toHaveBeenCalledTimes(1);
2658
- expect(onReadFile2).toHaveBeenCalledWith(PATH_1);
2659
- expect(onReadFile1).toHaveBeenCalledTimes(1);
2660
- expect(onReadFile2).toHaveBeenCalledWith(PATH_1);
2661
- expect(onSizeChange).toHaveBeenCalledTimes(1);
2662
- expect(onSizeChange).toHaveBeenCalledWith(1024);
2663
- });
2664
2794
  test('`options.watch` should be triggered at child components', () => {
2665
2795
  const onExtChange = jest.fn();
2666
2796
  const firstButtonText = 'first button';
2667
2797
  const A = () => {
2668
- const _useUseCase62 = useUseCase(fileUseCase, {
2798
+ const _useUseCase56 = useUseCase(fileUseCase, {
2669
2799
  watch: {
2670
2800
  ext: onExtChange
2671
2801
  }
2672
2802
  }),
2673
- _useUseCase63 = _slicedToArray(_useUseCase62, 2),
2674
- setPath = _useUseCase63[1].setPath;
2803
+ _useUseCase57 = _slicedToArray(_useUseCase56, 2),
2804
+ setPath = _useUseCase57[1].setPath;
2675
2805
  const onFirstClick = () => {
2676
2806
  setPath(PATH_1);
2677
2807
  };
@@ -2681,9 +2811,9 @@ describe('useUseCase', () => {
2681
2811
  });
2682
2812
  };
2683
2813
  const B = () => {
2684
- const _useUseCase64 = useUseCase(defaultFile, fileUseCase, {}),
2685
- _useUseCase65 = _slicedToArray(_useUseCase64, 3),
2686
- Provider = _useUseCase65[2];
2814
+ const _useUseCase58 = useUseCase(defaultFile, fileUseCase, {}),
2815
+ _useUseCase59 = _slicedToArray(_useUseCase58, 3),
2816
+ Provider = _useUseCase59[2];
2687
2817
  return _jsx(Provider, {
2688
2818
  children: _jsx(A, {})
2689
2819
  });
@@ -2734,14 +2864,14 @@ describe('useUseCase', () => {
2734
2864
  return _jsx(Fragment, {});
2735
2865
  };
2736
2866
  const C = () => {
2737
- const _useUseCase66 = useUseCase(defaultFile, fileUseCase, {
2867
+ const _useUseCase60 = useUseCase(defaultFile, fileUseCase, {
2738
2868
  watch: {
2739
2869
  ext: onChangeC
2740
2870
  }
2741
2871
  }),
2742
- _useUseCase67 = _slicedToArray(_useUseCase66, 3),
2743
- setPath = _useUseCase67[1].setPath,
2744
- Provider = _useUseCase67[2];
2872
+ _useUseCase61 = _slicedToArray(_useUseCase60, 3),
2873
+ setPath = _useUseCase61[1].setPath,
2874
+ Provider = _useUseCase61[2];
2745
2875
  const onFirstClick = () => {
2746
2876
  setPath(PATH_1);
2747
2877
  };
@@ -2768,13 +2898,13 @@ describe('useUseCase', () => {
2768
2898
  const firstButtonText = 'first button';
2769
2899
  const secondButtonText = 'second button';
2770
2900
  const A = () => {
2771
- const _useUseCase68 = useUseCase(fileUseCase, {
2901
+ const _useUseCase62 = useUseCase(fileUseCase, {
2772
2902
  watch: {
2773
2903
  ext: onExtChange
2774
2904
  }
2775
2905
  }),
2776
- _useUseCase69 = _slicedToArray(_useUseCase68, 2),
2777
- setPath = _useUseCase69[1].setPath;
2906
+ _useUseCase63 = _slicedToArray(_useUseCase62, 2),
2907
+ setPath = _useUseCase63[1].setPath;
2778
2908
  const onFirstClick = () => {
2779
2909
  setPath(PATH_1);
2780
2910
  onExtChange = onSecondExtChange;
@@ -2793,9 +2923,9 @@ describe('useUseCase', () => {
2793
2923
  });
2794
2924
  };
2795
2925
  const B = () => {
2796
- const _useUseCase70 = useUseCase(defaultFile, fileUseCase),
2797
- _useUseCase71 = _slicedToArray(_useUseCase70, 3),
2798
- Provider = _useUseCase71[2];
2926
+ const _useUseCase64 = useUseCase(defaultFile, fileUseCase),
2927
+ _useUseCase65 = _slicedToArray(_useUseCase64, 3),
2928
+ Provider = _useUseCase65[2];
2799
2929
  return _jsx(Provider, {
2800
2930
  children: _jsx(A, {})
2801
2931
  });
@@ -2823,38 +2953,38 @@ describe('useUseCase', () => {
2823
2953
  });
2824
2954
  describe('`useUseCase` should work the same as `useReducers`', () => {
2825
2955
  test('`entity` should equal `defaultFile`', () => {
2826
- const _renderHook42 = renderHook(() => {
2956
+ const _renderHook46 = renderHook(() => {
2827
2957
  return useUseCase(mathUseCase);
2828
2958
  }),
2829
- result = _renderHook42.result;
2959
+ result = _renderHook46.result;
2830
2960
  const reducers = result.current;
2831
2961
  expect(Array.isArray(reducers)).toBe(false);
2832
2962
  });
2833
2963
  test('returned reducer should work', () => {
2834
- const _renderHook43 = renderHook(() => {
2964
+ const _renderHook47 = renderHook(() => {
2835
2965
  return useUseCase(mathUseCase);
2836
2966
  }),
2837
- result = _renderHook43.result;
2967
+ result = _renderHook47.result;
2838
2968
  const reducers = result.current;
2839
2969
  const add = reducers.add;
2840
2970
  expect(add(1, 2)).toBe(3);
2841
2971
  });
2842
2972
  test('`usecase` should be called only once if deps has not provided', () => {
2843
2973
  const mockUseCase = jest.fn(mathUseCase);
2844
- const _renderHook44 = renderHook(() => {
2974
+ const _renderHook48 = renderHook(() => {
2845
2975
  return useUseCase(mockUseCase);
2846
2976
  }),
2847
- rerender = _renderHook44.rerender;
2977
+ rerender = _renderHook48.rerender;
2848
2978
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2849
2979
  rerender();
2850
2980
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2851
2981
  });
2852
2982
  test('`usecase` should be called only once if deps has not changed', () => {
2853
2983
  const mockUseCase = jest.fn(mathUseCase);
2854
- const _renderHook45 = renderHook(() => {
2984
+ const _renderHook49 = renderHook(() => {
2855
2985
  return useUseCase(mockUseCase, {}, [1, 'x']);
2856
2986
  }),
2857
- rerender = _renderHook45.rerender;
2987
+ rerender = _renderHook49.rerender;
2858
2988
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2859
2989
  rerender();
2860
2990
  expect(mockUseCase).toHaveBeenCalledTimes(1);
@@ -2862,10 +2992,10 @@ describe('useUseCase', () => {
2862
2992
  test('`usecase` should be called if deps has changed', () => {
2863
2993
  let i = 0;
2864
2994
  const mockUseCase = jest.fn(mathUseCase);
2865
- const _renderHook46 = renderHook(() => {
2995
+ const _renderHook50 = renderHook(() => {
2866
2996
  return useUseCase(mockUseCase, {}, [i++, 'x']);
2867
2997
  }),
2868
- rerender = _renderHook46.rerender;
2998
+ rerender = _renderHook50.rerender;
2869
2999
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2870
3000
  rerender();
2871
3001
  expect(mockUseCase).toHaveBeenCalledTimes(2);
@@ -2873,8 +3003,8 @@ describe('useUseCase', () => {
2873
3003
  test('reducer call should not be cached if component is at rendering phase', () => {
2874
3004
  const buttonText = 'button';
2875
3005
  const CacheTestComponent = () => {
2876
- const _useUseCase72 = useUseCase(mathUseCase),
2877
- subtraction = _useUseCase72.subtraction;
3006
+ const _useUseCase66 = useUseCase(mathUseCase),
3007
+ subtraction = _useUseCase66.subtraction;
2878
3008
  const update = useUpdate();
2879
3009
  const onClick = () => {
2880
3010
  update();
@@ -2897,8 +3027,8 @@ describe('useUseCase', () => {
2897
3027
  test('reducer call should not be cached if component is not at rendering phase', () => {
2898
3028
  const buttonText = 'button';
2899
3029
  const CacheTestComponent = () => {
2900
- const _useUseCase73 = useUseCase(mathUseCase),
2901
- subtraction = _useUseCase73.subtraction;
3030
+ const _useUseCase67 = useUseCase(mathUseCase),
3031
+ subtraction = _useUseCase67.subtraction;
2902
3032
  const onClick = () => {
2903
3033
  subtraction(5, 3);
2904
3034
  };
@@ -2926,8 +3056,8 @@ describe('useUseCase', () => {
2926
3056
  let count = 0;
2927
3057
  const buttonText = 'button';
2928
3058
  const StringUseCaseTestComponent = () => {
2929
- const _useUseCase74 = useUseCase(mathUseCase),
2930
- subtraction = _useUseCase74.subtraction;
3059
+ const _useUseCase68 = useUseCase(mathUseCase),
3060
+ subtraction = _useUseCase68.subtraction;
2931
3061
  const update = useUpdate();
2932
3062
  subtraction(5, count++);
2933
3063
  const onUpdate = () => {
@@ -2949,12 +3079,12 @@ describe('useUseCase', () => {
2949
3079
  expect(subtractionReducer).toHaveReturnedWith(4);
2950
3080
  });
2951
3081
  test('`options.extraValue` should be added after call `add` method', () => {
2952
- const _renderHook47 = renderHook(() => {
3082
+ const _renderHook51 = renderHook(() => {
2953
3083
  return useUseCase(mathUseCase, {
2954
3084
  extraValue: 5
2955
3085
  });
2956
3086
  }),
2957
- result = _renderHook47.result;
3087
+ result = _renderHook51.result;
2958
3088
  const reducers = result.current;
2959
3089
  const add = reducers.add;
2960
3090
  expect(add(1, 2)).toBe(8);
@@ -2962,7 +3092,7 @@ describe('useUseCase', () => {
2962
3092
  test('when `options` has changed, it should not trigger update', () => {
2963
3093
  const onUpdate = jest.fn();
2964
3094
  const onDeepUpdate = jest.fn();
2965
- const _renderHook48 = renderHook(() => {
3095
+ const _renderHook52 = renderHook(() => {
2966
3096
  const _useState7 = useState(0),
2967
3097
  _useState8 = _slicedToArray(_useState7, 2),
2968
3098
  extraValue = _useState8[0],
@@ -2978,7 +3108,7 @@ describe('useUseCase', () => {
2978
3108
  }, [reducers]);
2979
3109
  return setExtraValue;
2980
3110
  }),
2981
- result = _renderHook48.result;
3111
+ result = _renderHook52.result;
2982
3112
  expect(onUpdate).toHaveBeenCalledTimes(0);
2983
3113
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2984
3114
  act(() => {
@@ -2990,7 +3120,7 @@ describe('useUseCase', () => {
2990
3120
  test('when `deps` change, it should update reducers', () => {
2991
3121
  const onUpdate = jest.fn();
2992
3122
  const onDeepUpdate = jest.fn();
2993
- const _renderHook49 = renderHook(() => {
3123
+ const _renderHook53 = renderHook(() => {
2994
3124
  const _useState9 = useState(0),
2995
3125
  _useState0 = _slicedToArray(_useState9, 2),
2996
3126
  extraValue = _useState0[0],
@@ -3006,7 +3136,7 @@ describe('useUseCase', () => {
3006
3136
  }, [reducers]);
3007
3137
  return setExtraValue;
3008
3138
  }),
3009
- result = _renderHook49.result;
3139
+ result = _renderHook53.result;
3010
3140
  expect(onUpdate).toHaveBeenCalledTimes(0);
3011
3141
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
3012
3142
  act(() => {
@@ -3018,7 +3148,7 @@ describe('useUseCase', () => {
3018
3148
  test('empty `deps` should not update reducers', () => {
3019
3149
  const onUpdate = jest.fn();
3020
3150
  const onDeepUpdate = jest.fn();
3021
- const _renderHook50 = renderHook(() => {
3151
+ const _renderHook54 = renderHook(() => {
3022
3152
  const _useState1 = useState(0),
3023
3153
  _useState10 = _slicedToArray(_useState1, 2),
3024
3154
  extraValue = _useState10[0],
@@ -3034,7 +3164,7 @@ describe('useUseCase', () => {
3034
3164
  }, [reducers]);
3035
3165
  return setExtraValue;
3036
3166
  }),
3037
- result = _renderHook50.result;
3167
+ result = _renderHook54.result;
3038
3168
  expect(onUpdate).toHaveBeenCalledTimes(0);
3039
3169
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
3040
3170
  act(() => {