@mic-rexjs/usecases-react 1.3.32

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 (46) hide show
  1. package/README.md +187 -0
  2. package/dist/index.min.js +2 -0
  3. package/dist/index.min.js.LICENSE.txt +9 -0
  4. package/es/components/UseCaseFragment/index.d.ts +3 -0
  5. package/es/components/UseCaseFragment/index.js +7 -0
  6. package/es/components/UseCaseFragment/types.d.ts +7 -0
  7. package/es/components/UseCaseFragment/types.js +1 -0
  8. package/es/configs/defaultUseCaseContext/index.d.ts +2 -0
  9. package/es/configs/defaultUseCaseContext/index.js +2 -0
  10. package/es/configs/usecaseContextMap/index.d.ts +3 -0
  11. package/es/configs/usecaseContextMap/index.js +1 -0
  12. package/es/configs/usecaseContextMap/types.d.ts +20 -0
  13. package/es/configs/usecaseContextMap/types.js +1 -0
  14. package/es/core/usecases/optionsGetterCellectionUseCase/index.d.ts +2 -0
  15. package/es/core/usecases/optionsGetterCellectionUseCase/index.js +13 -0
  16. package/es/core/usecases/optionsGetterCellectionUseCase/types.d.ts +8 -0
  17. package/es/core/usecases/optionsGetterCellectionUseCase/types.js +1 -0
  18. package/es/hooks/useOptionsTransfer/index.d.ts +3 -0
  19. package/es/hooks/useOptionsTransfer/index.js +15 -0
  20. package/es/hooks/useUseCase/index.d.ts +2 -0
  21. package/es/hooks/useUseCase/index.js +99 -0
  22. package/es/hooks/useUseCase/index.test.d.ts +1 -0
  23. package/es/hooks/useUseCase/index.test.js +670 -0
  24. package/es/hooks/useUseCase/methods/triggerCallbacks/index.d.ts +3 -0
  25. package/es/hooks/useUseCase/methods/triggerCallbacks/index.js +11 -0
  26. package/es/hooks/useUseCase/methods/triggerWatchers/index.d.ts +2 -0
  27. package/es/hooks/useUseCase/methods/triggerWatchers/index.js +10 -0
  28. package/es/hooks/useUseCase/types.d.ts +25 -0
  29. package/es/hooks/useUseCase/types.js +1 -0
  30. package/es/index.d.ts +2 -0
  31. package/es/index.js +2 -0
  32. package/lib/components/UseCaseFragment/index.js +20 -0
  33. package/lib/components/UseCaseFragment/types.js +5 -0
  34. package/lib/configs/defaultUseCaseContext/index.js +9 -0
  35. package/lib/configs/usecaseContextMap/index.js +8 -0
  36. package/lib/configs/usecaseContextMap/types.js +5 -0
  37. package/lib/core/usecases/optionsGetterCellectionUseCase/index.js +23 -0
  38. package/lib/core/usecases/optionsGetterCellectionUseCase/types.js +5 -0
  39. package/lib/hooks/useOptionsTransfer/index.js +23 -0
  40. package/lib/hooks/useUseCase/index.js +135 -0
  41. package/lib/hooks/useUseCase/index.test.js +951 -0
  42. package/lib/hooks/useUseCase/methods/triggerCallbacks/index.js +32 -0
  43. package/lib/hooks/useUseCase/methods/triggerWatchers/index.js +22 -0
  44. package/lib/hooks/useUseCase/types.js +5 -0
  45. package/lib/index.js +27 -0
  46. package/package.json +84 -0
