@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.
- package/README.md +1 -1
- package/dist/index.min.js +1 -1
- package/es/configs/defaultUseCaseContext/index.d.ts +2 -3
- package/es/configs/defaultUseCaseContext/index.js +1 -1
- package/es/configs/defaultUseCaseContext/types.d.ts +11 -3
- package/es/configs/usecaseContextMap/types.d.ts +2 -5
- package/es/enums/UseCaseModes/index.d.ts +6 -0
- package/es/enums/UseCaseModes/index.js +7 -0
- package/es/hooks/useChangeCallbackCollection/index.d.ts +3 -0
- package/es/hooks/useChangeCallbackCollection/index.js +29 -0
- package/es/hooks/useGlobalUseCase/index.d.ts +2 -0
- package/es/hooks/useGlobalUseCase/index.js +11 -0
- package/es/hooks/useGlobalUseCase/index.test.js +71 -0
- package/es/hooks/useGlobalUseCase/types.d.ts +12 -0
- package/es/hooks/useGlobalUseCase/types.js +1 -0
- package/es/hooks/useProvider/index.d.ts +3 -5
- package/es/hooks/useProvider/index.js +25 -17
- package/es/hooks/useStatelessUseCase/index.d.ts +2 -0
- package/es/hooks/useStatelessUseCase/index.js +8 -0
- package/es/hooks/useStatelessUseCase/index.test.d.ts +1 -0
- package/es/hooks/useStatelessUseCase/index.test.js +75 -0
- package/es/hooks/useStatelessUseCase/types.d.ts +5 -0
- package/es/hooks/useStatelessUseCase/types.js +1 -0
- package/es/hooks/useUseCase/index.js +27 -29
- package/es/hooks/useUseCase/index.test.js +243 -207
- package/es/hooks/useUseCase/types.d.ts +55 -8
- package/es/hooks/useUseCaseContext/index.d.ts +2 -2
- package/es/hooks/useUseCaseContext/index.js +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +2 -0
- package/es/methods/getRootEntity/index.d.ts +2 -1
- package/es/methods/getRootEntity/index.js +6 -5
- package/es/methods/initEntityReducers/index.js +1 -1
- package/es/methods/toMaxArguments/index.d.ts +3 -0
- package/es/methods/toMaxArguments/index.js +28 -0
- package/es/methods/triggerCallbacks/index.d.ts +2 -3
- package/es/methods/triggerCallbacks/index.js +3 -12
- package/lib/configs/defaultUseCaseContext/index.js +1 -1
- package/lib/enums/UseCaseModes/index.js +14 -0
- package/lib/hooks/useChangeCallbackCollection/index.js +37 -0
- package/lib/hooks/useGlobalUseCase/index.js +25 -0
- package/lib/hooks/useGlobalUseCase/index.test.js +78 -0
- package/lib/hooks/useProvider/index.js +30 -24
- package/lib/hooks/useStatelessUseCase/index.js +22 -0
- package/lib/hooks/useStatelessUseCase/index.test.js +78 -0
- package/lib/hooks/useStatelessUseCase/types.js +5 -0
- package/lib/hooks/useUseCase/index.js +40 -31
- package/lib/hooks/useUseCase/index.test.js +337 -288
- package/lib/hooks/useUseCaseContext/index.js +1 -1
- package/lib/index.js +15 -1
- package/lib/methods/getRootEntity/index.js +6 -5
- package/lib/methods/initEntityReducers/index.js +2 -3
- package/lib/methods/toMaxArguments/index.js +25 -0
- package/lib/methods/triggerCallbacks/index.js +3 -13
- package/package.json +1 -1
- package/es/hooks/useOptionsRefCollection/index.d.ts +0 -3
- package/es/hooks/useOptionsRefCollection/index.js +0 -22
- package/es/hooks/useOptionsRefCollection/types.d.ts +0 -2
- package/lib/hooks/useOptionsRefCollection/index.js +0 -29
- /package/es/hooks/{useOptionsRefCollection/types.js → useGlobalUseCase/index.test.d.ts} +0 -0
- /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
|
-
|
|
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,
|
|
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)('
|
|
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)('
|
|
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
|
|
1520
|
-
(0,
|
|
1521
|
-
var
|
|
1522
|
-
|
|
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
|
-
|
|
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)(
|
|
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(
|
|
1541
|
+
_react.fireEvent.click(_react.screen.getByText(CHILD_BUTTON_TEXT));
|
|
1775
1542
|
(0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
|
|
1776
|
-
(0, _globals.expect)(
|
|
1777
|
-
(0, _globals.expect)(
|
|
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
|
|
1788
|
-
|
|
1789
|
-
Provider =
|
|
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
|
|
1810
|
-
|
|
1811
|
-
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
|
|
1824
|
-
|
|
1825
|
-
Provider =
|
|
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
|
|
1850
|
-
|
|
1851
|
-
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
|
|
1866
|
-
|
|
1867
|
-
Provider =
|
|
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
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
add =
|
|
1899
|
-
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
|
|
1920
|
-
|
|
1921
|
-
Provider =
|
|
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
|
|
1773
|
+
var _useUseCase42 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
1956
1774
|
onChange: onParentPathChange
|
|
1957
1775
|
}),
|
|
1958
|
-
|
|
1959
|
-
setPath =
|
|
1960
|
-
Provider =
|
|
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
|
|
1840
|
+
var _useUseCase44 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
2023
1841
|
onChange: onChangeC
|
|
2024
1842
|
}),
|
|
2025
|
-
|
|
2026
|
-
setPath =
|
|
2027
|
-
Provider =
|
|
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
|
});
|