@mic-rexjs/usecases-react 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +1 -1
  2. package/dist/index.min.js +1 -1
  3. package/es/configs/defaultUseCaseContext/index.d.ts +2 -3
  4. package/es/configs/defaultUseCaseContext/index.js +1 -1
  5. package/es/configs/defaultUseCaseContext/types.d.ts +11 -3
  6. package/es/configs/usecaseContextMap/types.d.ts +2 -5
  7. package/es/enums/UseCaseModes/index.d.ts +6 -0
  8. package/es/enums/UseCaseModes/index.js +7 -0
  9. package/es/hooks/useChangeCallbackCollection/index.d.ts +3 -0
  10. package/es/hooks/useChangeCallbackCollection/index.js +29 -0
  11. package/es/hooks/useGlobalUseCase/index.d.ts +2 -0
  12. package/es/hooks/useGlobalUseCase/index.js +11 -0
  13. package/es/hooks/useGlobalUseCase/index.test.js +71 -0
  14. package/es/hooks/useGlobalUseCase/types.d.ts +12 -0
  15. package/es/hooks/useGlobalUseCase/types.js +1 -0
  16. package/es/hooks/useProvider/index.d.ts +3 -5
  17. package/es/hooks/useProvider/index.js +25 -17
  18. package/es/hooks/useStatelessUseCase/index.d.ts +2 -0
  19. package/es/hooks/useStatelessUseCase/index.js +8 -0
  20. package/es/hooks/useStatelessUseCase/index.test.d.ts +1 -0
  21. package/es/hooks/useStatelessUseCase/index.test.js +75 -0
  22. package/es/hooks/useStatelessUseCase/types.d.ts +5 -0
  23. package/es/hooks/useStatelessUseCase/types.js +1 -0
  24. package/es/hooks/useUseCase/index.js +27 -29
  25. package/es/hooks/useUseCase/index.test.js +243 -207
  26. package/es/hooks/useUseCase/types.d.ts +55 -8
  27. package/es/hooks/useUseCaseContext/index.d.ts +2 -2
  28. package/es/hooks/useUseCaseContext/index.js +1 -1
  29. package/es/index.d.ts +2 -0
  30. package/es/index.js +2 -0
  31. package/es/methods/getRootEntity/index.d.ts +2 -1
  32. package/es/methods/getRootEntity/index.js +6 -5
  33. package/es/methods/initEntityReducers/index.js +1 -1
  34. package/es/methods/toMaxArguments/index.d.ts +3 -0
  35. package/es/methods/toMaxArguments/index.js +28 -0
  36. package/es/methods/triggerCallbacks/index.d.ts +2 -3
  37. package/es/methods/triggerCallbacks/index.js +3 -12
  38. package/lib/configs/defaultUseCaseContext/index.js +1 -1
  39. package/lib/enums/UseCaseModes/index.js +14 -0
  40. package/lib/hooks/useChangeCallbackCollection/index.js +37 -0
  41. package/lib/hooks/useGlobalUseCase/index.js +25 -0
  42. package/lib/hooks/useGlobalUseCase/index.test.js +78 -0
  43. package/lib/hooks/useProvider/index.js +30 -24
  44. package/lib/hooks/useStatelessUseCase/index.js +22 -0
  45. package/lib/hooks/useStatelessUseCase/index.test.js +78 -0
  46. package/lib/hooks/useStatelessUseCase/types.js +5 -0
  47. package/lib/hooks/useUseCase/index.js +40 -31
  48. package/lib/hooks/useUseCase/index.test.js +337 -288
  49. package/lib/hooks/useUseCaseContext/index.js +1 -1
  50. package/lib/index.js +15 -1
  51. package/lib/methods/getRootEntity/index.js +6 -5
  52. package/lib/methods/initEntityReducers/index.js +2 -3
  53. package/lib/methods/toMaxArguments/index.js +25 -0
  54. package/lib/methods/triggerCallbacks/index.js +3 -13
  55. package/package.json +1 -1
  56. package/es/hooks/useOptionsRefCollection/index.d.ts +0 -3
  57. package/es/hooks/useOptionsRefCollection/index.js +0 -22
  58. package/es/hooks/useOptionsRefCollection/types.d.ts +0 -2
  59. package/lib/hooks/useOptionsRefCollection/index.js +0 -29
  60. /package/es/hooks/{useOptionsRefCollection/types.js → useGlobalUseCase/index.test.d.ts} +0 -0
  61. /package/lib/hooks/{useOptionsRefCollection → useGlobalUseCase}/types.js +0 -0
@@ -16,6 +16,7 @@ var _react = require("@testing-library/react");
16
16
  var _ = require(".");
17
17
  var _ahooks = require("ahooks");
18
18
  var _react2 = require("react");
19
+ var _UseCaseModes = require("../../enums/UseCaseModes");
19
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
22
  function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
@@ -23,6 +24,7 @@ function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r
23
24
  var EXT_1 = '.png';
24
25
  var EXT_2 = '.jpg';
25
26
  var PATH_1 = "hello".concat(EXT_1);
27
+ var PATH_2 = "hello".concat(EXT_2);
26
28
  var PARENT_BUTTON_TEXT = 'parent button';
27
29
  var CHILD_BUTTON_TEXT = 'child button';
