@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.
- package/README.md +187 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.LICENSE.txt +9 -0
- package/es/components/UseCaseFragment/index.d.ts +3 -0
- package/es/components/UseCaseFragment/index.js +7 -0
- package/es/components/UseCaseFragment/types.d.ts +7 -0
- package/es/components/UseCaseFragment/types.js +1 -0
- package/es/configs/defaultUseCaseContext/index.d.ts +2 -0
- package/es/configs/defaultUseCaseContext/index.js +2 -0
- package/es/configs/usecaseContextMap/index.d.ts +3 -0
- package/es/configs/usecaseContextMap/index.js +1 -0
- package/es/configs/usecaseContextMap/types.d.ts +20 -0
- package/es/configs/usecaseContextMap/types.js +1 -0
- package/es/core/usecases/optionsGetterCellectionUseCase/index.d.ts +2 -0
- package/es/core/usecases/optionsGetterCellectionUseCase/index.js +13 -0
- package/es/core/usecases/optionsGetterCellectionUseCase/types.d.ts +8 -0
- package/es/core/usecases/optionsGetterCellectionUseCase/types.js +1 -0
- package/es/hooks/useOptionsTransfer/index.d.ts +3 -0
- package/es/hooks/useOptionsTransfer/index.js +15 -0
- package/es/hooks/useUseCase/index.d.ts +2 -0
- package/es/hooks/useUseCase/index.js +99 -0
- package/es/hooks/useUseCase/index.test.d.ts +1 -0
- package/es/hooks/useUseCase/index.test.js +670 -0
- package/es/hooks/useUseCase/methods/triggerCallbacks/index.d.ts +3 -0
- package/es/hooks/useUseCase/methods/triggerCallbacks/index.js +11 -0
- package/es/hooks/useUseCase/methods/triggerWatchers/index.d.ts +2 -0
- package/es/hooks/useUseCase/methods/triggerWatchers/index.js +10 -0
- package/es/hooks/useUseCase/types.d.ts +25 -0
- package/es/hooks/useUseCase/types.js +1 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +2 -0
- package/lib/components/UseCaseFragment/index.js +20 -0
- package/lib/components/UseCaseFragment/types.js +5 -0
- package/lib/configs/defaultUseCaseContext/index.js +9 -0
- package/lib/configs/usecaseContextMap/index.js +8 -0
- package/lib/configs/usecaseContextMap/types.js +5 -0
- package/lib/core/usecases/optionsGetterCellectionUseCase/index.js +23 -0
- package/lib/core/usecases/optionsGetterCellectionUseCase/types.js +5 -0
- package/lib/hooks/useOptionsTransfer/index.js +23 -0
- package/lib/hooks/useUseCase/index.js +135 -0
- package/lib/hooks/useUseCase/index.test.js +951 -0
- package/lib/hooks/useUseCase/methods/triggerCallbacks/index.js +32 -0
- package/lib/hooks/useUseCase/methods/triggerWatchers/index.js +22 -0
- package/lib/hooks/useUseCase/types.js +5 -0
- package/lib/index.js +27 -0
- 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
|
+
});
|