@@ -0,0 +1,951 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
7
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
10
+ var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
11
+ var _asyncGeneratorDelegate2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncGeneratorDelegate"));
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ var _usecases = require("@mic-rexjs/usecases");
14
+ var _globals = require("@jest/globals");
15
+ var _react = require("@testing-library/react");
16
+ var _ = require(".");
17
+ var _ahooks = require("ahooks");
18
+ var _react2 = require("react");
19
+ 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
+ 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
+ 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"); }
22
+ function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, "return": function _return(value) { var ret = this.s["return"]; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, "throw": function _throw(value) { var thr = this.s["return"]; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
23
+ var EXT_1 = '.png';
24
+ var EXT_2 = '.jpg';
25
+ var PATH_1 = "hello".concat(EXT_1);
26
+ var PARENT_BUTTON_TEXT = 'parent button';
27
+ var CHILD_BUTTON_TEXT = 'child button';
28
+ var defaultFile = {
29
+ path: '',
30
+ ext: '',
31
+ size: 0
32
+ };
33
+ var fileUseCase = function fileUseCase() {
34
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
35
+ var entityReducers = (0, _usecases.objectUseCase)();
36
+ var _options$pathPrefix = options.pathPrefix,
37
+ pathPrefix = _options$pathPrefix === void 0 ? '' : _options$pathPrefix;
38
+ var init = function init(entity) {
39
+ var newEntity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFile;
40
+ return /*#__PURE__*/_regenerator["default"].mark(function _callee() {
41
+ return _regenerator["default"].wrap(function _callee$(_context) {
42
+ while (1) switch (_context.prev = _context.next) {
43
+ case 0:
44
+ _context.next = 2;
45
+ return function () {
46
+ return newEntity;
47
+ };
48
+ case 2:
49
+ case "end":
50
+ return _context.stop();
51
+ }
52
+ }, _callee);
53
+ })();
54
+ };
55
+ var setPath = /*#__PURE__*/_regenerator["default"].mark(function setPath(entity, path) {
56
+ var _path$match;
57
+ return _regenerator["default"].wrap(function setPath$(_context2) {
58
+ while (1) switch (_context2.prev = _context2.next) {
59
+ case 0:
60
+ _context2.next = 2;
61
+ return _objectSpread(_objectSpread({}, entity), {}, {
62
+ path: pathPrefix + path,
63
+ ext: ((_path$match = path.match(/\.[^.]+$/)) === null || _path$match === void 0 ? void 0 : _path$match[0]) || ''
64
+ });
65
+ case 2:
66
+ case "end":
67
+ return _context2.stop();
68
+ }
69
+ }, setPath);
70
+ });
71
+ var readFile = /*#__PURE__*/function () {
72
+ var _ref = (0, _wrapAsyncGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(entity, path) {
73
+ var size;
74
+ return _regenerator["default"].wrap(function _callee2$(_context3) {
75
+ while (1) switch (_context3.prev = _context3.next) {
76
+ case 0:
77
+ size = 2000;
78
+ return _context3.delegateYield((0, _asyncGeneratorDelegate2["default"])(_asyncIterator(setPath(entity, path)), _awaitAsyncGenerator2["default"]), "t0", 2);
79
+ case 2:
80
+ _context3.next = 4;
81
+ return (0, _awaitAsyncGenerator2["default"])(Promise.resolve(null));
82
+ case 4:
83
+ _context3.next = 6;
84
+ return function (prevEntity) {
85
+ return _objectSpread(_objectSpread({}, prevEntity), {}, {
86
+ size: size
87
+ });
88
+ };
89
+ case 6:
90
+ return _context3.abrupt("return", size);
91
+ case 7:
92
+ case "end":
93
+ return _context3.stop();
94
+ }
95
+ }, _callee2);
96
+ }));
97
+ return function readFile(_x, _x2) {
98
+ return _ref.apply(this, arguments);
99
+ };
100
+ }();
101
+ var isImage = function isImage(entity) {
102
+ var ext = entity.ext;
103
+ return [EXT_1, EXT_2].includes(ext);
104
+ };
105
+ return _objectSpread(_objectSpread({}, entityReducers), {}, {
106
+ init: init,
107
+ setPath: setPath,
108
+ readFile: readFile,
109
+ isImage: isImage
110
+ });
111
+ };
112
+ var mathUseCase = function mathUseCase() {
113
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
114
+ var _options$extraValue = options.extraValue,
115
+ extraValue = _options$extraValue === void 0 ? 0 : _options$extraValue;
116
+ var add = function add(value1, value2) {
117
+ return value1 + value2 + extraValue;
118
+ };
119
+ var subtraction = function subtraction(value1, value2) {
120
+ return value1 - value2;
121
+ };
122
+ return {
123
+ add: add,
124
+ subtraction: subtraction
125
+ };
126
+ };
127
+ var Child = function Child(_ref2) {
128
+ var _ref2$textPrefix = _ref2.textPrefix,
129
+ textPrefix = _ref2$textPrefix === void 0 ? '' : _ref2$textPrefix,
130
+ onUpdate = _ref2.onUpdate,
131
+ onPathChange = _ref2.onPathChange,
132
+ onUndefinedEntity = _ref2.onUndefinedEntity;
133
+ var _useUseCase = (0, _.useUseCase)(fileUseCase),
134
+ _useUseCase2 = (0, _slicedToArray2["default"])(_useUseCase, 2),
135
+ file = _useUseCase2[0],
136
+ setPath = _useUseCase2[1].setPath;
137
+ var _ref3 = file || {},
138
+ path = _ref3.path,
139
+ ext = _ref3.ext;
140
+ var onClick = function onClick() {
141
+ setPath('');
142
+ };
143
+ var undefinedEntity = (0, _ahooks.useMemoizedFn)(function () {
144
+ onUndefinedEntity === null || onUndefinedEntity === void 0 ? void 0 : onUndefinedEntity();
145
+ });
146
+ (0, _ahooks.useUpdateEffect)(function () {
147
+ onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate();
148
+ });
149
+ (0, _react2.useEffect)(function () {
150
+ if (file === void 0) {
151
+ undefinedEntity();
152
+ }
153
+ }, [file, undefinedEntity]);
154
+ var pathChange = (0, _ahooks.useMemoizedFn)(function () {
155
+ onPathChange === null || onPathChange === void 0 ? void 0 : onPathChange(path);
156
+ });
157
+ (0, _ahooks.useUpdateEffect)(pathChange, [path, pathChange]);
158
+ return (0, _jsxRuntime.jsxs)("div", {
159
+ children: [(0, _jsxRuntime.jsxs)("main", {
160
+ children: ["child path: ", path, (0, _jsxRuntime.jsx)("br", {}), "child ext: ", ext]
161
+ }), (0, _jsxRuntime.jsx)("footer", {
162
+ children: (0, _jsxRuntime.jsx)("button", {
163
+ onClick: onClick,
164
+ children: textPrefix + CHILD_BUTTON_TEXT
165
+ })
166
+ })]
167
+ });
168
+ };
169
+ var Parent = function Parent(_ref4) {
170
+ var children = _ref4.children,
171
+ stateless = _ref4.stateless,
172
+ onUpdate = _ref4.onUpdate,
173
+ onSetPath = _ref4.onSetPath;
174
+ var _useUseCase3 = (0, _.useUseCase)(defaultFile, fileUseCase, {
175
+ stateless: stateless
176
+ }),
177
+ _useUseCase4 = (0, _slicedToArray2["default"])(_useUseCase3, 3),
178
+ _useUseCase4$ = _useUseCase4[0],
179
+ path = _useUseCase4$.path,
180
+ ext = _useUseCase4$.ext,
181
+ setPath = _useUseCase4[1].setPath,
182
+ Provider = _useUseCase4[2];
183
+ var onClick = function onClick() {
184
+ setPath((onSetPath === null || onSetPath === void 0 ? void 0 : onSetPath()) || '');
185
+ };
186
+ (0, _ahooks.useUpdateEffect)(function () {
187
+ onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate();
188
+ });
189
+ return (0, _jsxRuntime.jsx)(Provider, {
190
+ children: (0, _jsxRuntime.jsxs)("div", {
191
+ children: [(0, _jsxRuntime.jsxs)("header", {
192
+ children: ["parent path: ", path, (0, _jsxRuntime.jsx)("br", {}), "parent ext: ", ext]
193
+ }), (0, _jsxRuntime.jsx)("main", {
194
+ children: children
195
+ }), (0, _jsxRuntime.jsx)("footer", {
196
+ children: (0, _jsxRuntime.jsx)("button", {
197
+ onClick: onClick,
198
+ children: PARENT_BUTTON_TEXT
199
+ })
200
+ })]
201
+ })
202
+ });
203
+ };
204
+ var MathParent = function MathParent(_ref5) {
205
+ var _ref5$extraValue = _ref5.extraValue,
206
+ extraValue = _ref5$extraValue === void 0 ? 0 : _ref5$extraValue,
207
+ onUpdate = _ref5.onUpdate;
208
+ var _useUseCase5 = (0, _.useUseCase)(mathUseCase, {
209
+ extraValue: extraValue
210
+ }, [extraValue]),
211
+ add = _useUseCase5.add;
212
+ var onClick = function onClick() {
213
+ add(1, 2);
214
+ };
215
+ (0, _ahooks.useUpdateEffect)(function () {
216
+ onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate();
217
+ });
218
+ return (0, _jsxRuntime.jsx)("div", {
219
+ children: (0, _jsxRuntime.jsx)("button", {
220
+ onClick: onClick,
221
+ children: PARENT_BUTTON_TEXT
222
+ })
223
+ });
224
+ };
225
+ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
226
+ var isFirstRef = (0, _react2.useRef)(true);
227
+ (0, _react2.useEffect)(function () {
228
+ return function () {
229
+ isFirstRef.current = false;
230
+ };
231
+ });
232
+ _ahooks.useDeepCompareEffect.call(null, function () {
233
+ if (isFirstRef.current) {
234
+ return;
235
+ }
236
+ callback();
237
+ }, deps);
238
+ };
239
+ (0, _globals.describe)('useUseCase', function () {
240
+ (0, _globals.describe)('`useUseCase` should work with 2+ arguments on provider mode', function () {
241
+ (0, _globals.test)('check `context.length`', function () {
242
+ var _renderHook = (0, _react.renderHook)(function () {
243
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
244
+ }),
245
+ result = _renderHook.result;
246
+ var context = result.current;
247
+ (0, _globals.expect)(context).toHaveLength(3);
248
+ });
249
+ (0, _globals.test)('`entity` should equal `defaultFile`', function () {
250
+ var _renderHook2 = (0, _react.renderHook)(function () {
251
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
252
+ }),
253
+ result = _renderHook2.result;
254
+ var context = result.current;
255
+ var _context4 = (0, _slicedToArray2["default"])(context, 1),
256
+ entity = _context4[0];
257
+ (0, _globals.expect)(entity).toBe(defaultFile);
258
+ });
259
+ (0, _globals.test)('`reducers` should be returned as an object', function () {
260
+ var _renderHook3 = (0, _react.renderHook)(function () {
261
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
262
+ }),
263
+ result = _renderHook3.result;
264
+ var context = result.current;
265
+ var _context5 = (0, _slicedToArray2["default"])(context, 2),
266
+ reducers = _context5[1];
267
+ (0, _globals.expect)((0, _typeof2["default"])(reducers)).toBe('object');
268
+ });
269
+ (0, _globals.test)('`Provider` should be returned as a function', function () {
270
+ var _renderHook4 = (0, _react.renderHook)(function () {
271
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
272
+ }),
273
+ result = _renderHook4.result;
274
+ var context = result.current;
275
+ var _context6 = (0, _slicedToArray2["default"])(context, 3),
276
+ Provider = _context6[2];
277
+ (0, _globals.expect)((0, _typeof2["default"])(Provider)).toBe('function');
278
+ });
279
+ (0, _globals.test)('after call non-generator reducer, it should not trigger update', function () {
280
+ var onUpdate = _globals.jest.fn();
281
+ var onDeepUpdate = _globals.jest.fn();
282
+ var _renderHook5 = (0, _react.renderHook)(function () {
283
+ var context = (0, _.useUseCase)(defaultFile, fileUseCase);
284
+ var _context7 = (0, _slicedToArray2["default"])(context, 2),
285
+ reducers = _context7[1];
286
+ var isImage = reducers.isImage;
287
+ var update = (0, _ahooks.useUpdate)();
288
+ (0, _ahooks.useUpdateEffect)(function () {
289
+ onUpdate();
290
+ }, [context]);
291
+ useDeepCompareUpdate(function () {
292
+ onDeepUpdate();
293
+ }, [context]);
294
+ return function (shouldUpdate) {
295
+ isImage();
296
+ if (!shouldUpdate) {
297
+ return;
298
+ }
299
+ update();
300
+ };
301
+ }),
302
+ result = _renderHook5.result;
303
+ (0, _react.act)(function () {
304
+ result.current();
305
+ });
306
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
307
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
308
+ (0, _react.act)(function () {
309
+ result.current(true);
310
+ });
311
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
312
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
313
+ });
314
+ (0, _globals.test)('after `yield entity`, it should trigger update', function () {
315
+ var onUpdate = _globals.jest.fn();
316
+ var _renderHook6 = (0, _react.renderHook)(function () {
317
+ (0, _ahooks.useUpdateEffect)(function () {
318
+ onUpdate();
319
+ });
320
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
321
+ }),
322
+ result = _renderHook6.result;
323
+ var context = result.current;
324
+ var _context8 = (0, _slicedToArray2["default"])(context, 2),
325
+ entity = _context8[0],
326
+ reducers = _context8[1];
327
+ var setPath = reducers.setPath,
328
+ setEntity = reducers.setEntity;
329
+ (0, _react.act)(function () {
330
+ setPath(PATH_1);
331
+ setEntity({
332
+ size: 5000
333
+ });
334
+ });
335
+ (0, _globals.expect)(result.current).not.toBe(context);
336
+ (0, _globals.expect)(result.current[0]).not.toBe(entity);
337
+ (0, _globals.expect)(result.current[1]).not.toBe(reducers);
338
+ (0, _globals.expect)(result.current[1].setPath).not.toBe(setPath);
339
+ (0, _globals.expect)(result.current[0]).toEqual(_objectSpread(_objectSpread({}, defaultFile), {}, {
340
+ path: PATH_1,
341
+ ext: EXT_1,
342
+ size: 5000
343
+ }));
344
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
345
+ });
346
+ (0, _globals.test)('after `yield entity` on async mode, it should trigger update', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
347
+ var onUpdate, _renderHook7, result, context, _context9, entity, reducers, readFile, promise;
348
+ return _regenerator["default"].wrap(function _callee3$(_context10) {
349
+ while (1) switch (_context10.prev = _context10.next) {
350
+ case 0:
351
+ onUpdate = _globals.jest.fn();
352
+ _renderHook7 = (0, _react.renderHook)(function () {
353
+ (0, _ahooks.useUpdateEffect)(function () {
354
+ onUpdate();
355
+ });
356
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
357
+ }), result = _renderHook7.result;
358
+ context = result.current;
359
+ _context9 = (0, _slicedToArray2["default"])(context, 2), entity = _context9[0], reducers = _context9[1];
360
+ readFile = reducers.readFile;
361
+ promise = (0, _react.act)(function () {
362
+ return readFile(PATH_1);
363
+ });
364
+ (0, _globals.expect)(result.current).toBe(context);
365
+ (0, _globals.expect)(result.current).toEqual(context);
366
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
367
+ _context10.next = 11;
368
+ return promise;
369
+ case 11:
370
+ (0, _globals.expect)(result.current[0]).not.toBe(entity);
371
+ (0, _globals.expect)(result.current[1]).not.toBe(reducers);
372
+ (0, _globals.expect)(result.current[1].readFile).not.toBe(readFile);
373
+ (0, _globals.expect)(result.current[0].path).toBe(PATH_1);
374
+ (0, _globals.expect)(result.current[0].ext).toBe(EXT_1);
375
+ (0, _globals.expect)(result.current[0].size).toBe(2000);
376
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
377
+ case 18:
378
+ case "end":
379
+ return _context10.stop();
380
+ }
381
+ }, _callee3);
382
+ })));
383
+ (0, _globals.test)('after `yield entity` callbacks, it should trigger update', function () {
384
+ var onUpdate = _globals.jest.fn();
385
+ var _renderHook8 = (0, _react.renderHook)(function () {
386
+ (0, _ahooks.useUpdateEffect)(function () {
387
+ onUpdate();
388
+ });
389
+ return (0, _.useUseCase)(defaultFile, fileUseCase);
390
+ }),
391
+ result = _renderHook8.result;
392
+ var context = result.current;
393
+ var _context11 = (0, _slicedToArray2["default"])(context, 2),
394
+ reducers = _context11[1];
395
+ var init = reducers.init;
396
+ (0, _react.act)(function () {
397
+ init(_objectSpread(_objectSpread({}, defaultFile), {}, {
398
+ size: 5000
399
+ }));
400
+ });
401
+ (0, _globals.expect)(result.current[0].size).toBe(5000);
402
+ (0, _globals.expect)(result.current[1]).not.toBe(reducers);
403
+ (0, _globals.expect)(result.current[1].init).not.toBe(init);
404
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
405
+ });
406
+ (0, _globals.test)('`options.stateless` should not generate new reducers when `yeild entity`', function () {
407
+ var onUpdate = _globals.jest.fn();
408
+ var _renderHook9 = (0, _react.renderHook)(function () {
409
+ var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
410
+ (0, _ahooks.useUpdateEffect)(function () {
411
+ onUpdate();
412
+ });
413
+ return (0, _.useUseCase)(file, fileUseCase, {
414
+ stateless: true
415
+ });
416
+ }),
417
+ result = _renderHook9.result,
418
+ rerender = _renderHook9.rerender;
419
+ var context = result.current;
420
+ var _context12 = (0, _slicedToArray2["default"])(context, 2),
421
+ setPath = _context12[1].setPath;
422
+ setPath(PATH_1);
423
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
424
+ (0, _globals.expect)(result.current[0].path).toBe('');
425
+ (0, _globals.expect)(result.current[1].setPath).toBe(setPath);
426
+ rerender(_objectSpread(_objectSpread({}, defaultFile), {}, {
427
+ path: PATH_1
428
+ }));
429
+ (0, _globals.expect)(result.current[0].path).toBe(PATH_1);
430
+ (0, _globals.expect)(result.current[1].setPath).not.toBe(setPath);
431
+ });
432
+ (0, _globals.test)('`options.stateless` should not trigger update when after `yield entity`', function () {
433
+ var onUpdate = _globals.jest.fn();
434
+ var _renderHook10 = (0, _react.renderHook)(function () {
435
+ (0, _ahooks.useUpdateEffect)(function () {
436
+ onUpdate();
437
+ });
438
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
439
+ stateless: true
440
+ });
441
+ }),
442
+ result = _renderHook10.result;
443
+ var context = result.current;
444
+ var _context13 = (0, _slicedToArray2["default"])(context, 2),
445
+ reducers = _context13[1];
446
+ var setPath = reducers.setPath;
447
+ (0, _react.act)(function () {
448
+ setPath(PATH_1);
449
+ });
450
+ (0, _globals.expect)(result.current).toBe(context);
451
+ (0, _globals.expect)(result.current).toEqual(context);
452
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
453
+ });
454
+ (0, _globals.test)('`options.onChange` should be trigger when entity has changed', function () {
455
+ var onChange = _globals.jest.fn();
456
+ var _renderHook11 = (0, _react.renderHook)(function () {
457
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
458
+ onChange: onChange
459
+ });
460
+ }),
461
+ result = _renderHook11.result;
462
+ var context = result.current;
463
+ var _context14 = (0, _slicedToArray2["default"])(context, 2),
464
+ reducers = _context14[1];
465
+ var setPath = reducers.setPath;
466
+ (0, _globals.expect)(onChange).toHaveBeenCalledTimes(0);
467
+ (0, _react.act)(function () {
468
+ setPath(PATH_1);
469
+ });
470
+ (0, _globals.expect)(onChange).toHaveBeenCalledTimes(1);
471
+ (0, _globals.expect)(onChange).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
472
+ path: PATH_1,
473
+ ext: EXT_1
474
+ }), defaultFile);
475
+ });
476
+ (0, _globals.test)('`options.options` should override rest options', function () {
477
+ var _renderHook12 = (0, _react.renderHook)(function () {
478
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
479
+ pathPrefix: 'xyz/',
480
+ options: {
481
+ pathPrefix: '123/'
482
+ }
483
+ });
484
+ }),
485
+ result = _renderHook12.result;
486
+ var context = result.current;
487
+ var _context15 = (0, _slicedToArray2["default"])(context, 2),
488
+ path = _context15[0].path,
489
+ reducers = _context15[1];
490
+ var setPath = reducers.setPath;
491
+ (0, _globals.expect)(path).toBe('');
492
+ (0, _react.act)(function () {
493
+ setPath(PATH_1);
494
+ });
495
+ (0, _globals.expect)(result.current[0].path).toBe('123/' + PATH_1);
496
+ });
497
+ (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
498
+ var onUpdate = _globals.jest.fn();
499
+ var onDeepUpdate = _globals.jest.fn();
500
+ var _renderHook13 = (0, _react.renderHook)(function () {
501
+ var _useState = (0, _react2.useState)('user/'),
502
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
503
+ pathPrefix = _useState2[0],
504
+ setPathPrefix = _useState2[1];
505
+ var context = (0, _.useUseCase)(defaultFile, fileUseCase, {
506
+ pathPrefix: pathPrefix
507
+ });
508
+ (0, _ahooks.useUpdateEffect)(function () {
509
+ onUpdate();
510
+ }, [context]);
511
+ useDeepCompareUpdate(function () {
512
+ onDeepUpdate();
513
+ }, [context]);
514
+ return setPathPrefix;
515
+ }),
516
+ result = _renderHook13.result;
517
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
518
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
519
+ (0, _react.act)(function () {
520
+ result.current('my/');
521
+ });
522
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
523
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
524
+ });
525
+ (0, _globals.test)('when `entity` change, it should trigger watchers', function () {
526
+ var onPathChange1 = _globals.jest.fn();
527
+ var onPathChange2 = _globals.jest.fn();
528
+ var onPathChange = onPathChange1;
529
+ var _renderHook14 = (0, _react.renderHook)(function () {
530
+ return (0, _.useUseCase)(defaultFile, fileUseCase, {
531
+ watch: {
532
+ path: onPathChange
533
+ }
534
+ });
535
+ }),
536
+ result = _renderHook14.result;
537
+ var context = result.current;
538
+ var _context16 = (0, _slicedToArray2["default"])(context, 2),
539
+ _context16$ = _context16[1],
540
+ setPath = _context16$.setPath,
541
+ setEntity = _context16$.setEntity;
542
+ onPathChange = onPathChange2;
543
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(0);
544
+ (0, _react.act)(function () {
545
+ setPath(PATH_1);
546
+ setEntity({
547
+ size: 5000
548
+ });
549
+ });
550
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledTimes(1);
551
+ (0, _globals.expect)(onPathChange1).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
552
+ path: PATH_1,
553
+ ext: EXT_1
554
+ }), defaultFile);
555
+ (0, _react.act)(function () {
556
+ setPath('');
557
+ });
558
+ (0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(1);
559
+ (0, _globals.expect)(onPathChange2).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
560
+ size: 5000
561
+ }), _objectSpread(_objectSpread({}, defaultFile), {}, {
562
+ path: PATH_1,
563
+ size: 5000,
564
+ ext: EXT_1
565
+ }));
566
+ });
567
+ (0, _globals.test)('when `deps` has changed, it should trigger update', function () {
568
+ var onUpdate = _globals.jest.fn();
569
+ var onDeepUpdate = _globals.jest.fn();
570
+ var _renderHook15 = (0, _react.renderHook)(function () {
571
+ var _useState3 = (0, _react2.useState)('user/'),
572
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
573
+ pathPrefix = _useState4[0],
574
+ setPathPrefix = _useState4[1];
575
+ var context = (0, _.useUseCase)(defaultFile, fileUseCase, {
576
+ pathPrefix: pathPrefix
577
+ }, [pathPrefix]);
578
+ (0, _ahooks.useUpdateEffect)(function () {
579
+ onUpdate();
580
+ }, [context]);
581
+ useDeepCompareUpdate(function () {
582
+ onDeepUpdate();
583
+ }, [context]);
584
+ return setPathPrefix;
585
+ }),
586
+ result = _renderHook15.result;
587
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
588
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
589
+ (0, _react.act)(function () {
590
+ result.current('my/');
591
+ });
592
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
593
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
594
+ });
595
+ (0, _globals.test)('empty `deps` should not trigger update', function () {
596
+ var onUpdate = _globals.jest.fn();
597
+ var onDeepUpdate = _globals.jest.fn();
598
+ var _renderHook16 = (0, _react.renderHook)(function () {
599
+ var _useState5 = (0, _react2.useState)('user/'),
600
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
601
+ pathPrefix = _useState6[0],
602
+ setPathPrefix = _useState6[1];
603
+ var context = (0, _.useUseCase)(defaultFile, fileUseCase, {
604
+ pathPrefix: pathPrefix
605
+ }, []);
606
+ (0, _ahooks.useUpdateEffect)(function () {
607
+ onUpdate();
608
+ }, [context]);
609
+ useDeepCompareUpdate(function () {
610
+ onDeepUpdate();
611
+ }, [context]);
612
+ return setPathPrefix;
613
+ }),
614
+ result = _renderHook16.result;
615
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
616
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
617
+ (0, _react.act)(function () {
618
+ result.current('my/');
619
+ });
620
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
621
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
622
+ });
623
+ });
624
+ (0, _globals.describe)('`useUseCase` should work with 1+ argument on accessor mode', function () {
625
+ (0, _globals.test)('check `context.length`', function () {
626
+ var _renderHook17 = (0, _react.renderHook)(function () {
627
+ return (0, _.useUseCase)(fileUseCase);
628
+ }),
629
+ result = _renderHook17.result;
630
+ var context = result.current;
631
+ (0, _globals.expect)(context).toHaveLength(2);
632
+ });
633
+ (0, _globals.test)('`entity` should be `undefined`', function () {
634
+ var _renderHook18 = (0, _react.renderHook)(function () {
635
+ return (0, _.useUseCase)(fileUseCase);
636
+ }),
637
+ result = _renderHook18.result;
638
+ var context = result.current;
639
+ var _context17 = (0, _slicedToArray2["default"])(context, 1),
640
+ entity = _context17[0];
641
+ (0, _globals.expect)(entity).toBe(void 0);
642
+ });
643
+ (0, _globals.test)('`reducers` should be returned as an object', function () {
644
+ var _renderHook19 = (0, _react.renderHook)(function () {
645
+ return (0, _.useUseCase)(fileUseCase);
646
+ }),
647
+ result = _renderHook19.result;
648
+ var context = result.current;
649
+ var _context18 = (0, _slicedToArray2["default"])(context, 2),
650
+ reducers = _context18[1];
651
+ (0, _globals.expect)((0, _typeof2["default"])(reducers)).toBe('object');
652
+ });
653
+ (0, _globals.test)('`yield entity` should not trigger update', function () {
654
+ var onUpdate = _globals.jest.fn();
655
+ var _renderHook20 = (0, _react.renderHook)(function () {
656
+ (0, _ahooks.useUpdateEffect)(function () {
657
+ onUpdate();
658
+ });
659
+ return (0, _.useUseCase)(fileUseCase);
660
+ }),
661
+ result = _renderHook20.result;
662
+ var context = result.current;
663
+ var _context19 = (0, _slicedToArray2["default"])(context, 2),
664
+ reducers = _context19[1];
665
+ var setPath = reducers.setPath;
666
+ (0, _react.act)(function () {
667
+ setPath(PATH_1);
668
+ });
669
+ (0, _globals.expect)(result.current).toBe(context);
670
+ (0, _globals.expect)(result.current).toEqual(context);
671
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
672
+ });
673
+ (0, _globals.test)('should work within <Child />', function () {
674
+ var textPrefix = '>>';
675
+ var onUpdate1 = _globals.jest.fn();
676
+ var onPathChange1 = _globals.jest.fn();
677
+ var onUndefinedEntity1 = _globals.jest.fn();
678
+ var onUpdate2 = _globals.jest.fn();
679
+ var onPathChange2 = _globals.jest.fn();
680
+ var onUndefinedEntity2 = _globals.jest.fn();
681
+ var onSetPath = _globals.jest.fn(function () {
682
+ return PATH_1;
683
+ });
684
+ (0, _react.render)((0, _jsxRuntime.jsxs)("div", {
685
+ children: [(0, _jsxRuntime.jsx)(Parent, {
686
+ onSetPath: onSetPath,
687
+ children: (0, _jsxRuntime.jsx)(Child, {
688
+ textPrefix: textPrefix,
689
+ onUpdate: onUpdate1,
690
+ onPathChange: onPathChange1,
691
+ onUndefinedEntity: onUndefinedEntity1
692
+ })
693
+ }), (0, _jsxRuntime.jsx)(Child, {
694
+ onUpdate: onUpdate2,
695
+ onPathChange: onPathChange2,
696
+ onUndefinedEntity: onUndefinedEntity2
697
+ })]
698
+ }));
699
+ _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
700
+ (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
701
+ (0, _globals.expect)(onUpdate1).toHaveBeenCalledTimes(1);
702
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledWith(PATH_1);
703
+ _react.fireEvent.click(_react.screen.getByText(textPrefix + CHILD_BUTTON_TEXT));
704
+ (0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
705
+ (0, _globals.expect)(onUpdate1).toHaveBeenCalledTimes(2);
706
+ (0, _globals.expect)(onPathChange1).toHaveBeenCalledWith('');
707
+ (0, _globals.expect)(onUpdate2).toHaveBeenCalledTimes(0);
708
+ (0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(0);
709
+ (0, _globals.expect)(onUndefinedEntity1).toHaveBeenCalledTimes(0);
710
+ (0, _globals.expect)(onUndefinedEntity2).toHaveBeenCalledTimes(1);
711
+ });
712
+ (0, _globals.test)('`options.onChange` event should be trigger at child elements', function () {
713
+ var onFirstChange = _globals.jest.fn();
714
+ var onSecondChange = _globals.jest.fn();
715
+ var onParentPathChange = _globals.jest.fn();
716
+ var firstButtonText = 'first button';
717
+ var secondButtonText = 'second button';
718
+ var onChange = onFirstChange;
719
+ var A = function A() {
720
+ (0, _.useUseCase)(fileUseCase, {
721
+ onChange: onChange
722
+ });
723
+ return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
724
+ };
725
+ var B = function B() {
726
+ var _useUseCase6 = (0, _.useUseCase)(defaultFile, fileUseCase, {
727
+ onChange: onParentPathChange
728
+ }),
729
+ _useUseCase7 = (0, _slicedToArray2["default"])(_useUseCase6, 3),
730
+ setPath = _useUseCase7[1].setPath,
731
+ Provider = _useUseCase7[2];
732
+ var onFirstClick = function onFirstClick() {
733
+ setPath(PATH_1);
734
+ onChange = onSecondChange;
735
+ };
736
+ var onSecondClick = function onSecondClick() {
737
+ setPath('');
738
+ };
739
+ return (0, _jsxRuntime.jsxs)(Provider, {
740
+ children: [(0, _jsxRuntime.jsx)(A, {}), (0, _jsxRuntime.jsx)("button", {
741
+ onClick: onFirstClick,
742
+ children: firstButtonText
743
+ }), (0, _jsxRuntime.jsx)("button", {
744
+ onClick: onSecondClick,
745
+ children: secondButtonText
746
+ })]
747
+ });
748
+ };
749
+ (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
750
+ (0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(0);
751
+ _react.fireEvent.click(_react.screen.getByText(firstButtonText));
752
+ (0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(1);
753
+ (0, _globals.expect)(onFirstChange).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
754
+ ext: EXT_1,
755
+ path: PATH_1
756
+ }), defaultFile);
757
+ (0, _globals.expect)(onParentPathChange).toHaveBeenCalledTimes(1);
758
+ (0, _globals.expect)(onSecondChange).toHaveBeenCalledTimes(0);
759
+ _react.fireEvent.click(_react.screen.getByText(secondButtonText));
760
+ (0, _globals.expect)(onSecondChange).toHaveBeenCalledTimes(1);
761
+ (0, _globals.expect)(onSecondChange).toHaveBeenLastCalledWith(defaultFile, _objectSpread(_objectSpread({}, defaultFile), {}, {
762
+ ext: EXT_1,
763
+ path: PATH_1
764
+ }));
765
+ (0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(1);
766
+ (0, _globals.expect)(onParentPathChange).toHaveBeenCalledTimes(2);
767
+ });
768
+ (0, _globals.test)('`options.watch` should be trigger at child elements', function () {
769
+ var onFirstExtChange = _globals.jest.fn();
770
+ var onSecondExtChange = _globals.jest.fn();
771
+ var onParentExtChange = _globals.jest.fn();
772
+ var onExtChange = onFirstExtChange;
773
+ var firstButtonText = 'first button';
774
+ var secondButtonText = 'second button';
775
+ var A = function A() {
776
+ (0, _.useUseCase)(fileUseCase, {
777
+ watch: {
778
+ ext: onExtChange
779
+ }
780
+ });
781
+ return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
782
+ };
783
+ var B = function B() {
784
+ var _useUseCase8 = (0, _.useUseCase)(defaultFile, fileUseCase, {
785
+ watch: {
786
+ ext: onParentExtChange
787
+ }
788
+ }),
789
+ _useUseCase9 = (0, _slicedToArray2["default"])(_useUseCase8, 3),
790
+ setPath = _useUseCase9[1].setPath,
791
+ Provider = _useUseCase9[2];
792
+ var onFirstClick = function onFirstClick() {
793
+ setPath(PATH_1);
794
+ onExtChange = onSecondExtChange;
795
+ };
796
+ var onSecondClick = function onSecondClick() {
797
+ setPath('');
798
+ };
799
+ return (0, _jsxRuntime.jsxs)(Provider, {
800
+ children: [(0, _jsxRuntime.jsx)(A, {}), (0, _jsxRuntime.jsx)("button", {
801
+ onClick: onFirstClick,
802
+ children: firstButtonText
803
+ }), (0, _jsxRuntime.jsx)("button", {
804
+ onClick: onSecondClick,
805
+ children: secondButtonText
806
+ })]
807
+ });
808
+ };
809
+ (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
810
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(0);
811
+ _react.fireEvent.click(_react.screen.getByText(firstButtonText));
812
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
813
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenLastCalledWith(_objectSpread(_objectSpread({}, defaultFile), {}, {
814
+ ext: EXT_1,
815
+ path: PATH_1
816
+ }), defaultFile);
817
+ (0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(1);
818
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(0);
819
+ _react.fireEvent.click(_react.screen.getByText(secondButtonText));
820
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenCalledTimes(1);
821
+ (0, _globals.expect)(onSecondExtChange).toHaveBeenLastCalledWith(defaultFile, _objectSpread(_objectSpread({}, defaultFile), {}, {
822
+ ext: EXT_1,
823
+ path: PATH_1
824
+ }));
825
+ (0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
826
+ (0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(2);
827
+ });
828
+ });
829
+ (0, _globals.describe)('`useUseCase` should work with 1+ arguments on non-entity mode', function () {
830
+ (0, _globals.test)('`entity` should equal `defaultFile`', function () {
831
+ var _renderHook21 = (0, _react.renderHook)(function () {
832
+ return (0, _.useUseCase)(mathUseCase);
833
+ }),
834
+ result = _renderHook21.result;
835
+ var reducers = result.current;
836
+ (0, _globals.expect)((0, _typeof2["default"])(reducers)).toBe('object');
837
+ });
838
+ (0, _globals.test)('returned reducer should work', function () {
839
+ var _renderHook22 = (0, _react.renderHook)(function () {
840
+ return (0, _.useUseCase)(mathUseCase);
841
+ }),
842
+ result = _renderHook22.result;
843
+ var reducers = result.current;
844
+ var add = reducers.add;
845
+ (0, _globals.expect)(add(1, 2)).toBe(3);
846
+ });
847
+ (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
848
+ var _renderHook23 = (0, _react.renderHook)(function () {
849
+ return (0, _.useUseCase)(mathUseCase, {
850
+ extraValue: 5
851
+ });
852
+ }),
853
+ result = _renderHook23.result;
854
+ var reducers = result.current;
855
+ var add = reducers.add;
856
+ (0, _globals.expect)(add(1, 2)).toBe(8);
857
+ });
858
+ (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
859
+ var onUpdate = _globals.jest.fn();
860
+ var onDeepUpdate = _globals.jest.fn();
861
+ var _renderHook24 = (0, _react.renderHook)(function () {
862
+ var _useState7 = (0, _react2.useState)(0),
863
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
864
+ extraValue = _useState8[0],
865
+ setExtraValue = _useState8[1];
866
+ var reducers = (0, _.useUseCase)(mathUseCase, {
867
+ extraValue: extraValue
868
+ });
869
+ (0, _ahooks.useUpdateEffect)(function () {
870
+ onUpdate();
871
+ }, [reducers]);
872
+ useDeepCompareUpdate(function () {
873
+ onDeepUpdate();
874
+ }, [reducers]);
875
+ return setExtraValue;
876
+ }),
877
+ result = _renderHook24.result;
878
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
879
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
880
+ (0, _react.act)(function () {
881
+ result.current(3);
882
+ });
883
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
884
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
885
+ });
886
+ (0, _globals.test)('when `deps` change, it should update reducers', function () {
887
+ var onUpdate = _globals.jest.fn();
888
+ var onDeepUpdate = _globals.jest.fn();
889
+ var _renderHook25 = (0, _react.renderHook)(function () {
890
+ var _useState9 = (0, _react2.useState)(0),
891
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
892
+ extraValue = _useState10[0],
893
+ setExtraValue = _useState10[1];
894
+ var reducers = (0, _.useUseCase)(mathUseCase, {
895
+ extraValue: extraValue
896
+ }, [extraValue]);
897
+ (0, _ahooks.useUpdateEffect)(function () {
898
+ onUpdate();
899
+ }, [reducers]);
900
+ useDeepCompareUpdate(function () {
901
+ onDeepUpdate();
902
+ }, [reducers]);
903
+ return setExtraValue;
904
+ }),
905
+ result = _renderHook25.result;
906
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
907
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
908
+ (0, _react.act)(function () {
909
+ result.current(3);
910
+ });
911
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
912
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
913
+ });
914
+ (0, _globals.test)('empty `deps` should not update reducers', function () {
915
+ var onUpdate = _globals.jest.fn();
916
+ var onDeepUpdate = _globals.jest.fn();
917
+ var _renderHook26 = (0, _react.renderHook)(function () {
918
+ var _useState11 = (0, _react2.useState)(0),
919
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
920
+ extraValue = _useState12[0],
921
+ setExtraValue = _useState12[1];
922
+ var reducers = (0, _.useUseCase)(mathUseCase, {
923
+ extraValue: extraValue
924
+ }, []);
925
+ (0, _ahooks.useUpdateEffect)(function () {
926
+ onUpdate();
927
+ }, [reducers]);
928
+ useDeepCompareUpdate(function () {
929
+ onDeepUpdate();
930
+ }, [reducers]);
931
+ return setExtraValue;
932
+ }),
933
+ result = _renderHook26.result;
934
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
935
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
936
+ (0, _react.act)(function () {
937
+ result.current(3);
938
+ });
939
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
940
+ (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
941
+ });
942
+ (0, _globals.test)('should not trigger update', function () {
943
+ var onUpdate = _globals.jest.fn();
944
+ (0, _react.render)((0, _jsxRuntime.jsx)(MathParent, {
945
+ onUpdate: onUpdate
946
+ }));
947
+ _react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
948
+ (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
949
+ });
950
+ });
951
+ });