28
30
  var defaultFile = {
@@ -141,7 +143,7 @@ var Child = function Child(_ref2) {
141
143
  path = _ref3.path,
142
144
  ext = _ref3.ext;
143
145
  var onClick = function onClick() {
144
- setPath('');
146
+ setPath(PATH_2);
145
147
  };
146
148
  var undefinedEntity = (0, _ahooks.useMemoizedFn)(function () {
147
149
  onUndefinedEntity === null || onUndefinedEntity === void 0 ? void 0 : onUndefinedEntity();
@@ -171,12 +173,10 @@ var Child = function Child(_ref2) {
171
173
  };
172
174
  var Parent = function Parent(_ref4) {
173
175
  var children = _ref4.children,
174
- stateless = _ref4.stateless,
176
+ mode = _ref4.mode,
175
177
  onUpdate = _ref4.onUpdate,
176
178
  onSetPath = _ref4.onSetPath;
177
- var _useUseCase3 = (0, _.useUseCase)(defaultFile, fileUseCase, {
178
- stateless: stateless
179
- }),
179
+ var _useUseCase3 = (0, _.useUseCase)(defaultFile, fileUseCase, mode),
180
180
  _useUseCase4 = (0, _slicedToArray2["default"])(_useUseCase3, 3),
181
181
  _useUseCase4$ = _useUseCase4[0],
182
182
  path = _useUseCase4$.path,
@@ -243,10 +243,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
243
243
  subtractionReducer.mockClear();
244
244
  });
245
245
  (0, _globals.describe)('useUseCase', function () {
246
- (0, _globals.describe)('`useUseCase` should work with 2+ arguments on provider mode', function () {
246
+ _globals.describe.each([void 0, _UseCaseModes.UseCaseModes.Normal, _UseCaseModes.UseCaseModes.Global])('[mode=%s]: `useUseCase` should work the same as `useRootCoreCollection`', function (mode) {
247
247
  (0, _globals.test)('check `context.length`', function () {
248
248
  var _renderHook = (0, _react.renderHook)(function () {
249
- return (0, _.useUseCase)(defaultFile, fileUseCase);
249
+ return (0, _.useUseCase)(defaultFile, fileUseCase, mode);
250
250
  }),
251
251
  result = _renderHook.result;
252
252
  var cores = result.current;
@@ -254,7 +254,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
254
254
  });
255
255
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
256
256
  var _renderHook2 = (0, _react.renderHook)(function () {
257
- return (0, _.useUseCase)(defaultFile, fileUseCase);
257
+ return (0, _.useUseCase)(defaultFile, fileUseCase, mode);
258
258
  }),
259
259
  result = _renderHook2.result;
260
260
  var cores = result.current;
@@ -582,16 +582,14 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
582
582
  _react.fireEvent.click(_react.screen.getByText(updateButtonText));
583
583
  (0, _globals.expect)(addReducer).toHaveBeenCalledTimes(3);
584
584
  });
585
- (0, _globals.test)('`options.stateless` should not generate new reducers when `yeild entity`', function () {
585
+ (0, _globals.test)('stateless mode should not generate new reducers when `yeild entity`', function () {
586
586
  var onUpdate = _globals.jest.fn();
587
587
  var _renderHook12 = (0, _react.renderHook)(function () {
588
588
  var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
589
589
  (0, _ahooks.useUpdateEffect)(function () {
590
590
  onUpdate();
591
591
  });
592
- return (0, _.useUseCase)(file, fileUseCase, {
593
- stateless: true
594
- });
592
+ return (0, _.useUseCase)(file, fileUseCase, _UseCaseModes.UseCaseModes.Stateless);
595
593
  }),
596
594
  result = _renderHook12.result,
597
595
  rerender = _renderHook12.rerender;
@@ -608,15 +606,13 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
608
606
  (0, _globals.expect)(result.current[0].path).toBe(PATH_1);
609
607
  (0, _globals.expect)(result.current[1].setPath).not.toBe(setPath);
610
608
  });
611
- (0, _globals.test)('`options.stateless` should not trigger update when after `yield entity`', function () {
609
+ (0, _globals.test)('stateless mode should not trigger update when after `yield entity`', function () {
612
610
  var onUpdate = _globals.jest.fn();
613
611
  var _renderHook13 = (0, _react.renderHook)(function () {
614
612
  (0, _ahooks.useUpdateEffect)(function () {
615
613
  onUpdate();
616
614
  });
617
- return (0, _.useUseCase)(defaultFile, fileUseCase, {
618
- stateless: true
619
- });
615
+ return (0, _.useUseCase)(defaultFile, fileUseCase, _UseCaseModes.UseCaseModes.Stateless);
620
616
  }),
621
617
  result = _renderHook13.result;
622
618
  var cores = result.current;
@@ -1516,241 +1512,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1516
1512
  (0, _globals.expect)(onBooleanMount).toHaveBeenCalledWith(true);
1517
1513
  });
1518
1514
  });
1519
- (0, _globals.describe)('`useUseCase` should work with 1+ arguments on non-entity mode', function () {
1520
- (0, _globals.test)('`entity` should equal `defaultFile`', function () {
1521
- var _renderHook25 = (0, _react.renderHook)(function () {
1522
- return (0, _.useUseCase)(mathUseCase);
1523
- }),
1524
- result = _renderHook25.result;
1525
- var reducers = result.current;
1526
- (0, _globals.expect)(Array.isArray(reducers)).toBe(false);
1527
- });
1528
- (0, _globals.test)('returned reducer should work', function () {
1529
- var _renderHook26 = (0, _react.renderHook)(function () {
1530
- return (0, _.useUseCase)(mathUseCase);
1531
- }),
1532
- result = _renderHook26.result;
1533
- var reducers = result.current;
1534
- var add = reducers.add;
1535
- (0, _globals.expect)(add(1, 2)).toBe(3);
1536
- });
1537
- (0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
1538
- var mockUseCase = _globals.jest.fn(mathUseCase);
1539
- var _renderHook27 = (0, _react.renderHook)(function () {
1540
- return (0, _.useUseCase)(mockUseCase);
1541
- }),
1542
- rerender = _renderHook27.rerender;
1543
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1544
- rerender();
1545
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1546
- });
1547
- (0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
1548
- var mockUseCase = _globals.jest.fn(mathUseCase);
1549
- var _renderHook28 = (0, _react.renderHook)(function () {
1550
- return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
1551
- }),
1552
- rerender = _renderHook28.rerender;
1553
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1554
- rerender();
1555
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1556
- });
1557
- (0, _globals.test)('`usecase` should be called if deps has changed', function () {
1558
- var i = 0;
1559
- var mockUseCase = _globals.jest.fn(mathUseCase);
1560
- var _renderHook29 = (0, _react.renderHook)(function () {
1561
- return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
1562
- }),
1563
- rerender = _renderHook29.rerender;
1564
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1565
- rerender();
1566
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
1567
- });
1568
- (0, _globals.test)('reducer call should not be cached if component is at rendering phase', function () {
1569
- var buttonText = 'button';
1570
- var CacheTestComponent = function CacheTestComponent() {
1571
- var _useUseCase28 = (0, _.useUseCase)(mathUseCase),
1572
- subtraction = _useUseCase28.subtraction;
1573
- var update = (0, _ahooks.useUpdate)();
1574
- var onClick = function onClick() {
1575
- update();
1576
- };
1577
- subtraction(5, 3);
1578
- return (0, _jsxRuntime.jsx)("button", {
1579
- onClick: onClick,
1580
- children: buttonText
1581
- });
1582
- };
1583
- (0, _react.render)((0, _jsxRuntime.jsx)(CacheTestComponent, {}));
1584
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(1);
1585
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 3);
1586
- (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(2);
1587
- _react.fireEvent.click(_react.screen.getByText(buttonText));
1588
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
1589
- _react.fireEvent.click(_react.screen.getByText(buttonText));
1590
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(3);
1591
- });
1592
- (0, _globals.test)('reducer call should not be cached if component is not at rendering phase', function () {
1593
- var buttonText = 'button';
1594
- var CacheTestComponent = function CacheTestComponent() {
1595
- var _useUseCase29 = (0, _.useUseCase)(mathUseCase),
1596
- subtraction = _useUseCase29.subtraction;
1597
- var onClick = function onClick() {
1598
- subtraction(5, 3);
1599
- };
1600
- (0, _ahooks.useMount)(function () {
1601
- subtraction(5, 3);
1602
- subtraction(5, 3);
1603
- });
1604
- return (0, _jsxRuntime.jsx)("button", {
1605
- onClick: onClick,
1606
- children: buttonText
1607
- });
1608
- };
1609
- (0, _react.render)((0, _jsxRuntime.jsx)(CacheTestComponent, {}));
1610
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
1611
- (0, _globals.expect)(subtractionReducer).toHaveBeenNthCalledWith(1, 5, 3);
1612
- (0, _globals.expect)(subtractionReducer).toHaveNthReturnedWith(1, 2);
1613
- (0, _globals.expect)(subtractionReducer).toHaveBeenNthCalledWith(2, 5, 3);
1614
- (0, _globals.expect)(subtractionReducer).toHaveNthReturnedWith(2, 2);
1615
- _react.fireEvent.click(_react.screen.getByText(buttonText));
1616
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(3);
1617
- (0, _globals.expect)(subtractionReducer).toHaveBeenNthCalledWith(3, 5, 3);
1618
- (0, _globals.expect)(subtractionReducer).toHaveNthReturnedWith(3, 2);
1619
- });
1620
- (0, _globals.test)('reducer call should not be cached if parameters have changed', function () {
1621
- var count = 0;
1622
- var buttonText = 'button';
1623
- var StringUseCaseTestComponent = function StringUseCaseTestComponent() {
1624
- var _useUseCase30 = (0, _.useUseCase)(mathUseCase),
1625
- subtraction = _useUseCase30.subtraction;
1626
- var update = (0, _ahooks.useUpdate)();
1627
- subtraction(5, count++);
1628
- var onUpdate = function onUpdate() {
1629
- update();
1630
- };
1631
- return (0, _jsxRuntime.jsx)("div", {
1632
- children: (0, _jsxRuntime.jsx)("button", {
1633
- onClick: onUpdate,
1634
- children: buttonText
1635
- })
1636
- });
1637
- };
1638
- (0, _react.render)((0, _jsxRuntime.jsx)(StringUseCaseTestComponent, {}));
1639
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(1);
1640
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 0);
1641
- _react.fireEvent.click(_react.screen.getByText(buttonText));
1642
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
1643
- (0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 1);
1644
- (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
1645
- });
1646
- (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
1647
- var _renderHook30 = (0, _react.renderHook)(function () {
1648
- return (0, _.useUseCase)(mathUseCase, {
1649
- extraValue: 5
1650
- });
1651
- }),
1652
- result = _renderHook30.result;
1653
- var reducers = result.current;
1654
- var add = reducers.add;
1655
- (0, _globals.expect)(add(1, 2)).toBe(8);
1656
- });
1657
- (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
1658
- var onUpdate = _globals.jest.fn();
1659
- var onDeepUpdate = _globals.jest.fn();
1660
- var _renderHook31 = (0, _react.renderHook)(function () {
1661
- var _useState7 = (0, _react2.useState)(0),
1662
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
1663
- extraValue = _useState8[0],
1664
- setExtraValue = _useState8[1];
1665
- var reducers = (0, _.useUseCase)(mathUseCase, {
1666
- extraValue: extraValue
1667
- });
1668
- (0, _ahooks.useUpdateEffect)(function () {
1669
- onUpdate();
1670
- }, [reducers]);
1671
- useDeepCompareUpdate(function () {
1672
- onDeepUpdate();
1673
- }, [reducers]);
1674
- return setExtraValue;
1675
- }),
1676
- result = _renderHook31.result;
1677
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1678
- (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
1679
- (0, _react.act)(function () {
1680
- result.current(3);
1681
- });
1682
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1683
- (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
1684
- });
1685
- (0, _globals.test)('when `deps` change, it should update reducers', function () {
1686
- var onUpdate = _globals.jest.fn();
1687
- var onDeepUpdate = _globals.jest.fn();
1688
- var _renderHook32 = (0, _react.renderHook)(function () {
1689
- var _useState9 = (0, _react2.useState)(0),
1690
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
1691
- extraValue = _useState10[0],
1692
- setExtraValue = _useState10[1];
1693
- var reducers = (0, _.useUseCase)(mathUseCase, {
1694
- extraValue: extraValue
1695
- }, [extraValue]);
1696
- (0, _ahooks.useUpdateEffect)(function () {
1697
- onUpdate();
1698
- }, [reducers]);
1699
- useDeepCompareUpdate(function () {
1700
- onDeepUpdate();
1701
- }, [reducers]);
1702
- return setExtraValue;
1703
- }),
1704
- result = _renderHook32.result;
1705
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1706
- (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
1707
- (0, _react.act)(function () {
1708
- result.current(3);
1709
- });
1710
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
1711
- (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
1712
- });
1713
- (0, _globals.test)('empty `deps` should not update reducers', function () {
1714
- var onUpdate = _globals.jest.fn();
1715
- var onDeepUpdate = _globals.jest.fn();
1716
- var _renderHook33 = (0, _react.renderHook)(function () {
1717
- var _useState11 = (0, _react2.useState)(0),
1718
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
1719
- extraValue = _useState12[0],
1720
- setExtraValue = _useState12[1];
1721
- var reducers = (0, _.useUseCase)(mathUseCase, {
1722
- extraValue: extraValue
1723
- }, []);
1724
- (0, _ahooks.useUpdateEffect)(function () {
1725
- onUpdate();
1726
- }, [reducers]);
1727
- useDeepCompareUpdate(function () {
1728
- onDeepUpdate();
1729
- }, [reducers]);
1730
- return setExtraValue;
1731
- }),
1732
- result = _renderHook33.result;
1733
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1734
- (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
1735
- (0, _react.act)(function () {
1736
- result.current(3);
1737
- });
1738
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1739
- (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
1740
- });
1741
- (0, _globals.test)('should not trigger update', function () {
1742
- var onUpdate = _globals.jest.fn();
1743
- (0, _react.render)((0, _jsxRuntime.jsx)(MathParent, {
1744
- onUpdate: onUpdate
1745
- }));
1746
- _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
1747
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
1748
- });
1749
- });
1750
- (0, _globals.describe)('`useUseCase` should work with 1+ arguments on context mode', function () {
1751
- (0, _globals.test)('should work within <Child /> which it is under <Parent />', function () {
1752
- var textPrefix = '>>';
1753
- var onUpdate = _globals.jest.fn();
1515
+ (0, _globals.describe)('`useUseCase` should work the same as useContextualCoreCollection', function () {
1516
+ _globals.test.each([void 0, _UseCaseModes.UseCaseModes.Normal])('[mode=%s]: normal mode should trigger Parent & Child to update', function (mode) {
1517
+ var onParentUpdate = _globals.jest.fn();
1518
+ var onChildUpdate = _globals.jest.fn();
1754
1519
  var onPathChange = _globals.jest.fn();
1755
1520
  var onUndefinedEntity = _globals.jest.fn();
1756
1521
  var onSetPath = _globals.jest.fn(function () {
@@ -1758,10 +1523,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1758
1523
  });
1759
1524
  (0, _react.render)((0, _jsxRuntime.jsx)("div", {
1760
1525
  children: (0, _jsxRuntime.jsx)(Parent, {
1526
+ mode: mode,
1761
1527
  onSetPath: onSetPath,
1528
+ onUpdate: onParentUpdate,
1762
1529
  children: (0, _jsxRuntime.jsx)(Child, {
1763
- textPrefix: textPrefix,
1764
- onUpdate: onUpdate,
1530
+ onUpdate: onChildUpdate,
1765
1531
  onPathChange: onPathChange,
1766
1532
  onUndefinedEntity: onUndefinedEntity
1767
1533
  })
@@ -1769,14 +1535,66 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1769
1535
  }));
1770
1536
  _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
1771
1537
  (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
1772
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
1538
+ (0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(1);
1539
+ (0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(1);
1773
1540
  (0, _globals.expect)(onPathChange).toHaveBeenCalledWith(PATH_1);
1774
- _react.fireEvent.click(_react.screen.getByText(textPrefix + CHILD_BUTTON_TEXT));
1541
+ _react.fireEvent.click(_react.screen.getByText(CHILD_BUTTON_TEXT));
1775
1542
  (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
1776
- (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(2);
1777
- (0, _globals.expect)(onPathChange).toHaveBeenCalledWith('');
1543
+ (0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(2);
1544
+ (0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(2);
1545
+ (0, _globals.expect)(onPathChange).toHaveBeenCalledWith(PATH_2);
1778
1546
  (0, _globals.expect)(onUndefinedEntity).toHaveBeenCalledTimes(0);
1779
1547
  });
1548
+ _globals.test.each([_UseCaseModes.UseCaseModes.Stateless, _UseCaseModes.UseCaseModes.StatelessGlobal])('[mode=%s]: stateless mode should not trigger Parent & Child to update', function () {
1549
+ var onParentUpdate = _globals.jest.fn();
1550
+ var onChildUpdate = _globals.jest.fn();
1551
+ var onSetPath = _globals.jest.fn(function () {
1552
+ return PATH_1;
1553
+ });
1554
+ (0, _react.render)((0, _jsxRuntime.jsx)("div", {
1555
+ children: (0, _jsxRuntime.jsx)(Parent, {
1556
+ mode: _UseCaseModes.UseCaseModes.Stateless,
1557
+ onSetPath: onSetPath,
1558
+ onUpdate: onParentUpdate,
1559
+ children: (0, _jsxRuntime.jsx)(Child, {
1560
+ onUpdate: onChildUpdate
1561
+ })
1562
+ })
1563
+ }));
1564
+ _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
1565
+ (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
1566
+ (0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(0);
1567
+ (0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(0);
1568
+ _react.fireEvent.click(_react.screen.getByText(CHILD_BUTTON_TEXT));
1569
+ (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
1570
+ (0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(0);
1571
+ (0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(0);
1572
+ });
1573
+ (0, _globals.test)('global mode should trigger Parent to update, but Child shoud not be updated', function () {
1574
+ var onParentUpdate = _globals.jest.fn();
1575
+ var onChildUpdate = _globals.jest.fn();
1576
+ var onSetPath = _globals.jest.fn(function () {
1577
+ return PATH_1;
1578
+ });
1579
+ (0, _react.render)((0, _jsxRuntime.jsx)("div", {
1580
+ children: (0, _jsxRuntime.jsx)(Parent, {
1581
+ mode: _UseCaseModes.UseCaseModes.Global,
1582
+ onSetPath: onSetPath,
1583
+ onUpdate: onParentUpdate,
1584
+ children: (0, _jsxRuntime.jsx)(Child, {
1585
+ onUpdate: onChildUpdate
1586
+ })
1587
+ })
1588
+ }));
1589
+ _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
1590
+ (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
1591
+ (0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(1);
1592
+ (0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(0);
1593
+ _react.fireEvent.click(_react.screen.getByText(CHILD_BUTTON_TEXT));
1594
+ (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
1595
+ (0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(2);
1596
+ (0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(0);
1597
+ });
1780
1598
  (0, _globals.test)('`usecase` should not be called at child component', function () {
1781
1599
  var mockUseCase = _globals.jest.fn(fileUseCase);
1782
1600
  var A = function A() {
@@ -1784,9 +1602,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1784
1602
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1785
1603
  };
1786
1604
  var B = function B() {
1787
- var _useUseCase31 = (0, _.useUseCase)(defaultFile, mockUseCase),
1788
- _useUseCase32 = (0, _slicedToArray2["default"])(_useUseCase31, 3),
1789
- Provider = _useUseCase32[2];
1605
+ var _useUseCase28 = (0, _.useUseCase)(defaultFile, mockUseCase),
1606
+ _useUseCase29 = (0, _slicedToArray2["default"])(_useUseCase28, 3),
1607
+ Provider = _useUseCase29[2];
1790
1608
  return (0, _jsxRuntime.jsx)(Provider, {
1791
1609
  children: (0, _jsxRuntime.jsx)(A, {})
1792
1610
  });
@@ -1806,9 +1624,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1806
1624
  });
1807
1625
  };
1808
1626
  var A = function A() {
1809
- var _useUseCase33 = (0, _.useUseCase)(stringUseCase),
1810
- _useUseCase34 = (0, _slicedToArray2["default"])(_useUseCase33, 2),
1811
- add = _useUseCase34[1].add;
1627
+ var _useUseCase30 = (0, _.useUseCase)(stringUseCase),
1628
+ _useUseCase31 = (0, _slicedToArray2["default"])(_useUseCase30, 2),
1629
+ add = _useUseCase31[1].add;
1812
1630
  var update = (0, _ahooks.useUpdate)();
1813
1631
  var onClick = function onClick() {
1814
1632
  update();
@@ -1820,9 +1638,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1820
1638
  });
1821
1639
  };
1822
1640
  var B = function B() {
1823
- var _useUseCase35 = (0, _.useUseCase)('', stringUseCase),
1824
- _useUseCase36 = (0, _slicedToArray2["default"])(_useUseCase35, 3),
1825
- Provider = _useUseCase36[2];
1641
+ var _useUseCase32 = (0, _.useUseCase)('', stringUseCase),
1642
+ _useUseCase33 = (0, _slicedToArray2["default"])(_useUseCase32, 3),
1643
+ Provider = _useUseCase33[2];
1826
1644
  return (0, _jsxRuntime.jsx)(Provider, {
1827
1645
  children: (0, _jsxRuntime.jsx)(A, {})
1828
1646
  });
@@ -1846,9 +1664,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1846
1664
  });
1847
1665
  };
1848
1666
  var A = function A() {
1849
- var _useUseCase37 = (0, _.useUseCase)(stringUseCase),
1850
- _useUseCase38 = (0, _slicedToArray2["default"])(_useUseCase37, 2),
1851
- add = _useUseCase38[1].add;
1667
+ var _useUseCase34 = (0, _.useUseCase)(stringUseCase),
1668
+ _useUseCase35 = (0, _slicedToArray2["default"])(_useUseCase34, 2),
1669
+ add = _useUseCase35[1].add;
1852
1670
  var onClick = function onClick() {
1853
1671
  add('x');
1854
1672
  };
@@ -1862,9 +1680,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1862
1680
  });
1863
1681
  };
1864
1682
  var B = function B() {
1865
- var _useUseCase39 = (0, _.useUseCase)('', stringUseCase),
1866
- _useUseCase40 = (0, _slicedToArray2["default"])(_useUseCase39, 3),
1867
- Provider = _useUseCase40[2];
1683
+ var _useUseCase36 = (0, _.useUseCase)('', stringUseCase),
1684
+ _useUseCase37 = (0, _slicedToArray2["default"])(_useUseCase36, 3),
1685
+ Provider = _useUseCase37[2];
1868
1686
  return (0, _jsxRuntime.jsx)(Provider, {
1869
1687
  children: (0, _jsxRuntime.jsx)(A, {})
1870
1688
  });
@@ -1892,11 +1710,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1892
1710
  });
1893
1711
  };
1894
1712
  var A = function A() {
1895
- var _useUseCase41 = (0, _.useUseCase)(stringUseCase),
1896
- _useUseCase42 = (0, _slicedToArray2["default"])(_useUseCase41, 2),
1897
- _useUseCase42$ = _useUseCase42[1],
1898
- add = _useUseCase42$.add,
1899
- setEntity = _useUseCase42$.setEntity;
1713
+ var _useUseCase38 = (0, _.useUseCase)(stringUseCase),
1714
+ _useUseCase39 = (0, _slicedToArray2["default"])(_useUseCase38, 2),
1715
+ _useUseCase39$ = _useUseCase39[1],
1716
+ add = _useUseCase39$.add,
1717
+ setEntity = _useUseCase39$.setEntity;
1900
1718
  var update = (0, _ahooks.useUpdate)();
1901
1719
  add(addedText);
1902
1720
  var onSet = function onSet() {
@@ -1916,9 +1734,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1916
1734
  });
1917
1735
  };
1918
1736
  var B = function B() {
1919
- var _useUseCase43 = (0, _.useUseCase)('', stringUseCase),
1920
- _useUseCase44 = (0, _slicedToArray2["default"])(_useUseCase43, 3),
1921
- Provider = _useUseCase44[2];
1737
+ var _useUseCase40 = (0, _.useUseCase)('', stringUseCase),
1738
+ _useUseCase41 = (0, _slicedToArray2["default"])(_useUseCase40, 3),
1739
+ Provider = _useUseCase41[2];
1922
1740
  return (0, _jsxRuntime.jsx)(Provider, {
1923
1741
  children: (0, _jsxRuntime.jsx)(A, {})
1924
1742
  });
@@ -1952,12 +1770,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1952
1770
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1953
1771
  };
1954
1772
  var B = function B() {
1955
- var _useUseCase45 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1773
+ var _useUseCase42 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1956
1774
  onChange: onParentPathChange
1957
1775
  }),
1958
- _useUseCase46 = (0, _slicedToArray2["default"])(_useUseCase45, 3),
1959
- setPath = _useUseCase46[1].setPath,
1960
- Provider = _useUseCase46[2];
1776
+ _useUseCase43 = (0, _slicedToArray2["default"])(_useUseCase42, 3),
1777
+ setPath = _useUseCase43[1].setPath,
1778
+ Provider = _useUseCase43[2];
1961
1779
  var onFirstClick = function onFirstClick() {
1962
1780
  setPath(PATH_1);
1963
1781
  onChange = onSecondChange;
@@ -2019,12 +1837,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2019
1837
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
2020
1838
  };
2021
1839
  var C = function C() {
2022
- var _useUseCase47 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1840
+ var _useUseCase44 = (0, _.useUseCase)(defaultFile, fileUseCase, {
2023
1841
  onChange: onChangeC
2024
1842
  }),
2025
- _useUseCase48 = (0, _slicedToArray2["default"])(_useUseCase47, 3),
2026
- setPath = _useUseCase48[1].setPath,
2027
- Provider = _useUseCase48[2];
1843
+ _useUseCase45 = (0, _slicedToArray2["default"])(_useUseCase44, 3),
1844
+ setPath = _useUseCase45[1].setPath,
1845
+ Provider = _useUseCase45[2];
2028
1846
  var onFirstClick = function onFirstClick() {
2029
1847
  setPath(PATH_1);
2030
1848
  };
@@ -2045,4 +1863,235 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2045
1863
  (0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
2046
1864
  });
2047
1865
  });
1866
+ (0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
1867
+ (0, _globals.test)('`entity` should equal `defaultFile`', function () {
1868
+ var _renderHook25 = (0, _react.renderHook)(function () {
1869
+ return (0, _.useUseCase)(mathUseCase);
1870
+ }),
1871
+ result = _renderHook25.result;
1872
+ var reducers = result.current;
1873
+ (0, _globals.expect)(Array.isArray(reducers)).toBe(false);
1874
+ });
1875
+ (0, _globals.test)('returned reducer should work', function () {
1876
+ var _renderHook26 = (0, _react.renderHook)(function () {
1877
+ return (0, _.useUseCase)(mathUseCase);
1878
+ }),
1879
+ result = _renderHook26.result;
1880
+ var reducers = result.current;
1881
+ var add = reducers.add;
1882
+ (0, _globals.expect)(add(1, 2)).toBe(3);
1883
+ });
1884
+ (0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
1885
+ var mockUseCase = _globals.jest.fn(mathUseCase);
1886
+ var _renderHook27 = (0, _react.renderHook)(function () {
1887
+ return (0, _.useUseCase)(mockUseCase);
1888
+ }),
1889
+ rerender = _renderHook27.rerender;
1890
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1891
+ rerender();
1892
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1893
+ });
1894
+ (0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
1895
+ var mockUseCase = _globals.jest.fn(mathUseCase);
1896
+ var _renderHook28 = (0, _react.renderHook)(function () {
1897
+ return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
1898
+ }),
1899
+ rerender = _renderHook28.rerender;
1900
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1901
+ rerender();
1902
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1903
+ });
1904
+ (0, _globals.test)('`usecase` should be called if deps has changed', function () {
1905
+ var i = 0;
1906
+ var mockUseCase = _globals.jest.fn(mathUseCase);
1907
+ var _renderHook29 = (0, _react.renderHook)(function () {
1908
+ return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
1909
+ }),
1910
+ rerender = _renderHook29.rerender;
1911
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
1912
+ rerender();
1913
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
1914
+ });
1915
+ (0, _globals.test)('reducer call should not be cached if component is at rendering phase', function () {
1916
+ var buttonText = 'button';
1917
+ var CacheTestComponent = function CacheTestComponent() {
1918
+ var _useUseCase46 = (0, _.useUseCase)(mathUseCase),
1919
+ subtraction = _useUseCase46.subtraction;
1920
+ var update = (0, _ahooks.useUpdate)();
1921
+ var onClick = function onClick() {
1922
+ update();
1923
+ };
1924
+ subtraction(5, 3);
1925
+ return (0, _jsxRuntime.jsx)("button", {
1926
+ onClick: onClick,
1927
+ children: buttonText
1928
+ });
1929
+ };
1930
+ (0, _react.render)((0, _jsxRuntime.jsx)(CacheTestComponent, {}));
1931
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(1);
1932
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 3);
1933
+ (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(2);
1934
+ _react.fireEvent.click(_react.screen.getByText(buttonText));
1935
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
1936
+ _react.fireEvent.click(_react.screen.getByText(buttonText));
1937
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(3);
1938
+ });
1939
+ (0, _globals.test)('reducer call should not be cached if component is not at rendering phase', function () {
1940
+ var buttonText = 'button';
1941
+ var CacheTestComponent = function CacheTestComponent() {
1942
+ var _useUseCase47 = (0, _.useUseCase)(mathUseCase),
1943
+ subtraction = _useUseCase47.subtraction;
1944
+ var onClick = function onClick() {
1945
+ subtraction(5, 3);
1946
+ };
1947
+ (0, _ahooks.useMount)(function () {
1948
+ subtraction(5, 3);
1949
+ subtraction(5, 3);
1950
+ });
1951
+ return (0, _jsxRuntime.jsx)("button", {
1952
+ onClick: onClick,
1953
+ children: buttonText
1954
+ });
1955
+ };
1956
+ (0, _react.render)((0, _jsxRuntime.jsx)(CacheTestComponent, {}));
1957
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
1958
+ (0, _globals.expect)(subtractionReducer).toHaveBeenNthCalledWith(1, 5, 3);
1959
+ (0, _globals.expect)(subtractionReducer).toHaveNthReturnedWith(1, 2);
1960
+ (0, _globals.expect)(subtractionReducer).toHaveBeenNthCalledWith(2, 5, 3);
1961
+ (0, _globals.expect)(subtractionReducer).toHaveNthReturnedWith(2, 2);
1962
+ _react.fireEvent.click(_react.screen.getByText(buttonText));
1963
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(3);
1964
+ (0, _globals.expect)(subtractionReducer).toHaveBeenNthCalledWith(3, 5, 3);
1965
+ (0, _globals.expect)(subtractionReducer).toHaveNthReturnedWith(3, 2);
1966
+ });
1967
+ (0, _globals.test)('reducer call should not be cached if parameters have changed', function () {
1968
+ var count = 0;
1969
+ var buttonText = 'button';
1970
+ var StringUseCaseTestComponent = function StringUseCaseTestComponent() {
1971
+ var _useUseCase48 = (0, _.useUseCase)(mathUseCase),
1972
+ subtraction = _useUseCase48.subtraction;
1973
+ var update = (0, _ahooks.useUpdate)();
1974
+ subtraction(5, count++);
1975
+ var onUpdate = function onUpdate() {
1976
+ update();
1977
+ };
1978
+ return (0, _jsxRuntime.jsx)("div", {
1979
+ children: (0, _jsxRuntime.jsx)("button", {
1980
+ onClick: onUpdate,
1981
+ children: buttonText
1982
+ })
1983
+ });
1984
+ };
1985
+ (0, _react.render)((0, _jsxRuntime.jsx)(StringUseCaseTestComponent, {}));
1986
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(1);
1987
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 0);
1988
+ _react.fireEvent.click(_react.screen.getByText(buttonText));
1989
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
1990
+ (0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 1);
1991
+ (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
1992
+ });
1993
+ (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
1994
+ var _renderHook30 = (0, _react.renderHook)(function () {
1995
+ return (0, _.useUseCase)(mathUseCase, {
1996
+ extraValue: 5
1997
+ });
1998
+ }),
1999
+ result = _renderHook30.result;
2000
+ var reducers = result.current;
2001
+ var add = reducers.add;
2002
+ (0, _globals.expect)(add(1, 2)).toBe(8);
2003
+ });
2004
+ (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
2005
+ var onUpdate = _globals.jest.fn();
2006
+ var onDeepUpdate = _globals.jest.fn();
2007
+ var _renderHook31 = (0, _react.renderHook)(function () {
2008
+ var _useState7 = (0, _react2.useState)(0),
2009
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
2010
+ extraValue = _useState8[0],
2011
+ setExtraValue = _useState8[1];
2012
+ var reducers = (0, _.useUseCase)(mathUseCase, {
2013
+ extraValue: extraValue
2014
+ });
2015
+ (0, _ahooks.useUpdateEffect)(function () {
2016
+ onUpdate();
2017
+ }, [reducers]);
2018
+ useDeepCompareUpdate(function () {
2019
+ onDeepUpdate();
2020
+ }, [reducers]);
2021
+ return setExtraValue;
2022
+ }),
2023
+ result = _renderHook31.result;
2024
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2025
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2026
+ (0, _react.act)(function () {
2027
+ result.current(3);
2028
+ });
2029
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2030
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2031
+ });
2032
+ (0, _globals.test)('when `deps` change, it should update reducers', function () {
2033
+ var onUpdate = _globals.jest.fn();
2034
+ var onDeepUpdate = _globals.jest.fn();
2035
+ var _renderHook32 = (0, _react.renderHook)(function () {
2036
+ var _useState9 = (0, _react2.useState)(0),
2037
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
2038
+ extraValue = _useState10[0],
2039
+ setExtraValue = _useState10[1];
2040
+ var reducers = (0, _.useUseCase)(mathUseCase, {
2041
+ extraValue: extraValue
2042
+ }, [extraValue]);
2043
+ (0, _ahooks.useUpdateEffect)(function () {
2044
+ onUpdate();
2045
+ }, [reducers]);
2046
+ useDeepCompareUpdate(function () {
2047
+ onDeepUpdate();
2048
+ }, [reducers]);
2049
+ return setExtraValue;
2050
+ }),
2051
+ result = _renderHook32.result;
2052
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2053
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2054
+ (0, _react.act)(function () {
2055
+ result.current(3);
2056
+ });
2057
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
2058
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
2059
+ });
2060
+ (0, _globals.test)('empty `deps` should not update reducers', function () {
2061
+ var onUpdate = _globals.jest.fn();
2062
+ var onDeepUpdate = _globals.jest.fn();
2063
+ var _renderHook33 = (0, _react.renderHook)(function () {
2064
+ var _useState11 = (0, _react2.useState)(0),
2065
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
2066
+ extraValue = _useState12[0],
2067
+ setExtraValue = _useState12[1];
2068
+ var reducers = (0, _.useUseCase)(mathUseCase, {
2069
+ extraValue: extraValue
2070
+ }, []);
2071
+ (0, _ahooks.useUpdateEffect)(function () {
2072
+ onUpdate();
2073
+ }, [reducers]);
2074
+ useDeepCompareUpdate(function () {
2075
+ onDeepUpdate();
2076
+ }, [reducers]);
2077
+ return setExtraValue;
2078
+ }),
2079
+ result = _renderHook33.result;
2080
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2081
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2082
+ (0, _react.act)(function () {
2083
+ result.current(3);
2084
+ });
2085
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2086
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2087
+ });
2088
+ (0, _globals.test)('should not trigger update', function () {
2089
+ var onUpdate = _globals.jest.fn();
2090
+ (0, _react.render)((0, _jsxRuntime.jsx)(MathParent, {
2091
+ onUpdate: onUpdate
2092
+ }));
2093
+ _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
2094
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2095
+ });
2096
+ });
2048
2097
  });