@mic-rexjs/usecases-react 1.7.8 → 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 -15
- package/es/hooks/useProvider/types.d.ts +5 -1
- 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 +273 -202
- 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 -20
- 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 +380 -281
- 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;
|
|
@@ -1465,242 +1461,61 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1465
1461
|
oldValue: EXT_1
|
|
1466
1462
|
});
|
|
1467
1463
|
});
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
var
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
result = _renderHook25.result;
|
|
1475
|
-
var reducers = result.current;
|
|
1476
|
-
(0, _globals.expect)(Array.isArray(reducers)).toBe(false);
|
|
1477
|
-
});
|
|
1478
|
-
(0, _globals.test)('returned reducer should work', function () {
|
|
1479
|
-
var _renderHook26 = (0, _react.renderHook)(function () {
|
|
1480
|
-
return (0, _.useUseCase)(mathUseCase);
|
|
1481
|
-
}),
|
|
1482
|
-
result = _renderHook26.result;
|
|
1483
|
-
var reducers = result.current;
|
|
1484
|
-
var add = reducers.add;
|
|
1485
|
-
(0, _globals.expect)(add(1, 2)).toBe(3);
|
|
1486
|
-
});
|
|
1487
|
-
(0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
|
|
1488
|
-
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
1489
|
-
var _renderHook27 = (0, _react.renderHook)(function () {
|
|
1490
|
-
return (0, _.useUseCase)(mockUseCase);
|
|
1491
|
-
}),
|
|
1492
|
-
rerender = _renderHook27.rerender;
|
|
1493
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
1494
|
-
rerender();
|
|
1495
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
1496
|
-
});
|
|
1497
|
-
(0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
|
|
1498
|
-
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
1499
|
-
var _renderHook28 = (0, _react.renderHook)(function () {
|
|
1500
|
-
return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
|
|
1501
|
-
}),
|
|
1502
|
-
rerender = _renderHook28.rerender;
|
|
1503
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
1504
|
-
rerender();
|
|
1505
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
1506
|
-
});
|
|
1507
|
-
(0, _globals.test)('`usecase` should be called if deps has changed', function () {
|
|
1508
|
-
var i = 0;
|
|
1509
|
-
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
1510
|
-
var _renderHook29 = (0, _react.renderHook)(function () {
|
|
1511
|
-
return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
|
|
1512
|
-
}),
|
|
1513
|
-
rerender = _renderHook29.rerender;
|
|
1514
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
1515
|
-
rerender();
|
|
1516
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
|
|
1517
|
-
});
|
|
1518
|
-
(0, _globals.test)('reducer call should not be cached if component is at rendering phase', function () {
|
|
1519
|
-
var buttonText = 'button';
|
|
1520
|
-
var CacheTestComponent = function CacheTestComponent() {
|
|
1521
|
-
var _useUseCase16 = (0, _.useUseCase)(mathUseCase),
|
|
1522
|
-
subtraction = _useUseCase16.subtraction;
|
|
1523
|
-
var update = (0, _ahooks.useUpdate)();
|
|
1524
|
-
var onClick = function onClick() {
|
|
1525
|
-
update();
|
|
1526
|
-
};
|
|
1527
|
-
subtraction(5, 3);
|
|
1528
|
-
return (0, _jsxRuntime.jsx)("button", {
|
|
1529
|
-
onClick: onClick,
|
|
1530
|
-
children: buttonText
|
|
1531
|
-
});
|
|
1464
|
+
(0, _globals.test)('multiple `Provider` should work', function () {
|
|
1465
|
+
var onNumberMount = _globals.jest.fn();
|
|
1466
|
+
var onStringMount = _globals.jest.fn();
|
|
1467
|
+
var onBooleanMount = _globals.jest.fn();
|
|
1468
|
+
var numberUseCase = function numberUseCase() {
|
|
1469
|
+
return (0, _usecases.objectUseCase)();
|
|
1532
1470
|
};
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
};
|
|
1471
|
+
var stringUseCase = function stringUseCase() {
|
|
1472
|
+
return (0, _usecases.objectUseCase)();
|
|
1473
|
+
};
|
|
1474
|
+
var booleanUseCase = function booleanUseCase() {
|
|
1475
|
+
return (0, _usecases.objectUseCase)();
|
|
1476
|
+
};
|
|
1477
|
+
var TestChildComponent = function TestChildComponent() {
|
|
1478
|
+
var _useUseCase16 = (0, _.useUseCase)(numberUseCase),
|
|
1479
|
+
_useUseCase17 = (0, _slicedToArray2["default"])(_useUseCase16, 1),
|
|
1480
|
+
numberValue = _useUseCase17[0];
|
|
1481
|
+
var _useUseCase18 = (0, _.useUseCase)(stringUseCase),
|
|
1482
|
+
_useUseCase19 = (0, _slicedToArray2["default"])(_useUseCase18, 1),
|
|
1483
|
+
stringValue = _useUseCase19[0];
|
|
1484
|
+
var _useUseCase20 = (0, _.useUseCase)(booleanUseCase),
|
|
1485
|
+
_useUseCase21 = (0, _slicedToArray2["default"])(_useUseCase20, 1),
|
|
1486
|
+
booleanValue = _useUseCase21[0];
|
|
1550
1487
|
(0, _ahooks.useMount)(function () {
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
return (0, _jsxRuntime.jsx)("button", {
|
|
1555
|
-
onClick: onClick,
|
|
1556
|
-
children: buttonText
|
|
1488
|
+
onNumberMount(numberValue);
|
|
1489
|
+
onStringMount(stringValue);
|
|
1490
|
+
onBooleanMount(booleanValue);
|
|
1557
1491
|
});
|
|
1492
|
+
return null;
|
|
1558
1493
|
};
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
var buttonText = 'button';
|
|
1573
|
-
var StringUseCaseTestComponent = function StringUseCaseTestComponent() {
|
|
1574
|
-
var _useUseCase18 = (0, _.useUseCase)(mathUseCase),
|
|
1575
|
-
subtraction = _useUseCase18.subtraction;
|
|
1576
|
-
var update = (0, _ahooks.useUpdate)();
|
|
1577
|
-
subtraction(5, count++);
|
|
1578
|
-
var onUpdate = function onUpdate() {
|
|
1579
|
-
update();
|
|
1580
|
-
};
|
|
1581
|
-
return (0, _jsxRuntime.jsx)("div", {
|
|
1582
|
-
children: (0, _jsxRuntime.jsx)("button", {
|
|
1583
|
-
onClick: onUpdate,
|
|
1584
|
-
children: buttonText
|
|
1585
|
-
})
|
|
1494
|
+
var TestParentComponent = function TestParentComponent() {
|
|
1495
|
+
var _useUseCase22 = (0, _.useUseCase)(11, numberUseCase),
|
|
1496
|
+
_useUseCase23 = (0, _slicedToArray2["default"])(_useUseCase22, 3),
|
|
1497
|
+
NumberProvider = _useUseCase23[2];
|
|
1498
|
+
var _useUseCase24 = (0, _.useUseCase)('hello', stringUseCase),
|
|
1499
|
+
_useUseCase25 = (0, _slicedToArray2["default"])(_useUseCase24, 3),
|
|
1500
|
+
StringProvider = _useUseCase25[2];
|
|
1501
|
+
var _useUseCase26 = (0, _.useUseCase)(true, booleanUseCase),
|
|
1502
|
+
_useUseCase27 = (0, _slicedToArray2["default"])(_useUseCase26, 3),
|
|
1503
|
+
BooleanProvider = _useUseCase27[2];
|
|
1504
|
+
return (0, _jsxRuntime.jsx)(NumberProvider, {
|
|
1505
|
+
"with": [StringProvider, BooleanProvider],
|
|
1506
|
+
children: (0, _jsxRuntime.jsx)(TestChildComponent, {})
|
|
1586
1507
|
});
|
|
1587
1508
|
};
|
|
1588
|
-
(0, _react.render)((0, _jsxRuntime.jsx)(
|
|
1589
|
-
(0, _globals.expect)(
|
|
1590
|
-
(0, _globals.expect)(
|
|
1591
|
-
|
|
1592
|
-
(0, _globals.expect)(subtractionReducer).toHaveBeenCalledTimes(2);
|
|
1593
|
-
(0, _globals.expect)(subtractionReducer).toHaveBeenCalledWith(5, 1);
|
|
1594
|
-
(0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
|
|
1595
|
-
});
|
|
1596
|
-
(0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
|
|
1597
|
-
var _renderHook30 = (0, _react.renderHook)(function () {
|
|
1598
|
-
return (0, _.useUseCase)(mathUseCase, {
|
|
1599
|
-
extraValue: 5
|
|
1600
|
-
});
|
|
1601
|
-
}),
|
|
1602
|
-
result = _renderHook30.result;
|
|
1603
|
-
var reducers = result.current;
|
|
1604
|
-
var add = reducers.add;
|
|
1605
|
-
(0, _globals.expect)(add(1, 2)).toBe(8);
|
|
1606
|
-
});
|
|
1607
|
-
(0, _globals.test)('when `options` has changed, it should not trigger update', function () {
|
|
1608
|
-
var onUpdate = _globals.jest.fn();
|
|
1609
|
-
var onDeepUpdate = _globals.jest.fn();
|
|
1610
|
-
var _renderHook31 = (0, _react.renderHook)(function () {
|
|
1611
|
-
var _useState7 = (0, _react2.useState)(0),
|
|
1612
|
-
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
1613
|
-
extraValue = _useState8[0],
|
|
1614
|
-
setExtraValue = _useState8[1];
|
|
1615
|
-
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
1616
|
-
extraValue: extraValue
|
|
1617
|
-
});
|
|
1618
|
-
(0, _ahooks.useUpdateEffect)(function () {
|
|
1619
|
-
onUpdate();
|
|
1620
|
-
}, [reducers]);
|
|
1621
|
-
useDeepCompareUpdate(function () {
|
|
1622
|
-
onDeepUpdate();
|
|
1623
|
-
}, [reducers]);
|
|
1624
|
-
return setExtraValue;
|
|
1625
|
-
}),
|
|
1626
|
-
result = _renderHook31.result;
|
|
1627
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
1628
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1629
|
-
(0, _react.act)(function () {
|
|
1630
|
-
result.current(3);
|
|
1631
|
-
});
|
|
1632
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
1633
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1634
|
-
});
|
|
1635
|
-
(0, _globals.test)('when `deps` change, it should update reducers', function () {
|
|
1636
|
-
var onUpdate = _globals.jest.fn();
|
|
1637
|
-
var onDeepUpdate = _globals.jest.fn();
|
|
1638
|
-
var _renderHook32 = (0, _react.renderHook)(function () {
|
|
1639
|
-
var _useState9 = (0, _react2.useState)(0),
|
|
1640
|
-
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
1641
|
-
extraValue = _useState10[0],
|
|
1642
|
-
setExtraValue = _useState10[1];
|
|
1643
|
-
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
1644
|
-
extraValue: extraValue
|
|
1645
|
-
}, [extraValue]);
|
|
1646
|
-
(0, _ahooks.useUpdateEffect)(function () {
|
|
1647
|
-
onUpdate();
|
|
1648
|
-
}, [reducers]);
|
|
1649
|
-
useDeepCompareUpdate(function () {
|
|
1650
|
-
onDeepUpdate();
|
|
1651
|
-
}, [reducers]);
|
|
1652
|
-
return setExtraValue;
|
|
1653
|
-
}),
|
|
1654
|
-
result = _renderHook32.result;
|
|
1655
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
1656
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1657
|
-
(0, _react.act)(function () {
|
|
1658
|
-
result.current(3);
|
|
1659
|
-
});
|
|
1660
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
|
|
1661
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
|
|
1662
|
-
});
|
|
1663
|
-
(0, _globals.test)('empty `deps` should not update reducers', function () {
|
|
1664
|
-
var onUpdate = _globals.jest.fn();
|
|
1665
|
-
var onDeepUpdate = _globals.jest.fn();
|
|
1666
|
-
var _renderHook33 = (0, _react.renderHook)(function () {
|
|
1667
|
-
var _useState11 = (0, _react2.useState)(0),
|
|
1668
|
-
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
1669
|
-
extraValue = _useState12[0],
|
|
1670
|
-
setExtraValue = _useState12[1];
|
|
1671
|
-
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
1672
|
-
extraValue: extraValue
|
|
1673
|
-
}, []);
|
|
1674
|
-
(0, _ahooks.useUpdateEffect)(function () {
|
|
1675
|
-
onUpdate();
|
|
1676
|
-
}, [reducers]);
|
|
1677
|
-
useDeepCompareUpdate(function () {
|
|
1678
|
-
onDeepUpdate();
|
|
1679
|
-
}, [reducers]);
|
|
1680
|
-
return setExtraValue;
|
|
1681
|
-
}),
|
|
1682
|
-
result = _renderHook33.result;
|
|
1683
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
1684
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1685
|
-
(0, _react.act)(function () {
|
|
1686
|
-
result.current(3);
|
|
1687
|
-
});
|
|
1688
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
1689
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1690
|
-
});
|
|
1691
|
-
(0, _globals.test)('should not trigger update', function () {
|
|
1692
|
-
var onUpdate = _globals.jest.fn();
|
|
1693
|
-
(0, _react.render)((0, _jsxRuntime.jsx)(MathParent, {
|
|
1694
|
-
onUpdate: onUpdate
|
|
1695
|
-
}));
|
|
1696
|
-
_react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
|
|
1697
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
1509
|
+
(0, _react.render)((0, _jsxRuntime.jsx)(TestParentComponent, {}));
|
|
1510
|
+
(0, _globals.expect)(onNumberMount).toHaveBeenCalledWith(11);
|
|
1511
|
+
(0, _globals.expect)(onStringMount).toHaveBeenCalledWith('hello');
|
|
1512
|
+
(0, _globals.expect)(onBooleanMount).toHaveBeenCalledWith(true);
|
|
1698
1513
|
});
|
|
1699
1514
|
});
|
|
1700
|
-
(0, _globals.describe)('`useUseCase` should work
|
|
1701
|
-
(0,
|
|
1702
|
-
var
|
|
1703
|
-
var
|
|
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();
|
|
1704
1519
|
var onPathChange = _globals.jest.fn();
|
|
1705
1520
|
var onUndefinedEntity = _globals.jest.fn();
|
|
1706
1521
|
var onSetPath = _globals.jest.fn(function () {
|
|
@@ -1708,10 +1523,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1708
1523
|
});
|
|
1709
1524
|
(0, _react.render)((0, _jsxRuntime.jsx)("div", {
|
|
1710
1525
|
children: (0, _jsxRuntime.jsx)(Parent, {
|
|
1526
|
+
mode: mode,
|
|
1711
1527
|
onSetPath: onSetPath,
|
|
1528
|
+
onUpdate: onParentUpdate,
|
|
1712
1529
|
children: (0, _jsxRuntime.jsx)(Child, {
|
|
1713
|
-
|
|
1714
|
-
onUpdate: onUpdate,
|
|
1530
|
+
onUpdate: onChildUpdate,
|
|
1715
1531
|
onPathChange: onPathChange,
|
|
1716
1532
|
onUndefinedEntity: onUndefinedEntity
|
|
1717
1533
|
})
|
|
@@ -1719,14 +1535,66 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1719
1535
|
}));
|
|
1720
1536
|
_react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
|
|
1721
1537
|
(0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
|
|
1722
|
-
(0, _globals.expect)(
|
|
1538
|
+
(0, _globals.expect)(onParentUpdate).toHaveBeenCalledTimes(1);
|
|
1539
|
+
(0, _globals.expect)(onChildUpdate).toHaveBeenCalledTimes(1);
|
|
1723
1540
|
(0, _globals.expect)(onPathChange).toHaveBeenCalledWith(PATH_1);
|
|
1724
|
-
_react.fireEvent.click(_react.screen.getByText(
|
|
1541
|
+
_react.fireEvent.click(_react.screen.getByText(CHILD_BUTTON_TEXT));
|
|
1725
1542
|
(0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
|
|
1726
|
-
(0, _globals.expect)(
|
|
1727
|
-
(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);
|
|
1728
1546
|
(0, _globals.expect)(onUndefinedEntity).toHaveBeenCalledTimes(0);
|
|
1729
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
|
+
});
|
|
1730
1598
|
(0, _globals.test)('`usecase` should not be called at child component', function () {
|
|
1731
1599
|
var mockUseCase = _globals.jest.fn(fileUseCase);
|
|
1732
1600
|
var A = function A() {
|
|
@@ -1734,9 +1602,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1734
1602
|
return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
|
|
1735
1603
|
};
|
|
1736
1604
|
var B = function B() {
|
|
1737
|
-
var
|
|
1738
|
-
|
|
1739
|
-
Provider =
|
|
1605
|
+
var _useUseCase28 = (0, _.useUseCase)(defaultFile, mockUseCase),
|
|
1606
|
+
_useUseCase29 = (0, _slicedToArray2["default"])(_useUseCase28, 3),
|
|
1607
|
+
Provider = _useUseCase29[2];
|
|
1740
1608
|
return (0, _jsxRuntime.jsx)(Provider, {
|
|
1741
1609
|
children: (0, _jsxRuntime.jsx)(A, {})
|
|
1742
1610
|
});
|
|
@@ -1756,9 +1624,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1756
1624
|
});
|
|
1757
1625
|
};
|
|
1758
1626
|
var A = function A() {
|
|
1759
|
-
var
|
|
1760
|
-
|
|
1761
|
-
add =
|
|
1627
|
+
var _useUseCase30 = (0, _.useUseCase)(stringUseCase),
|
|
1628
|
+
_useUseCase31 = (0, _slicedToArray2["default"])(_useUseCase30, 2),
|
|
1629
|
+
add = _useUseCase31[1].add;
|
|
1762
1630
|
var update = (0, _ahooks.useUpdate)();
|
|
1763
1631
|
var onClick = function onClick() {
|
|
1764
1632
|
update();
|
|
@@ -1770,9 +1638,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1770
1638
|
});
|
|
1771
1639
|
};
|
|
1772
1640
|
var B = function B() {
|
|
1773
|
-
var
|
|
1774
|
-
|
|
1775
|
-
Provider =
|
|
1641
|
+
var _useUseCase32 = (0, _.useUseCase)('', stringUseCase),
|
|
1642
|
+
_useUseCase33 = (0, _slicedToArray2["default"])(_useUseCase32, 3),
|
|
1643
|
+
Provider = _useUseCase33[2];
|
|
1776
1644
|
return (0, _jsxRuntime.jsx)(Provider, {
|
|
1777
1645
|
children: (0, _jsxRuntime.jsx)(A, {})
|
|
1778
1646
|
});
|
|
@@ -1796,9 +1664,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1796
1664
|
});
|
|
1797
1665
|
};
|
|
1798
1666
|
var A = function A() {
|
|
1799
|
-
var
|
|
1800
|
-
|
|
1801
|
-
add =
|
|
1667
|
+
var _useUseCase34 = (0, _.useUseCase)(stringUseCase),
|
|
1668
|
+
_useUseCase35 = (0, _slicedToArray2["default"])(_useUseCase34, 2),
|
|
1669
|
+
add = _useUseCase35[1].add;
|
|
1802
1670
|
var onClick = function onClick() {
|
|
1803
1671
|
add('x');
|
|
1804
1672
|
};
|
|
@@ -1812,9 +1680,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1812
1680
|
});
|
|
1813
1681
|
};
|
|
1814
1682
|
var B = function B() {
|
|
1815
|
-
var
|
|
1816
|
-
|
|
1817
|
-
Provider =
|
|
1683
|
+
var _useUseCase36 = (0, _.useUseCase)('', stringUseCase),
|
|
1684
|
+
_useUseCase37 = (0, _slicedToArray2["default"])(_useUseCase36, 3),
|
|
1685
|
+
Provider = _useUseCase37[2];
|
|
1818
1686
|
return (0, _jsxRuntime.jsx)(Provider, {
|
|
1819
1687
|
children: (0, _jsxRuntime.jsx)(A, {})
|
|
1820
1688
|
});
|
|
@@ -1842,11 +1710,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1842
1710
|
});
|
|
1843
1711
|
};
|
|
1844
1712
|
var A = function A() {
|
|
1845
|
-
var
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
add =
|
|
1849
|
-
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;
|
|
1850
1718
|
var update = (0, _ahooks.useUpdate)();
|
|
1851
1719
|
add(addedText);
|
|
1852
1720
|
var onSet = function onSet() {
|
|
@@ -1866,9 +1734,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1866
1734
|
});
|
|
1867
1735
|
};
|
|
1868
1736
|
var B = function B() {
|
|
1869
|
-
var
|
|
1870
|
-
|
|
1871
|
-
Provider =
|
|
1737
|
+
var _useUseCase40 = (0, _.useUseCase)('', stringUseCase),
|
|
1738
|
+
_useUseCase41 = (0, _slicedToArray2["default"])(_useUseCase40, 3),
|
|
1739
|
+
Provider = _useUseCase41[2];
|
|
1872
1740
|
return (0, _jsxRuntime.jsx)(Provider, {
|
|
1873
1741
|
children: (0, _jsxRuntime.jsx)(A, {})
|
|
1874
1742
|
});
|
|
@@ -1902,12 +1770,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1902
1770
|
return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
|
|
1903
1771
|
};
|
|
1904
1772
|
var B = function B() {
|
|
1905
|
-
var
|
|
1773
|
+
var _useUseCase42 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
1906
1774
|
onChange: onParentPathChange
|
|
1907
1775
|
}),
|
|
1908
|
-
|
|
1909
|
-
setPath =
|
|
1910
|
-
Provider =
|
|
1776
|
+
_useUseCase43 = (0, _slicedToArray2["default"])(_useUseCase42, 3),
|
|
1777
|
+
setPath = _useUseCase43[1].setPath,
|
|
1778
|
+
Provider = _useUseCase43[2];
|
|
1911
1779
|
var onFirstClick = function onFirstClick() {
|
|
1912
1780
|
setPath(PATH_1);
|
|
1913
1781
|
onChange = onSecondChange;
|
|
@@ -1969,12 +1837,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1969
1837
|
return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
|
|
1970
1838
|
};
|
|
1971
1839
|
var C = function C() {
|
|
1972
|
-
var
|
|
1840
|
+
var _useUseCase44 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
1973
1841
|
onChange: onChangeC
|
|
1974
1842
|
}),
|
|
1975
|
-
|
|
1976
|
-
setPath =
|
|
1977
|
-
Provider =
|
|
1843
|
+
_useUseCase45 = (0, _slicedToArray2["default"])(_useUseCase44, 3),
|
|
1844
|
+
setPath = _useUseCase45[1].setPath,
|
|
1845
|
+
Provider = _useUseCase45[2];
|
|
1978
1846
|
var onFirstClick = function onFirstClick() {
|
|
1979
1847
|
setPath(PATH_1);
|
|
1980
1848
|
};
|
|
@@ -1995,4 +1863,235 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1995
1863
|
(0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
|
|
1996
1864
|
});
|
|
1997
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
|
+
});
|
|
1998
2097
|
});
|