@mic-rexjs/usecases-react 4.0.0-beta.0 → 4.0.0-beta.4
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/dist/index.min.js +1 -1
- package/dist/index.min.js.LICENSE.txt +2 -0
- package/es/components/UseCaseFragment/index.js +2 -2
- package/es/enums/Statuses/index.d.ts +86 -10
- package/es/enums/Statuses/index.js +86 -10
- package/es/hooks/useAlternateStatuses/index.d.ts +2 -0
- package/es/hooks/useAlternateStatuses/index.js +16 -0
- package/es/hooks/useChanged/index.d.ts +2 -0
- package/es/hooks/useChanged/index.js +17 -0
- package/es/hooks/useChanged/types.d.ts +3 -0
- package/es/hooks/useContext/index.d.ts +3 -4
- package/es/hooks/useContext/index.js +17 -15
- package/es/hooks/useContext/index.test.js +13 -24
- package/es/hooks/useContextValue/index.d.ts +3 -4
- package/es/hooks/useContextValue/index.js +9 -16
- package/es/hooks/useDepsKey/index.js +11 -9
- package/es/hooks/useEntity/index.d.ts +3 -2
- package/es/hooks/useEntity/index.js +62 -59
- package/es/hooks/useEntityReturn/index.d.ts +5 -0
- package/es/hooks/useEntityReturn/index.js +15 -0
- package/es/hooks/useEntityReturn/types.d.ts +7 -0
- package/es/hooks/useEntityRootExec/index.d.ts +5 -0
- package/es/hooks/useEntityRootExec/index.js +7 -0
- package/es/hooks/useEntityRootExec/types.d.ts +7 -0
- package/es/hooks/useEntityRootReturn/index.d.ts +5 -0
- package/es/hooks/useEntityRootReturn/index.js +14 -0
- package/es/hooks/useEntityRootReturn/types.d.ts +7 -0
- package/es/hooks/useEntityRootReturn/types.js +1 -0
- package/es/hooks/useExec/index.d.ts +2 -3
- package/es/hooks/useExec/index.js +3 -25
- package/es/hooks/useExec/types.d.ts +7 -2
- package/es/hooks/useFullArguments/index.d.ts +2 -3
- package/es/hooks/useFullArguments/index.js +4 -6
- package/es/hooks/useIfExec/index.d.ts +2 -0
- package/es/hooks/useIfExec/index.js +20 -0
- package/es/hooks/useIfExec/types.d.ts +6 -0
- package/es/hooks/useIfExec/types.js +1 -0
- package/es/hooks/useIfReturn/index.d.ts +2 -0
- package/es/hooks/useIfReturn/index.js +22 -0
- package/es/hooks/useIfReturn/types.d.ts +6 -0
- package/es/hooks/useIfReturn/types.js +1 -0
- package/es/hooks/useProvider/index.d.ts +3 -3
- package/es/hooks/useProvider/index.js +15 -13
- package/es/hooks/useProviders/index.js +4 -4
- package/es/hooks/useReducers/index.d.ts +5 -4
- package/es/hooks/useReducers/index.js +47 -10
- package/es/hooks/useReturn/index.d.ts +2 -0
- package/es/hooks/useReturn/index.js +33 -0
- package/es/hooks/useReturn/types.d.ts +11 -0
- package/es/hooks/useReturn/types.js +1 -0
- package/es/hooks/useRootInitializing/index.d.ts +2 -0
- package/es/hooks/useRootInitializing/index.js +14 -0
- package/es/hooks/useRootReturn/index.d.ts +5 -0
- package/es/hooks/useRootReturn/index.js +22 -0
- package/es/hooks/useRootReturn/types.d.ts +14 -0
- package/es/hooks/useRootReturn/types.js +1 -0
- package/es/hooks/useStatuses/index.d.ts +4 -4
- package/es/hooks/useStatuses/index.js +46 -21
- package/es/hooks/useStore/index.d.ts +3 -3
- package/es/hooks/useStore/index.js +24 -47
- package/es/hooks/useThrottleUpdate/index.d.ts +2 -0
- package/es/hooks/useThrottleUpdate/index.js +31 -0
- package/es/hooks/useThrottleUpdate/types.d.ts +3 -0
- package/es/hooks/useThrottleUpdate/types.js +1 -0
- package/es/hooks/useUseCase/index.js +18 -27
- package/es/hooks/useUseCase/index.test.js +415 -236
- package/es/hooks/useUseCase/types.d.ts +13 -2
- package/es/types.d.ts +2 -1
- package/es/usecases/contextUseCase/index.js +21 -38
- package/es/usecases/contextUseCase/types.d.ts +6 -9
- package/es/usecases/lifecycleEventUseCase/index.js +37 -9
- package/es/usecases/lifecycleEventUseCase/types.d.ts +11 -8
- package/lib/components/UseCaseFragment/index.js +2 -2
- package/lib/enums/Statuses/index.js +86 -10
- package/lib/hooks/useAlternateStatuses/index.js +22 -0
- package/lib/hooks/useChanged/index.js +23 -0
- package/lib/hooks/useContext/index.js +19 -17
- package/lib/hooks/useContext/index.test.js +13 -24
- package/lib/hooks/useContextValue/index.js +8 -15
- package/lib/hooks/useDepsKey/index.js +10 -8
- package/lib/hooks/useEntity/index.js +93 -62
- package/lib/hooks/useEntityReturn/index.js +22 -0
- package/lib/hooks/useEntityRootExec/index.js +13 -0
- package/lib/hooks/useEntityRootReturn/index.js +21 -0
- package/lib/hooks/useEntityRootReturn/types.js +5 -0
- package/lib/hooks/useExec/index.js +3 -25
- package/lib/hooks/useFullArguments/index.js +4 -6
- package/lib/hooks/useIfExec/index.js +27 -0
- package/lib/hooks/useIfExec/types.js +5 -0
- package/lib/hooks/useIfReturn/index.js +29 -0
- package/lib/hooks/useIfReturn/types.js +5 -0
- package/lib/hooks/useProvider/index.js +15 -13
- package/lib/hooks/useProviders/index.js +3 -3
- package/lib/hooks/useReducers/index.js +50 -10
- package/lib/hooks/useReturn/index.js +40 -0
- package/lib/hooks/useReturn/types.js +5 -0
- package/lib/hooks/useRootInitializing/index.js +20 -0
- package/lib/hooks/useRootReturn/index.js +30 -0
- package/lib/hooks/useRootReturn/types.js +5 -0
- package/lib/hooks/useStatuses/index.js +47 -21
- package/lib/hooks/useStore/index.js +22 -46
- package/lib/hooks/useThrottleUpdate/index.js +37 -0
- package/lib/hooks/useThrottleUpdate/types.js +5 -0
- package/lib/hooks/useUseCase/index.js +18 -27
- package/lib/hooks/useUseCase/index.test.js +458 -280
- package/lib/usecases/contextUseCase/index.js +21 -38
- package/lib/usecases/lifecycleEventUseCase/index.js +48 -8
- package/package.json +1 -1
- package/es/classes/OptionsSet/index.d.ts +0 -6
- package/es/classes/OptionsSet/index.js +0 -44
- package/es/classes/OptionsSet/types.d.ts +0 -8
- package/es/enums/ArgumentTypes/index.d.ts +0 -4
- package/es/enums/ArgumentTypes/index.js +0 -5
- package/es/hooks/useArgumentTypes/index.d.ts +0 -3
- package/es/hooks/useArgumentTypes/index.js +0 -14
- package/es/hooks/useConstantEntityReducers/index.d.ts +0 -3
- package/es/hooks/useConstantEntityReducers/index.js +0 -7
- package/es/hooks/useConstantFn/index.d.ts +0 -1
- package/es/hooks/useConstantFn/index.js +0 -10
- package/es/hooks/useConstantReducers/index.d.ts +0 -3
- package/es/hooks/useConstantReducers/index.js +0 -6
- package/es/hooks/useContextualItem/index.d.ts +0 -4
- package/es/hooks/useContextualItem/index.js +0 -11
- package/es/hooks/useEntityInitializing/index.d.ts +0 -2
- package/es/hooks/useEntityInitializing/index.js +0 -16
- package/es/hooks/useOptions/index.d.ts +0 -5
- package/es/hooks/useOptions/index.js +0 -54
- package/es/hooks/useOptions/types.d.ts +0 -5
- package/es/hooks/useOptionsSet/index.d.ts +0 -5
- package/es/hooks/useOptionsSet/index.js +0 -16
- package/es/hooks/useRootCreation/index.d.ts +0 -4
- package/es/hooks/useRootCreation/index.js +0 -20
- package/es/hooks/useRootCreation/types.d.ts +0 -3
- package/lib/classes/OptionsSet/index.js +0 -94
- package/lib/enums/ArgumentTypes/index.js +0 -11
- package/lib/hooks/useArgumentTypes/index.js +0 -22
- package/lib/hooks/useConstantEntityReducers/index.js +0 -13
- package/lib/hooks/useConstantFn/index.js +0 -17
- package/lib/hooks/useConstantReducers/index.js +0 -12
- package/lib/hooks/useContextualItem/index.js +0 -17
- package/lib/hooks/useEntityInitializing/index.js +0 -22
- package/lib/hooks/useOptions/index.js +0 -61
- package/lib/hooks/useOptionsSet/index.js +0 -22
- package/lib/hooks/useRootCreation/index.js +0 -26
- /package/es/{classes/OptionsSet → hooks/useChanged}/types.js +0 -0
- /package/es/hooks/{useOptions → useEntityReturn}/types.js +0 -0
- /package/es/hooks/{useRootCreation → useEntityRootExec}/types.js +0 -0
- /package/lib/{classes/OptionsSet → hooks/useChanged}/types.js +0 -0
- /package/lib/hooks/{useOptions → useEntityReturn}/types.js +0 -0
- /package/lib/hooks/{useRootCreation → useEntityRootExec}/types.js +0 -0
|
@@ -1137,44 +1137,6 @@ describe('useUseCase', () => {
|
|
|
1137
1137
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
1138
1138
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
1139
1139
|
});
|
|
1140
|
-
test('event options should be triggered', async () => {
|
|
1141
|
-
let readFilePromise = null;
|
|
1142
|
-
const buttonText = 'my button';
|
|
1143
|
-
const onReadFile = jest.fn(path => {
|
|
1144
|
-
void path;
|
|
1145
|
-
return 1024;
|
|
1146
|
-
});
|
|
1147
|
-
const onSizeChange = jest.fn();
|
|
1148
|
-
const TestComponent = () => {
|
|
1149
|
-
const _useUseCase10 = useUseCase(defaultFile, fileUseCase, {
|
|
1150
|
-
onReadFile
|
|
1151
|
-
}),
|
|
1152
|
-
_useUseCase11 = _slicedToArray(_useUseCase10, 2),
|
|
1153
|
-
size = _useUseCase11[0].size,
|
|
1154
|
-
readFile = _useUseCase11[1].readFile;
|
|
1155
|
-
const onClick = () => {
|
|
1156
|
-
readFilePromise = readFile(PATH_1);
|
|
1157
|
-
};
|
|
1158
|
-
useUpdateEffect(() => {
|
|
1159
|
-
onSizeChange(size);
|
|
1160
|
-
}, [size]);
|
|
1161
|
-
return _jsx("button", {
|
|
1162
|
-
onClick: onClick,
|
|
1163
|
-
children: buttonText
|
|
1164
|
-
});
|
|
1165
|
-
};
|
|
1166
|
-
render(_jsx(TestComponent, {}));
|
|
1167
|
-
expect(onReadFile).toHaveBeenCalledTimes(0);
|
|
1168
|
-
expect(onSizeChange).toHaveBeenCalledTimes(0);
|
|
1169
|
-
await act(async () => {
|
|
1170
|
-
fireEvent.click(screen.getByText(buttonText));
|
|
1171
|
-
await readFilePromise;
|
|
1172
|
-
});
|
|
1173
|
-
expect(onReadFile).toHaveBeenCalledTimes(1);
|
|
1174
|
-
expect(onReadFile).toHaveBeenCalledWith(PATH_1);
|
|
1175
|
-
expect(onSizeChange).toHaveBeenCalledTimes(1);
|
|
1176
|
-
expect(onSizeChange).toHaveBeenCalledWith(1024);
|
|
1177
|
-
});
|
|
1178
1140
|
test(`should call latest functions of usecase options even deps has not change`, () => {
|
|
1179
1141
|
const onPathChange1 = jest.fn();
|
|
1180
1142
|
const onPathChange2 = jest.fn();
|
|
@@ -1297,15 +1259,15 @@ describe('useUseCase', () => {
|
|
|
1297
1259
|
const TestParent = _ref5 => {
|
|
1298
1260
|
let file = _ref5.file;
|
|
1299
1261
|
const path = file.path;
|
|
1300
|
-
const
|
|
1262
|
+
const _useUseCase10 = useUseCase(function () {
|
|
1301
1263
|
let currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
|
|
1302
1264
|
return {
|
|
1303
1265
|
...currentFile,
|
|
1304
1266
|
path
|
|
1305
1267
|
};
|
|
1306
1268
|
}, fileUseCase, {}, [path]),
|
|
1307
|
-
|
|
1308
|
-
Provider =
|
|
1269
|
+
_useUseCase11 = _slicedToArray(_useUseCase10, 3),
|
|
1270
|
+
Provider = _useUseCase11[2];
|
|
1309
1271
|
return _jsx(Provider, {
|
|
1310
1272
|
children: _jsx(TestChild, {})
|
|
1311
1273
|
});
|
|
@@ -1989,6 +1951,55 @@ describe('useUseCase', () => {
|
|
|
1989
1951
|
oldValue: EXT_1
|
|
1990
1952
|
});
|
|
1991
1953
|
});
|
|
1954
|
+
test.only('`options.watch` should not trigger when entity changes between render and effect phase', async () => {
|
|
1955
|
+
let currentPath = '';
|
|
1956
|
+
let currentSetPath = path => {
|
|
1957
|
+
void path;
|
|
1958
|
+
};
|
|
1959
|
+
const onPathChange = jest.fn();
|
|
1960
|
+
const _renderHook37 = renderHook(() => {
|
|
1961
|
+
const cp = currentPath;
|
|
1962
|
+
const onEffect = useMemoizedFn(() => {
|
|
1963
|
+
if (cp !== PATH_1) {
|
|
1964
|
+
return;
|
|
1965
|
+
}
|
|
1966
|
+
currentSetPath(PATH_2);
|
|
1967
|
+
});
|
|
1968
|
+
/**
|
|
1969
|
+
* 这里一定要在 `useUseCase` 前面,因为 `jest` 的测试环境,`useEffect` 会在 `setTimeout(fn, 0)` 之前执行,
|
|
1970
|
+
* 也就是 `useEffect` 不会存在异步的情况,但实际环境却存在 `useEffect` 是异步的情况,
|
|
1971
|
+
* 比如在 `render` 阶段与 `useEffect` 阶段之间,`touchmove` 等事件会触发修改状态。
|
|
1972
|
+
*
|
|
1973
|
+
* 所以,我们在 `useUseCase` 之前使用 `useUpdateEffect`,
|
|
1974
|
+
* 来模拟在 `useUseCase` 的 `render` 阶段与 `useEffect` 阶段之间运行的异步。
|
|
1975
|
+
*/
|
|
1976
|
+
useUpdateEffect(() => {
|
|
1977
|
+
if (cp !== PATH_1) {
|
|
1978
|
+
return;
|
|
1979
|
+
}
|
|
1980
|
+
onEffect();
|
|
1981
|
+
}, [cp, onEffect]);
|
|
1982
|
+
const core = useUseCase(defaultFile, fileUseCase, {
|
|
1983
|
+
watch: {
|
|
1984
|
+
path(_ref6) {
|
|
1985
|
+
let newValue = _ref6.newValue;
|
|
1986
|
+
currentPath = newValue;
|
|
1987
|
+
onPathChange(newValue);
|
|
1988
|
+
}
|
|
1989
|
+
}
|
|
1990
|
+
});
|
|
1991
|
+
return core;
|
|
1992
|
+
}),
|
|
1993
|
+
result = _renderHook37.result;
|
|
1994
|
+
const current = result.current;
|
|
1995
|
+
const _current8 = _slicedToArray(current, 2),
|
|
1996
|
+
setPath = _current8[1].setPath;
|
|
1997
|
+
currentSetPath = setPath;
|
|
1998
|
+
act(() => {
|
|
1999
|
+
setPath(PATH_1);
|
|
2000
|
+
});
|
|
2001
|
+
expect(onPathChange).toHaveBeenCalledTimes(2);
|
|
2002
|
+
});
|
|
1992
2003
|
test('multiple `Provider` should work', () => {
|
|
1993
2004
|
const onNumberMount = jest.fn();
|
|
1994
2005
|
const onStringMount = jest.fn();
|
|
@@ -2003,15 +2014,15 @@ describe('useUseCase', () => {
|
|
|
2003
2014
|
return entityUseCase();
|
|
2004
2015
|
};
|
|
2005
2016
|
const TestChildComponent = () => {
|
|
2006
|
-
const
|
|
2017
|
+
const _useUseCase12 = useUseCase(numberUseCase),
|
|
2018
|
+
_useUseCase13 = _slicedToArray(_useUseCase12, 1),
|
|
2019
|
+
numberValue = _useUseCase13[0];
|
|
2020
|
+
const _useUseCase14 = useUseCase(stringUseCase),
|
|
2007
2021
|
_useUseCase15 = _slicedToArray(_useUseCase14, 1),
|
|
2008
|
-
|
|
2009
|
-
const _useUseCase16 = useUseCase(
|
|
2022
|
+
stringValue = _useUseCase15[0];
|
|
2023
|
+
const _useUseCase16 = useUseCase(booleanUseCase),
|
|
2010
2024
|
_useUseCase17 = _slicedToArray(_useUseCase16, 1),
|
|
2011
|
-
|
|
2012
|
-
const _useUseCase18 = useUseCase(booleanUseCase),
|
|
2013
|
-
_useUseCase19 = _slicedToArray(_useUseCase18, 1),
|
|
2014
|
-
booleanValue = _useUseCase19[0];
|
|
2025
|
+
booleanValue = _useUseCase17[0];
|
|
2015
2026
|
useMount(() => {
|
|
2016
2027
|
onNumberMount(numberValue);
|
|
2017
2028
|
onStringMount(stringValue);
|
|
@@ -2020,15 +2031,15 @@ describe('useUseCase', () => {
|
|
|
2020
2031
|
return null;
|
|
2021
2032
|
};
|
|
2022
2033
|
const TestParentComponent = () => {
|
|
2023
|
-
const
|
|
2034
|
+
const _useUseCase18 = useUseCase(11, numberUseCase),
|
|
2035
|
+
_useUseCase19 = _slicedToArray(_useUseCase18, 3),
|
|
2036
|
+
NumberProvider = _useUseCase19[2];
|
|
2037
|
+
const _useUseCase20 = useUseCase('hello', stringUseCase),
|
|
2024
2038
|
_useUseCase21 = _slicedToArray(_useUseCase20, 3),
|
|
2025
|
-
|
|
2026
|
-
const _useUseCase22 = useUseCase(
|
|
2039
|
+
StringProvider = _useUseCase21[2];
|
|
2040
|
+
const _useUseCase22 = useUseCase(true, booleanUseCase),
|
|
2027
2041
|
_useUseCase23 = _slicedToArray(_useUseCase22, 3),
|
|
2028
|
-
|
|
2029
|
-
const _useUseCase24 = useUseCase(true, booleanUseCase),
|
|
2030
|
-
_useUseCase25 = _slicedToArray(_useUseCase24, 3),
|
|
2031
|
-
BooleanProvider = _useUseCase25[2];
|
|
2042
|
+
BooleanProvider = _useUseCase23[2];
|
|
2032
2043
|
return _jsx(NumberProvider, {
|
|
2033
2044
|
with: [StringProvider, BooleanProvider],
|
|
2034
2045
|
children: _jsx(TestChildComponent, {})
|
|
@@ -2039,7 +2050,7 @@ describe('useUseCase', () => {
|
|
|
2039
2050
|
expect(onStringMount).toHaveBeenCalledWith('hello');
|
|
2040
2051
|
expect(onBooleanMount).toHaveBeenCalledWith(true);
|
|
2041
2052
|
});
|
|
2042
|
-
test('`onBind` event should be called when component mount', () => {
|
|
2053
|
+
test('Lifecycle `onBind` event should be called when component mount', () => {
|
|
2043
2054
|
const onBind = jest.fn(entity => {
|
|
2044
2055
|
void entity;
|
|
2045
2056
|
});
|
|
@@ -2053,9 +2064,9 @@ describe('useUseCase', () => {
|
|
|
2053
2064
|
};
|
|
2054
2065
|
};
|
|
2055
2066
|
renderHook(() => {
|
|
2056
|
-
const
|
|
2057
|
-
|
|
2058
|
-
setEntity =
|
|
2067
|
+
const _useUseCase24 = useUseCase(5, testUseCase),
|
|
2068
|
+
_useUseCase25 = _slicedToArray(_useUseCase24, 2),
|
|
2069
|
+
setEntity = _useUseCase25[1].setEntity;
|
|
2059
2070
|
useMount(() => {
|
|
2060
2071
|
setEntity(100);
|
|
2061
2072
|
});
|
|
@@ -2063,7 +2074,7 @@ describe('useUseCase', () => {
|
|
|
2063
2074
|
expect(onBind).toHaveBeenCalledTimes(1);
|
|
2064
2075
|
expect(onBind).toHaveBeenCalledWith(5);
|
|
2065
2076
|
});
|
|
2066
|
-
test('`onChange` event should be called when entity change', () => {
|
|
2077
|
+
test('Lifecycle `onChange` event should be called when entity change', () => {
|
|
2067
2078
|
const onChange = jest.fn((newEntity, oldEntity) => {
|
|
2068
2079
|
void newEntity;
|
|
2069
2080
|
void oldEntity;
|
|
@@ -2077,13 +2088,13 @@ describe('useUseCase', () => {
|
|
|
2077
2088
|
...entityReducers
|
|
2078
2089
|
};
|
|
2079
2090
|
};
|
|
2080
|
-
const
|
|
2091
|
+
const _renderHook38 = renderHook(() => {
|
|
2081
2092
|
return useUseCase(5, testUseCase);
|
|
2082
2093
|
}),
|
|
2083
|
-
result =
|
|
2094
|
+
result = _renderHook38.result;
|
|
2084
2095
|
const current = result.current;
|
|
2085
|
-
const
|
|
2086
|
-
setEntity =
|
|
2096
|
+
const _current9 = _slicedToArray(current, 2),
|
|
2097
|
+
setEntity = _current9[1].setEntity;
|
|
2087
2098
|
expect(onChange).toHaveBeenCalledTimes(0);
|
|
2088
2099
|
act(() => {
|
|
2089
2100
|
setEntity(100);
|
|
@@ -2091,7 +2102,157 @@ describe('useUseCase', () => {
|
|
|
2091
2102
|
expect(onChange).toHaveBeenCalledTimes(1);
|
|
2092
2103
|
expect(onChange).toHaveBeenCalledWith(100, 5);
|
|
2093
2104
|
});
|
|
2094
|
-
test('`
|
|
2105
|
+
test('Lifecycle `onChange` event should support returning a boolean to control whether the component updates', () => {
|
|
2106
|
+
let i = 0;
|
|
2107
|
+
const onChange = jest.fn((newEntity, oldEntity) => {
|
|
2108
|
+
void newEntity;
|
|
2109
|
+
void oldEntity;
|
|
2110
|
+
return i++ === 0;
|
|
2111
|
+
});
|
|
2112
|
+
const onRenderHook = jest.fn();
|
|
2113
|
+
const testUseCase = () => {
|
|
2114
|
+
const entityReducers = entityUseCase();
|
|
2115
|
+
lifecycleUseCase({
|
|
2116
|
+
onChange
|
|
2117
|
+
});
|
|
2118
|
+
return {
|
|
2119
|
+
...entityReducers
|
|
2120
|
+
};
|
|
2121
|
+
};
|
|
2122
|
+
const _renderHook39 = renderHook(() => {
|
|
2123
|
+
const core = useUseCase(5, testUseCase);
|
|
2124
|
+
const _core = _slicedToArray(core, 1),
|
|
2125
|
+
value = _core[0];
|
|
2126
|
+
onRenderHook(value);
|
|
2127
|
+
return core;
|
|
2128
|
+
}),
|
|
2129
|
+
result = _renderHook39.result;
|
|
2130
|
+
const current = result.current;
|
|
2131
|
+
const _current0 = _slicedToArray(current, 2),
|
|
2132
|
+
setEntity = _current0[1].setEntity;
|
|
2133
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2134
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(5);
|
|
2135
|
+
act(() => {
|
|
2136
|
+
setEntity(100);
|
|
2137
|
+
});
|
|
2138
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2139
|
+
act(() => {
|
|
2140
|
+
setEntity(200);
|
|
2141
|
+
});
|
|
2142
|
+
expect(onRenderHook).toHaveBeenCalledTimes(2);
|
|
2143
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(200);
|
|
2144
|
+
});
|
|
2145
|
+
test('Lifecycle `onChange` event should support returning a Promise<boolean> to control whether the component updates', async () => {
|
|
2146
|
+
let i = 0;
|
|
2147
|
+
let promise = null;
|
|
2148
|
+
const onChange = jest.fn((newEntity, oldEntity) => {
|
|
2149
|
+
void newEntity;
|
|
2150
|
+
void oldEntity;
|
|
2151
|
+
promise = new Promise(res => {
|
|
2152
|
+
setTimeout(() => {
|
|
2153
|
+
res(i++ === 0);
|
|
2154
|
+
}, 500);
|
|
2155
|
+
});
|
|
2156
|
+
return promise;
|
|
2157
|
+
});
|
|
2158
|
+
const onRenderHook = jest.fn();
|
|
2159
|
+
const testUseCase = () => {
|
|
2160
|
+
const entityReducers = entityUseCase();
|
|
2161
|
+
lifecycleUseCase({
|
|
2162
|
+
onChange
|
|
2163
|
+
});
|
|
2164
|
+
return {
|
|
2165
|
+
...entityReducers
|
|
2166
|
+
};
|
|
2167
|
+
};
|
|
2168
|
+
const _renderHook40 = renderHook(() => {
|
|
2169
|
+
const core = useUseCase(5, testUseCase);
|
|
2170
|
+
const _core2 = _slicedToArray(core, 1),
|
|
2171
|
+
value = _core2[0];
|
|
2172
|
+
onRenderHook(value);
|
|
2173
|
+
return core;
|
|
2174
|
+
}),
|
|
2175
|
+
result = _renderHook40.result;
|
|
2176
|
+
const current = result.current;
|
|
2177
|
+
const _current1 = _slicedToArray(current, 2),
|
|
2178
|
+
setEntity = _current1[1].setEntity;
|
|
2179
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2180
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(5);
|
|
2181
|
+
act(() => {
|
|
2182
|
+
setEntity(100);
|
|
2183
|
+
});
|
|
2184
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2185
|
+
await act(async () => {
|
|
2186
|
+
await Promise.resolve(promise);
|
|
2187
|
+
});
|
|
2188
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2189
|
+
act(() => {
|
|
2190
|
+
setEntity(200);
|
|
2191
|
+
});
|
|
2192
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2193
|
+
await act(async () => {
|
|
2194
|
+
await Promise.resolve(promise);
|
|
2195
|
+
});
|
|
2196
|
+
expect(onRenderHook).toHaveBeenCalledTimes(2);
|
|
2197
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(200);
|
|
2198
|
+
});
|
|
2199
|
+
test('Lifecycle `onChange` event should support returning a number to control whether the component updates', async () => {
|
|
2200
|
+
const onChange = jest.fn((newEntity, oldEntity) => {
|
|
2201
|
+
void newEntity;
|
|
2202
|
+
void oldEntity;
|
|
2203
|
+
return 500;
|
|
2204
|
+
});
|
|
2205
|
+
const onRenderHook = jest.fn();
|
|
2206
|
+
const testUseCase = () => {
|
|
2207
|
+
const entityReducers = entityUseCase();
|
|
2208
|
+
lifecycleUseCase({
|
|
2209
|
+
onChange
|
|
2210
|
+
});
|
|
2211
|
+
return {
|
|
2212
|
+
...entityReducers
|
|
2213
|
+
};
|
|
2214
|
+
};
|
|
2215
|
+
const _renderHook41 = renderHook(() => {
|
|
2216
|
+
const core = useUseCase(5, testUseCase);
|
|
2217
|
+
const _core3 = _slicedToArray(core, 1),
|
|
2218
|
+
value = _core3[0];
|
|
2219
|
+
onRenderHook(value);
|
|
2220
|
+
return core;
|
|
2221
|
+
}),
|
|
2222
|
+
result = _renderHook41.result;
|
|
2223
|
+
const current = result.current;
|
|
2224
|
+
const _current10 = _slicedToArray(current, 2),
|
|
2225
|
+
setEntity = _current10[1].setEntity;
|
|
2226
|
+
expect(onRenderHook).toHaveBeenCalledTimes(1);
|
|
2227
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(5);
|
|
2228
|
+
act(() => {
|
|
2229
|
+
setEntity(100);
|
|
2230
|
+
});
|
|
2231
|
+
expect(onRenderHook).toHaveBeenCalledTimes(2);
|
|
2232
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(100);
|
|
2233
|
+
await act(() => {
|
|
2234
|
+
return new Promise(res => {
|
|
2235
|
+
setEntity(200);
|
|
2236
|
+
setTimeout(res, 100);
|
|
2237
|
+
});
|
|
2238
|
+
});
|
|
2239
|
+
expect(onRenderHook).toHaveBeenCalledTimes(2);
|
|
2240
|
+
await act(() => {
|
|
2241
|
+
return new Promise(res => {
|
|
2242
|
+
setEntity(300);
|
|
2243
|
+
setTimeout(res, 100);
|
|
2244
|
+
});
|
|
2245
|
+
});
|
|
2246
|
+
expect(onRenderHook).toHaveBeenCalledTimes(2);
|
|
2247
|
+
await act(() => {
|
|
2248
|
+
return new Promise(res => {
|
|
2249
|
+
setTimeout(res, 500);
|
|
2250
|
+
});
|
|
2251
|
+
});
|
|
2252
|
+
expect(onRenderHook).toHaveBeenCalledTimes(3);
|
|
2253
|
+
expect(onRenderHook).toHaveBeenLastCalledWith(300);
|
|
2254
|
+
});
|
|
2255
|
+
test('Lifecycle `onUpdate` event should be called when entity change', () => {
|
|
2095
2256
|
const onUpdate = jest.fn((newEntity, oldEntity) => {
|
|
2096
2257
|
void newEntity;
|
|
2097
2258
|
void oldEntity;
|
|
@@ -2105,13 +2266,13 @@ describe('useUseCase', () => {
|
|
|
2105
2266
|
...entityReducers
|
|
2106
2267
|
};
|
|
2107
2268
|
};
|
|
2108
|
-
const
|
|
2269
|
+
const _renderHook42 = renderHook(() => {
|
|
2109
2270
|
return useUseCase(5, testUseCase);
|
|
2110
2271
|
}),
|
|
2111
|
-
result =
|
|
2272
|
+
result = _renderHook42.result;
|
|
2112
2273
|
const current = result.current;
|
|
2113
|
-
const
|
|
2114
|
-
setEntity =
|
|
2274
|
+
const _current11 = _slicedToArray(current, 2),
|
|
2275
|
+
setEntity = _current11[1].setEntity;
|
|
2115
2276
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2116
2277
|
act(() => {
|
|
2117
2278
|
setEntity(100);
|
|
@@ -2119,7 +2280,7 @@ describe('useUseCase', () => {
|
|
|
2119
2280
|
expect(onUpdate).toHaveBeenCalledTimes(1);
|
|
2120
2281
|
expect(onUpdate).toHaveBeenCalledWith(100, 5);
|
|
2121
2282
|
});
|
|
2122
|
-
test('`onUnbind` event should be called when component unmount', () => {
|
|
2283
|
+
test('Lifecycle `onUnbind` event should be called when component unmount', () => {
|
|
2123
2284
|
const onUnbind = jest.fn(entity => {
|
|
2124
2285
|
void entity;
|
|
2125
2286
|
});
|
|
@@ -2132,21 +2293,21 @@ describe('useUseCase', () => {
|
|
|
2132
2293
|
...entityReducers
|
|
2133
2294
|
};
|
|
2134
2295
|
};
|
|
2135
|
-
const
|
|
2136
|
-
const
|
|
2137
|
-
|
|
2138
|
-
setEntity =
|
|
2296
|
+
const _renderHook43 = renderHook(() => {
|
|
2297
|
+
const _useUseCase26 = useUseCase(5, testUseCase),
|
|
2298
|
+
_useUseCase27 = _slicedToArray(_useUseCase26, 2),
|
|
2299
|
+
setEntity = _useUseCase27[1].setEntity;
|
|
2139
2300
|
useMount(() => {
|
|
2140
2301
|
setEntity(100);
|
|
2141
2302
|
});
|
|
2142
2303
|
}),
|
|
2143
|
-
unmount =
|
|
2304
|
+
unmount = _renderHook43.unmount;
|
|
2144
2305
|
expect(onUnbind).toHaveBeenCalledTimes(0);
|
|
2145
2306
|
unmount();
|
|
2146
2307
|
expect(onUnbind).toHaveBeenCalledTimes(1);
|
|
2147
2308
|
expect(onUnbind).toHaveBeenCalledWith(100);
|
|
2148
2309
|
});
|
|
2149
|
-
test('`onAdopt` event should be called when entity change', () => {
|
|
2310
|
+
test('Lifecycle `onAdopt` event should be called when entity change', () => {
|
|
2150
2311
|
const onAdopt = jest.fn((newEntity, oldeEntity) => {
|
|
2151
2312
|
void newEntity;
|
|
2152
2313
|
void oldeEntity;
|
|
@@ -2160,13 +2321,13 @@ describe('useUseCase', () => {
|
|
|
2160
2321
|
...entityReducers
|
|
2161
2322
|
};
|
|
2162
2323
|
};
|
|
2163
|
-
const
|
|
2324
|
+
const _renderHook44 = renderHook(() => {
|
|
2164
2325
|
return useUseCase(5, testUseCase);
|
|
2165
2326
|
}),
|
|
2166
|
-
result =
|
|
2327
|
+
result = _renderHook44.result;
|
|
2167
2328
|
const current = result.current;
|
|
2168
|
-
const
|
|
2169
|
-
setEntity =
|
|
2329
|
+
const _current12 = _slicedToArray(current, 2),
|
|
2330
|
+
setEntity = _current12[1].setEntity;
|
|
2170
2331
|
expect(onAdopt).toHaveBeenCalledTimes(1);
|
|
2171
2332
|
expect(onAdopt).toHaveBeenCalledWith(5);
|
|
2172
2333
|
act(() => {
|
|
@@ -2175,7 +2336,7 @@ describe('useUseCase', () => {
|
|
|
2175
2336
|
expect(onAdopt).toHaveBeenCalledTimes(2);
|
|
2176
2337
|
expect(onAdopt).toHaveBeenCalledWith(100, 5);
|
|
2177
2338
|
});
|
|
2178
|
-
test('`onDiscard` event should be called when component unmount', () => {
|
|
2339
|
+
test('Lifecycle `onDiscard` event should be called when component unmount', () => {
|
|
2179
2340
|
const onDiscard = jest.fn(entity => {
|
|
2180
2341
|
void entity;
|
|
2181
2342
|
});
|
|
@@ -2188,14 +2349,14 @@ describe('useUseCase', () => {
|
|
|
2188
2349
|
...entityReducers
|
|
2189
2350
|
};
|
|
2190
2351
|
};
|
|
2191
|
-
const
|
|
2352
|
+
const _renderHook45 = renderHook(() => {
|
|
2192
2353
|
return useUseCase(5, testUseCase);
|
|
2193
2354
|
}),
|
|
2194
|
-
result =
|
|
2195
|
-
unmount =
|
|
2355
|
+
result = _renderHook45.result,
|
|
2356
|
+
unmount = _renderHook45.unmount;
|
|
2196
2357
|
const current = result.current;
|
|
2197
|
-
const
|
|
2198
|
-
setEntity =
|
|
2358
|
+
const _current13 = _slicedToArray(current, 2),
|
|
2359
|
+
setEntity = _current13[1].setEntity;
|
|
2199
2360
|
expect(onDiscard).toHaveBeenCalledTimes(0);
|
|
2200
2361
|
act(() => {
|
|
2201
2362
|
setEntity(100);
|
|
@@ -2206,6 +2367,80 @@ describe('useUseCase', () => {
|
|
|
2206
2367
|
expect(onDiscard).toHaveBeenCalledTimes(2);
|
|
2207
2368
|
expect(onDiscard).toHaveBeenCalledWith(100);
|
|
2208
2369
|
});
|
|
2370
|
+
test('Should support call lifecycleUseCase at parent usecase and child usecase', () => {
|
|
2371
|
+
const onParentBind = jest.fn(entity => {
|
|
2372
|
+
void entity;
|
|
2373
|
+
});
|
|
2374
|
+
const onParentChange = jest.fn((newEntity, oldEntity) => {
|
|
2375
|
+
void newEntity;
|
|
2376
|
+
void oldEntity;
|
|
2377
|
+
});
|
|
2378
|
+
const onParentUnbind = jest.fn(entity => {
|
|
2379
|
+
void entity;
|
|
2380
|
+
});
|
|
2381
|
+
const onChildBind = jest.fn(entity => {
|
|
2382
|
+
void entity;
|
|
2383
|
+
});
|
|
2384
|
+
const onChildChange = jest.fn((newEntity, oldEntity) => {
|
|
2385
|
+
void newEntity;
|
|
2386
|
+
void oldEntity;
|
|
2387
|
+
});
|
|
2388
|
+
const onChildUnbind = jest.fn(entity => {
|
|
2389
|
+
void entity;
|
|
2390
|
+
});
|
|
2391
|
+
const parentUseCase = () => {
|
|
2392
|
+
const entityReducers = entityUseCase();
|
|
2393
|
+
lifecycleUseCase({
|
|
2394
|
+
onBind: onParentBind,
|
|
2395
|
+
onUnbind: onParentUnbind,
|
|
2396
|
+
onChange: onParentChange
|
|
2397
|
+
});
|
|
2398
|
+
return {
|
|
2399
|
+
...entityReducers
|
|
2400
|
+
};
|
|
2401
|
+
};
|
|
2402
|
+
const childUseCase = () => {
|
|
2403
|
+
const parentReducers = parentUseCase();
|
|
2404
|
+
lifecycleUseCase({
|
|
2405
|
+
onBind: onChildBind,
|
|
2406
|
+
onUnbind: onChildUnbind,
|
|
2407
|
+
onChange: onChildChange
|
|
2408
|
+
});
|
|
2409
|
+
return {
|
|
2410
|
+
...parentReducers
|
|
2411
|
+
};
|
|
2412
|
+
};
|
|
2413
|
+
const _renderHook46 = renderHook(() => {
|
|
2414
|
+
return useUseCase(5, childUseCase);
|
|
2415
|
+
}),
|
|
2416
|
+
result = _renderHook46.result,
|
|
2417
|
+
unmount = _renderHook46.unmount;
|
|
2418
|
+
const current = result.current;
|
|
2419
|
+
const _current14 = _slicedToArray(current, 2),
|
|
2420
|
+
setEntity = _current14[1].setEntity;
|
|
2421
|
+
expect(onParentBind).toHaveBeenCalledTimes(1);
|
|
2422
|
+
expect(onParentBind).toHaveBeenCalledWith(5);
|
|
2423
|
+
expect(onParentChange).toHaveBeenCalledTimes(0);
|
|
2424
|
+
expect(onChildBind).toHaveBeenCalledTimes(1);
|
|
2425
|
+
expect(onChildBind).toHaveBeenCalledWith(5);
|
|
2426
|
+
expect(onChildChange).toHaveBeenCalledTimes(0);
|
|
2427
|
+
act(() => {
|
|
2428
|
+
setEntity(100);
|
|
2429
|
+
});
|
|
2430
|
+
expect(onParentBind).toHaveBeenCalledTimes(1);
|
|
2431
|
+
expect(onParentChange).toHaveBeenCalledTimes(1);
|
|
2432
|
+
expect(onParentChange).toHaveBeenCalledWith(100, 5);
|
|
2433
|
+
expect(onChildBind).toHaveBeenCalledTimes(1);
|
|
2434
|
+
expect(onChildChange).toHaveBeenCalledTimes(1);
|
|
2435
|
+
expect(onChildChange).toHaveBeenCalledWith(100, 5);
|
|
2436
|
+
expect(onParentUnbind).toHaveBeenCalledTimes(0);
|
|
2437
|
+
expect(onChildUnbind).toHaveBeenCalledTimes(0);
|
|
2438
|
+
unmount();
|
|
2439
|
+
expect(onParentUnbind).toHaveBeenCalledTimes(1);
|
|
2440
|
+
expect(onParentUnbind).toHaveBeenCalledWith(100);
|
|
2441
|
+
expect(onChildUnbind).toHaveBeenCalledTimes(1);
|
|
2442
|
+
expect(onChildUnbind).toHaveBeenCalledWith(100);
|
|
2443
|
+
});
|
|
2209
2444
|
});
|
|
2210
2445
|
describe('`useUseCase` should work the same as `useContextualCoreCollection`', () => {
|
|
2211
2446
|
test('Provider should be returned in child component', () => {
|
|
@@ -2213,23 +2448,23 @@ describe('useUseCase', () => {
|
|
|
2213
2448
|
const TestChild = () => {
|
|
2214
2449
|
const core = useUseCase(fileUseCase);
|
|
2215
2450
|
const length = core.length;
|
|
2216
|
-
const
|
|
2217
|
-
file =
|
|
2218
|
-
Provider =
|
|
2451
|
+
const _core4 = _slicedToArray(core, 3),
|
|
2452
|
+
file = _core4[0],
|
|
2453
|
+
Provider = _core4[2];
|
|
2219
2454
|
useEffect(() => {
|
|
2220
2455
|
onCore(file, length, typeof Provider);
|
|
2221
2456
|
});
|
|
2222
2457
|
return _jsx(Fragment, {});
|
|
2223
2458
|
};
|
|
2224
2459
|
const TestParent = () => {
|
|
2225
|
-
const
|
|
2460
|
+
const _useUseCase28 = useUseCase(() => {
|
|
2226
2461
|
return {
|
|
2227
2462
|
...defaultFile,
|
|
2228
2463
|
ext: EXT_1
|
|
2229
2464
|
};
|
|
2230
2465
|
}, fileUseCase),
|
|
2231
|
-
|
|
2232
|
-
Provider =
|
|
2466
|
+
_useUseCase29 = _slicedToArray(_useUseCase28, 3),
|
|
2467
|
+
Provider = _useUseCase29[2];
|
|
2233
2468
|
return _jsx(Provider, {
|
|
2234
2469
|
children: _jsx(TestChild, {})
|
|
2235
2470
|
});
|
|
@@ -2246,10 +2481,10 @@ describe('useUseCase', () => {
|
|
|
2246
2481
|
const onPopupFile = jest.fn();
|
|
2247
2482
|
const buttonText = 'button';
|
|
2248
2483
|
const Popup = () => {
|
|
2249
|
-
const
|
|
2250
|
-
|
|
2251
|
-
file =
|
|
2252
|
-
setEntity =
|
|
2484
|
+
const _useUseCase30 = useUseCase(fileUseCase),
|
|
2485
|
+
_useUseCase31 = _slicedToArray(_useUseCase30, 2),
|
|
2486
|
+
file = _useUseCase31[0],
|
|
2487
|
+
setEntity = _useUseCase31[1].setEntity;
|
|
2253
2488
|
const onClick = () => {
|
|
2254
2489
|
setEntity({
|
|
2255
2490
|
ext: EXT_2
|
|
@@ -2264,15 +2499,15 @@ describe('useUseCase', () => {
|
|
|
2264
2499
|
});
|
|
2265
2500
|
};
|
|
2266
2501
|
const TestChild = () => {
|
|
2267
|
-
const
|
|
2268
|
-
|
|
2269
|
-
Provider =
|
|
2502
|
+
const _useUseCase32 = useUseCase(fileUseCase),
|
|
2503
|
+
_useUseCase33 = _slicedToArray(_useUseCase32, 3),
|
|
2504
|
+
Provider = _useUseCase33[2];
|
|
2270
2505
|
return createPortal(_jsx(Provider, {
|
|
2271
2506
|
children: _jsx(Popup, {})
|
|
2272
2507
|
}), document.body);
|
|
2273
2508
|
};
|
|
2274
2509
|
const TestParent = () => {
|
|
2275
|
-
const
|
|
2510
|
+
const _useUseCase34 = useUseCase(() => {
|
|
2276
2511
|
return {
|
|
2277
2512
|
...defaultFile,
|
|
2278
2513
|
ext: EXT_1
|
|
@@ -2280,9 +2515,9 @@ describe('useUseCase', () => {
|
|
|
2280
2515
|
}, fileUseCase, {
|
|
2281
2516
|
onChange
|
|
2282
2517
|
}),
|
|
2283
|
-
|
|
2284
|
-
file =
|
|
2285
|
-
Provider =
|
|
2518
|
+
_useUseCase35 = _slicedToArray(_useUseCase34, 3),
|
|
2519
|
+
file = _useUseCase35[0],
|
|
2520
|
+
Provider = _useUseCase35[2];
|
|
2286
2521
|
useEffect(() => {
|
|
2287
2522
|
onRootFile(file);
|
|
2288
2523
|
}, [file]);
|
|
@@ -2347,9 +2582,9 @@ describe('useUseCase', () => {
|
|
|
2347
2582
|
return _jsx(Fragment, {});
|
|
2348
2583
|
};
|
|
2349
2584
|
const B = () => {
|
|
2350
|
-
const
|
|
2351
|
-
|
|
2352
|
-
Provider =
|
|
2585
|
+
const _useUseCase36 = useUseCase(defaultFile, mockUseCase),
|
|
2586
|
+
_useUseCase37 = _slicedToArray(_useUseCase36, 3),
|
|
2587
|
+
Provider = _useUseCase37[2];
|
|
2353
2588
|
return _jsx(Provider, {
|
|
2354
2589
|
children: _jsx(A, {})
|
|
2355
2590
|
});
|
|
@@ -2370,9 +2605,9 @@ describe('useUseCase', () => {
|
|
|
2370
2605
|
};
|
|
2371
2606
|
};
|
|
2372
2607
|
const A = () => {
|
|
2373
|
-
const
|
|
2374
|
-
|
|
2375
|
-
add =
|
|
2608
|
+
const _useUseCase38 = useUseCase(stringUseCase),
|
|
2609
|
+
_useUseCase39 = _slicedToArray(_useUseCase38, 2),
|
|
2610
|
+
add = _useUseCase39[1].add;
|
|
2376
2611
|
const update = useUpdate();
|
|
2377
2612
|
const onClick = () => {
|
|
2378
2613
|
update();
|
|
@@ -2384,9 +2619,9 @@ describe('useUseCase', () => {
|
|
|
2384
2619
|
});
|
|
2385
2620
|
};
|
|
2386
2621
|
const B = () => {
|
|
2387
|
-
const
|
|
2388
|
-
|
|
2389
|
-
Provider =
|
|
2622
|
+
const _useUseCase40 = useUseCase('', stringUseCase),
|
|
2623
|
+
_useUseCase41 = _slicedToArray(_useUseCase40, 3),
|
|
2624
|
+
Provider = _useUseCase41[2];
|
|
2390
2625
|
return _jsx(Provider, {
|
|
2391
2626
|
children: _jsx(A, {})
|
|
2392
2627
|
});
|
|
@@ -2411,9 +2646,9 @@ describe('useUseCase', () => {
|
|
|
2411
2646
|
};
|
|
2412
2647
|
};
|
|
2413
2648
|
const A = () => {
|
|
2414
|
-
const
|
|
2415
|
-
|
|
2416
|
-
add =
|
|
2649
|
+
const _useUseCase42 = useUseCase(stringUseCase),
|
|
2650
|
+
_useUseCase43 = _slicedToArray(_useUseCase42, 2),
|
|
2651
|
+
add = _useUseCase43[1].add;
|
|
2417
2652
|
const onClick = () => {
|
|
2418
2653
|
add('x');
|
|
2419
2654
|
};
|
|
@@ -2427,9 +2662,9 @@ describe('useUseCase', () => {
|
|
|
2427
2662
|
});
|
|
2428
2663
|
};
|
|
2429
2664
|
const B = () => {
|
|
2430
|
-
const
|
|
2431
|
-
|
|
2432
|
-
Provider =
|
|
2665
|
+
const _useUseCase44 = useUseCase('', stringUseCase),
|
|
2666
|
+
_useUseCase45 = _slicedToArray(_useUseCase44, 3),
|
|
2667
|
+
Provider = _useUseCase45[2];
|
|
2433
2668
|
return _jsx(Provider, {
|
|
2434
2669
|
children: _jsx(A, {})
|
|
2435
2670
|
});
|
|
@@ -2458,11 +2693,11 @@ describe('useUseCase', () => {
|
|
|
2458
2693
|
};
|
|
2459
2694
|
};
|
|
2460
2695
|
const A = () => {
|
|
2461
|
-
const
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
add =
|
|
2465
|
-
setEntity =
|
|
2696
|
+
const _useUseCase46 = useUseCase(stringUseCase),
|
|
2697
|
+
_useUseCase47 = _slicedToArray(_useUseCase46, 2),
|
|
2698
|
+
_useUseCase47$ = _useUseCase47[1],
|
|
2699
|
+
add = _useUseCase47$.add,
|
|
2700
|
+
setEntity = _useUseCase47$.setEntity;
|
|
2466
2701
|
const update = useUpdate();
|
|
2467
2702
|
add(addedText);
|
|
2468
2703
|
const onSet = () => {
|
|
@@ -2482,9 +2717,9 @@ describe('useUseCase', () => {
|
|
|
2482
2717
|
});
|
|
2483
2718
|
};
|
|
2484
2719
|
const B = () => {
|
|
2485
|
-
const
|
|
2486
|
-
|
|
2487
|
-
Provider =
|
|
2720
|
+
const _useUseCase48 = useUseCase('', stringUseCase),
|
|
2721
|
+
_useUseCase49 = _slicedToArray(_useUseCase48, 3),
|
|
2722
|
+
Provider = _useUseCase49[2];
|
|
2488
2723
|
return _jsx(Provider, {
|
|
2489
2724
|
children: _jsx(A, {})
|
|
2490
2725
|
});
|
|
@@ -2513,8 +2748,8 @@ describe('useUseCase', () => {
|
|
|
2513
2748
|
const onChangeB = jest.fn(updateChangeTimes);
|
|
2514
2749
|
const onChangeC = jest.fn(updateChangeTimes);
|
|
2515
2750
|
const buttonText = 'my button';
|
|
2516
|
-
const A =
|
|
2517
|
-
let children =
|
|
2751
|
+
const A = _ref7 => {
|
|
2752
|
+
let children = _ref7.children;
|
|
2518
2753
|
useUseCase(fileUseCase, {
|
|
2519
2754
|
onChange: onChangeA
|
|
2520
2755
|
});
|
|
@@ -2529,12 +2764,12 @@ describe('useUseCase', () => {
|
|
|
2529
2764
|
return _jsx(Fragment, {});
|
|
2530
2765
|
};
|
|
2531
2766
|
const C = () => {
|
|
2532
|
-
const
|
|
2767
|
+
const _useUseCase50 = useUseCase(defaultFile, fileUseCase, {
|
|
2533
2768
|
onChange: onChangeC
|
|
2534
2769
|
}),
|
|
2535
|
-
|
|
2536
|
-
setPath =
|
|
2537
|
-
Provider =
|
|
2770
|
+
_useUseCase51 = _slicedToArray(_useUseCase50, 3),
|
|
2771
|
+
setPath = _useUseCase51[1].setPath,
|
|
2772
|
+
Provider = _useUseCase51[2];
|
|
2538
2773
|
const onFirstClick = () => {
|
|
2539
2774
|
setPath(PATH_1);
|
|
2540
2775
|
};
|
|
@@ -2561,11 +2796,11 @@ describe('useUseCase', () => {
|
|
|
2561
2796
|
const firstButtonText = 'first button';
|
|
2562
2797
|
const secondButtonText = 'second button';
|
|
2563
2798
|
const A = () => {
|
|
2564
|
-
const
|
|
2799
|
+
const _useUseCase52 = useUseCase(fileUseCase, {
|
|
2565
2800
|
onChange
|
|
2566
2801
|
}),
|
|
2567
|
-
|
|
2568
|
-
setPath =
|
|
2802
|
+
_useUseCase53 = _slicedToArray(_useUseCase52, 2),
|
|
2803
|
+
setPath = _useUseCase53[1].setPath;
|
|
2569
2804
|
const onFirstClick = () => {
|
|
2570
2805
|
setPath(PATH_1);
|
|
2571
2806
|
onChange = onSecondChange;
|
|
@@ -2584,9 +2819,9 @@ describe('useUseCase', () => {
|
|
|
2584
2819
|
});
|
|
2585
2820
|
};
|
|
2586
2821
|
const B = () => {
|
|
2587
|
-
const
|
|
2588
|
-
|
|
2589
|
-
Provider =
|
|
2822
|
+
const _useUseCase54 = useUseCase(defaultFile, fileUseCase),
|
|
2823
|
+
_useUseCase55 = _slicedToArray(_useUseCase54, 3),
|
|
2824
|
+
Provider = _useUseCase55[2];
|
|
2590
2825
|
return _jsx(Provider, {
|
|
2591
2826
|
children: _jsx(A, {})
|
|
2592
2827
|
});
|
|
@@ -2605,73 +2840,17 @@ describe('useUseCase', () => {
|
|
|
2605
2840
|
path: PATH_1
|
|
2606
2841
|
});
|
|
2607
2842
|
});
|
|
2608
|
-
test('event options should be triggered at child components', async () => {
|
|
2609
|
-
let readFilePromise = null;
|
|
2610
|
-
const buttonText = 'my button';
|
|
2611
|
-
const onReadFile1 = jest.fn(path => {
|
|
2612
|
-
void path;
|
|
2613
|
-
return 512;
|
|
2614
|
-
});
|
|
2615
|
-
const onReadFile2 = jest.fn(path => {
|
|
2616
|
-
void path;
|
|
2617
|
-
return 1024;
|
|
2618
|
-
});
|
|
2619
|
-
const onSizeChange = jest.fn();
|
|
2620
|
-
const A = () => {
|
|
2621
|
-
const _useUseCase58 = useUseCase(fileUseCase, {
|
|
2622
|
-
onReadFile: onReadFile1
|
|
2623
|
-
}),
|
|
2624
|
-
_useUseCase59 = _slicedToArray(_useUseCase58, 2),
|
|
2625
|
-
size = _useUseCase59[0].size,
|
|
2626
|
-
readFile = _useUseCase59[1].readFile;
|
|
2627
|
-
const onClick = () => {
|
|
2628
|
-
readFilePromise = readFile(PATH_1);
|
|
2629
|
-
};
|
|
2630
|
-
useUpdateEffect(() => {
|
|
2631
|
-
onSizeChange(size);
|
|
2632
|
-
}, [size]);
|
|
2633
|
-
return _jsx(Fragment, {
|
|
2634
|
-
children: _jsx("button", {
|
|
2635
|
-
onClick: onClick,
|
|
2636
|
-
children: buttonText
|
|
2637
|
-
})
|
|
2638
|
-
});
|
|
2639
|
-
};
|
|
2640
|
-
const B = () => {
|
|
2641
|
-
const _useUseCase60 = useUseCase(defaultFile, fileUseCase, {
|
|
2642
|
-
onReadFile: onReadFile2
|
|
2643
|
-
}),
|
|
2644
|
-
_useUseCase61 = _slicedToArray(_useUseCase60, 3),
|
|
2645
|
-
Provider = _useUseCase61[2];
|
|
2646
|
-
return _jsx(Provider, {
|
|
2647
|
-
children: _jsx(A, {})
|
|
2648
|
-
});
|
|
2649
|
-
};
|
|
2650
|
-
render(_jsx(B, {}));
|
|
2651
|
-
expect(onReadFile1).toHaveBeenCalledTimes(0);
|
|
2652
|
-
expect(onReadFile2).toHaveBeenCalledTimes(0);
|
|
2653
|
-
await act(async () => {
|
|
2654
|
-
fireEvent.click(screen.getByText(buttonText));
|
|
2655
|
-
await readFilePromise;
|
|
2656
|
-
});
|
|
2657
|
-
expect(onReadFile1).toHaveBeenCalledTimes(1);
|
|
2658
|
-
expect(onReadFile2).toHaveBeenCalledWith(PATH_1);
|
|
2659
|
-
expect(onReadFile1).toHaveBeenCalledTimes(1);
|
|
2660
|
-
expect(onReadFile2).toHaveBeenCalledWith(PATH_1);
|
|
2661
|
-
expect(onSizeChange).toHaveBeenCalledTimes(1);
|
|
2662
|
-
expect(onSizeChange).toHaveBeenCalledWith(1024);
|
|
2663
|
-
});
|
|
2664
2843
|
test('`options.watch` should be triggered at child components', () => {
|
|
2665
2844
|
const onExtChange = jest.fn();
|
|
2666
2845
|
const firstButtonText = 'first button';
|
|
2667
2846
|
const A = () => {
|
|
2668
|
-
const
|
|
2847
|
+
const _useUseCase56 = useUseCase(fileUseCase, {
|
|
2669
2848
|
watch: {
|
|
2670
2849
|
ext: onExtChange
|
|
2671
2850
|
}
|
|
2672
2851
|
}),
|
|
2673
|
-
|
|
2674
|
-
setPath =
|
|
2852
|
+
_useUseCase57 = _slicedToArray(_useUseCase56, 2),
|
|
2853
|
+
setPath = _useUseCase57[1].setPath;
|
|
2675
2854
|
const onFirstClick = () => {
|
|
2676
2855
|
setPath(PATH_1);
|
|
2677
2856
|
};
|
|
@@ -2681,9 +2860,9 @@ describe('useUseCase', () => {
|
|
|
2681
2860
|
});
|
|
2682
2861
|
};
|
|
2683
2862
|
const B = () => {
|
|
2684
|
-
const
|
|
2685
|
-
|
|
2686
|
-
Provider =
|
|
2863
|
+
const _useUseCase58 = useUseCase(defaultFile, fileUseCase, {}),
|
|
2864
|
+
_useUseCase59 = _slicedToArray(_useUseCase58, 3),
|
|
2865
|
+
Provider = _useUseCase59[2];
|
|
2687
2866
|
return _jsx(Provider, {
|
|
2688
2867
|
children: _jsx(A, {})
|
|
2689
2868
|
});
|
|
@@ -2714,8 +2893,8 @@ describe('useUseCase', () => {
|
|
|
2714
2893
|
const onChangeB = jest.fn(updateChangeTimes);
|
|
2715
2894
|
const onChangeC = jest.fn(updateChangeTimes);
|
|
2716
2895
|
const buttonText = 'my button';
|
|
2717
|
-
const A =
|
|
2718
|
-
let children =
|
|
2896
|
+
const A = _ref8 => {
|
|
2897
|
+
let children = _ref8.children;
|
|
2719
2898
|
useUseCase(fileUseCase, {
|
|
2720
2899
|
watch: {
|
|
2721
2900
|
ext: onChangeA
|
|
@@ -2734,14 +2913,14 @@ describe('useUseCase', () => {
|
|
|
2734
2913
|
return _jsx(Fragment, {});
|
|
2735
2914
|
};
|
|
2736
2915
|
const C = () => {
|
|
2737
|
-
const
|
|
2916
|
+
const _useUseCase60 = useUseCase(defaultFile, fileUseCase, {
|
|
2738
2917
|
watch: {
|
|
2739
2918
|
ext: onChangeC
|
|
2740
2919
|
}
|
|
2741
2920
|
}),
|
|
2742
|
-
|
|
2743
|
-
setPath =
|
|
2744
|
-
Provider =
|
|
2921
|
+
_useUseCase61 = _slicedToArray(_useUseCase60, 3),
|
|
2922
|
+
setPath = _useUseCase61[1].setPath,
|
|
2923
|
+
Provider = _useUseCase61[2];
|
|
2745
2924
|
const onFirstClick = () => {
|
|
2746
2925
|
setPath(PATH_1);
|
|
2747
2926
|
};
|
|
@@ -2768,13 +2947,13 @@ describe('useUseCase', () => {
|
|
|
2768
2947
|
const firstButtonText = 'first button';
|
|
2769
2948
|
const secondButtonText = 'second button';
|
|
2770
2949
|
const A = () => {
|
|
2771
|
-
const
|
|
2950
|
+
const _useUseCase62 = useUseCase(fileUseCase, {
|
|
2772
2951
|
watch: {
|
|
2773
2952
|
ext: onExtChange
|
|
2774
2953
|
}
|
|
2775
2954
|
}),
|
|
2776
|
-
|
|
2777
|
-
setPath =
|
|
2955
|
+
_useUseCase63 = _slicedToArray(_useUseCase62, 2),
|
|
2956
|
+
setPath = _useUseCase63[1].setPath;
|
|
2778
2957
|
const onFirstClick = () => {
|
|
2779
2958
|
setPath(PATH_1);
|
|
2780
2959
|
onExtChange = onSecondExtChange;
|
|
@@ -2793,9 +2972,9 @@ describe('useUseCase', () => {
|
|
|
2793
2972
|
});
|
|
2794
2973
|
};
|
|
2795
2974
|
const B = () => {
|
|
2796
|
-
const
|
|
2797
|
-
|
|
2798
|
-
Provider =
|
|
2975
|
+
const _useUseCase64 = useUseCase(defaultFile, fileUseCase),
|
|
2976
|
+
_useUseCase65 = _slicedToArray(_useUseCase64, 3),
|
|
2977
|
+
Provider = _useUseCase65[2];
|
|
2799
2978
|
return _jsx(Provider, {
|
|
2800
2979
|
children: _jsx(A, {})
|
|
2801
2980
|
});
|
|
@@ -2823,38 +3002,38 @@ describe('useUseCase', () => {
|
|
|
2823
3002
|
});
|
|
2824
3003
|
describe('`useUseCase` should work the same as `useReducers`', () => {
|
|
2825
3004
|
test('`entity` should equal `defaultFile`', () => {
|
|
2826
|
-
const
|
|
3005
|
+
const _renderHook47 = renderHook(() => {
|
|
2827
3006
|
return useUseCase(mathUseCase);
|
|
2828
3007
|
}),
|
|
2829
|
-
result =
|
|
3008
|
+
result = _renderHook47.result;
|
|
2830
3009
|
const reducers = result.current;
|
|
2831
3010
|
expect(Array.isArray(reducers)).toBe(false);
|
|
2832
3011
|
});
|
|
2833
3012
|
test('returned reducer should work', () => {
|
|
2834
|
-
const
|
|
3013
|
+
const _renderHook48 = renderHook(() => {
|
|
2835
3014
|
return useUseCase(mathUseCase);
|
|
2836
3015
|
}),
|
|
2837
|
-
result =
|
|
3016
|
+
result = _renderHook48.result;
|
|
2838
3017
|
const reducers = result.current;
|
|
2839
3018
|
const add = reducers.add;
|
|
2840
3019
|
expect(add(1, 2)).toBe(3);
|
|
2841
3020
|
});
|
|
2842
3021
|
test('`usecase` should be called only once if deps has not provided', () => {
|
|
2843
3022
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2844
|
-
const
|
|
3023
|
+
const _renderHook49 = renderHook(() => {
|
|
2845
3024
|
return useUseCase(mockUseCase);
|
|
2846
3025
|
}),
|
|
2847
|
-
rerender =
|
|
3026
|
+
rerender = _renderHook49.rerender;
|
|
2848
3027
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2849
3028
|
rerender();
|
|
2850
3029
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2851
3030
|
});
|
|
2852
3031
|
test('`usecase` should be called only once if deps has not changed', () => {
|
|
2853
3032
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2854
|
-
const
|
|
3033
|
+
const _renderHook50 = renderHook(() => {
|
|
2855
3034
|
return useUseCase(mockUseCase, {}, [1, 'x']);
|
|
2856
3035
|
}),
|
|
2857
|
-
rerender =
|
|
3036
|
+
rerender = _renderHook50.rerender;
|
|
2858
3037
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2859
3038
|
rerender();
|
|
2860
3039
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
@@ -2862,10 +3041,10 @@ describe('useUseCase', () => {
|
|
|
2862
3041
|
test('`usecase` should be called if deps has changed', () => {
|
|
2863
3042
|
let i = 0;
|
|
2864
3043
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2865
|
-
const
|
|
3044
|
+
const _renderHook51 = renderHook(() => {
|
|
2866
3045
|
return useUseCase(mockUseCase, {}, [i++, 'x']);
|
|
2867
3046
|
}),
|
|
2868
|
-
rerender =
|
|
3047
|
+
rerender = _renderHook51.rerender;
|
|
2869
3048
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2870
3049
|
rerender();
|
|
2871
3050
|
expect(mockUseCase).toHaveBeenCalledTimes(2);
|
|
@@ -2873,8 +3052,8 @@ describe('useUseCase', () => {
|
|
|
2873
3052
|
test('reducer call should not be cached if component is at rendering phase', () => {
|
|
2874
3053
|
const buttonText = 'button';
|
|
2875
3054
|
const CacheTestComponent = () => {
|
|
2876
|
-
const
|
|
2877
|
-
subtraction =
|
|
3055
|
+
const _useUseCase66 = useUseCase(mathUseCase),
|
|
3056
|
+
subtraction = _useUseCase66.subtraction;
|
|
2878
3057
|
const update = useUpdate();
|
|
2879
3058
|
const onClick = () => {
|
|
2880
3059
|
update();
|
|
@@ -2897,8 +3076,8 @@ describe('useUseCase', () => {
|
|
|
2897
3076
|
test('reducer call should not be cached if component is not at rendering phase', () => {
|
|
2898
3077
|
const buttonText = 'button';
|
|
2899
3078
|
const CacheTestComponent = () => {
|
|
2900
|
-
const
|
|
2901
|
-
subtraction =
|
|
3079
|
+
const _useUseCase67 = useUseCase(mathUseCase),
|
|
3080
|
+
subtraction = _useUseCase67.subtraction;
|
|
2902
3081
|
const onClick = () => {
|
|
2903
3082
|
subtraction(5, 3);
|
|
2904
3083
|
};
|
|
@@ -2926,8 +3105,8 @@ describe('useUseCase', () => {
|
|
|
2926
3105
|
let count = 0;
|
|
2927
3106
|
const buttonText = 'button';
|
|
2928
3107
|
const StringUseCaseTestComponent = () => {
|
|
2929
|
-
const
|
|
2930
|
-
subtraction =
|
|
3108
|
+
const _useUseCase68 = useUseCase(mathUseCase),
|
|
3109
|
+
subtraction = _useUseCase68.subtraction;
|
|
2931
3110
|
const update = useUpdate();
|
|
2932
3111
|
subtraction(5, count++);
|
|
2933
3112
|
const onUpdate = () => {
|
|
@@ -2949,12 +3128,12 @@ describe('useUseCase', () => {
|
|
|
2949
3128
|
expect(subtractionReducer).toHaveReturnedWith(4);
|
|
2950
3129
|
});
|
|
2951
3130
|
test('`options.extraValue` should be added after call `add` method', () => {
|
|
2952
|
-
const
|
|
3131
|
+
const _renderHook52 = renderHook(() => {
|
|
2953
3132
|
return useUseCase(mathUseCase, {
|
|
2954
3133
|
extraValue: 5
|
|
2955
3134
|
});
|
|
2956
3135
|
}),
|
|
2957
|
-
result =
|
|
3136
|
+
result = _renderHook52.result;
|
|
2958
3137
|
const reducers = result.current;
|
|
2959
3138
|
const add = reducers.add;
|
|
2960
3139
|
expect(add(1, 2)).toBe(8);
|
|
@@ -2962,7 +3141,7 @@ describe('useUseCase', () => {
|
|
|
2962
3141
|
test('when `options` has changed, it should not trigger update', () => {
|
|
2963
3142
|
const onUpdate = jest.fn();
|
|
2964
3143
|
const onDeepUpdate = jest.fn();
|
|
2965
|
-
const
|
|
3144
|
+
const _renderHook53 = renderHook(() => {
|
|
2966
3145
|
const _useState7 = useState(0),
|
|
2967
3146
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
2968
3147
|
extraValue = _useState8[0],
|
|
@@ -2978,7 +3157,7 @@ describe('useUseCase', () => {
|
|
|
2978
3157
|
}, [reducers]);
|
|
2979
3158
|
return setExtraValue;
|
|
2980
3159
|
}),
|
|
2981
|
-
result =
|
|
3160
|
+
result = _renderHook53.result;
|
|
2982
3161
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2983
3162
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2984
3163
|
act(() => {
|
|
@@ -2990,7 +3169,7 @@ describe('useUseCase', () => {
|
|
|
2990
3169
|
test('when `deps` change, it should update reducers', () => {
|
|
2991
3170
|
const onUpdate = jest.fn();
|
|
2992
3171
|
const onDeepUpdate = jest.fn();
|
|
2993
|
-
const
|
|
3172
|
+
const _renderHook54 = renderHook(() => {
|
|
2994
3173
|
const _useState9 = useState(0),
|
|
2995
3174
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
2996
3175
|
extraValue = _useState0[0],
|
|
@@ -3006,7 +3185,7 @@ describe('useUseCase', () => {
|
|
|
3006
3185
|
}, [reducers]);
|
|
3007
3186
|
return setExtraValue;
|
|
3008
3187
|
}),
|
|
3009
|
-
result =
|
|
3188
|
+
result = _renderHook54.result;
|
|
3010
3189
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
3011
3190
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
3012
3191
|
act(() => {
|
|
@@ -3018,7 +3197,7 @@ describe('useUseCase', () => {
|
|
|
3018
3197
|
test('empty `deps` should not update reducers', () => {
|
|
3019
3198
|
const onUpdate = jest.fn();
|
|
3020
3199
|
const onDeepUpdate = jest.fn();
|
|
3021
|
-
const
|
|
3200
|
+
const _renderHook55 = renderHook(() => {
|
|
3022
3201
|
const _useState1 = useState(0),
|
|
3023
3202
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
3024
3203
|
extraValue = _useState10[0],
|
|
@@ -3034,7 +3213,7 @@ describe('useUseCase', () => {
|
|
|
3034
3213
|
}, [reducers]);
|
|
3035
3214
|
return setExtraValue;
|
|
3036
3215
|
}),
|
|
3037
|
-
result =
|
|
3216
|
+
result = _renderHook55.result;
|
|
3038
3217
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
3039
3218
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
3040
3219
|
act(() => {
|