@modern-js/plugin-testing 2.0.0-beta.2 → 2.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/CHANGELOG.md +145 -0
- package/dist/js/modern/base/config/index.js +29 -9
- package/dist/js/modern/base/config/patches/assetsModule.js +7 -7
- package/dist/js/modern/base/config/patches/filemock.js +4 -1
- package/dist/js/modern/base/config/patches/index.js +30 -7
- package/dist/js/modern/base/config/patches/transformer.js +13 -18
- package/dist/js/modern/base/config/resolver.js +11 -6
- package/dist/js/modern/base/config/testConfigOperator.js +29 -23
- package/dist/js/modern/base/config/transformer/babelTransformer.js +16 -8
- package/dist/js/modern/base/hook.js +10 -5
- package/dist/js/modern/base/index.js +14 -6
- package/dist/js/modern/base/runJest.js +73 -62
- package/dist/js/modern/base/utils.js +40 -23
- package/dist/js/modern/cli/bff/app.js +37 -12
- package/dist/js/modern/cli/bff/constant.js +4 -1
- package/dist/js/modern/cli/bff/index.js +95 -52
- package/dist/js/modern/cli/bff/mockAPI.js +79 -64
- package/dist/js/modern/cli/bff/setup.js +71 -34
- package/dist/js/modern/cli/bff/utils/index.js +31 -15
- package/dist/js/modern/cli/index.js +64 -30
- package/dist/js/modern/cli/test.js +53 -18
- package/dist/js/modern/constant.js +4 -1
- package/dist/js/modern/index.js +3 -3
- package/dist/js/modern/modern-app.env.d.js +0 -0
- package/dist/js/modern/runtime-testing/app.js +25 -14
- package/dist/js/modern/runtime-testing/base.js +7 -3
- package/dist/js/modern/runtime-testing/customRender.js +24 -10
- package/dist/js/modern/runtime-testing/index.js +1 -1
- package/dist/js/modern/runtime-testing/reduck.js +41 -19
- package/dist/js/modern/runtime-testing/request.js +4 -4
- package/dist/js/modern/runtime-testing/resolvePlugins.js +24 -8
- package/dist/js/node/base/config/index.js +56 -18
- package/dist/js/node/base/config/patches/assetsModule.js +30 -12
- package/dist/js/node/base/config/patches/filemock.js +22 -7
- package/dist/js/node/base/config/patches/index.js +50 -15
- package/dist/js/node/base/config/patches/transformer.js +38 -25
- package/dist/js/node/base/config/resolver.js +37 -10
- package/dist/js/node/base/config/testConfigOperator.js +49 -30
- package/dist/js/node/base/config/transformer/babelTransformer.js +40 -15
- package/dist/js/node/base/hook.js +28 -13
- package/dist/js/node/base/index.js +31 -63
- package/dist/js/node/base/runJest.js +99 -71
- package/dist/js/node/base/utils.js +66 -34
- package/dist/js/node/cli/bff/app.js +57 -22
- package/dist/js/node/cli/bff/constant.js +22 -7
- package/dist/js/node/cli/bff/index.js +121 -65
- package/dist/js/node/cli/bff/mockAPI.js +103 -71
- package/dist/js/node/cli/bff/setup.js +100 -38
- package/dist/js/node/cli/bff/utils/index.js +55 -22
- package/dist/js/node/cli/index.js +87 -46
- package/dist/js/node/cli/test.js +79 -27
- package/dist/js/node/constant.js +22 -7
- package/dist/js/node/index.js +19 -18
- package/dist/js/node/modern-app.env.d.js +0 -0
- package/dist/js/node/runtime-testing/app.js +53 -25
- package/dist/js/node/runtime-testing/base.js +30 -33
- package/dist/js/node/runtime-testing/customRender.js +49 -18
- package/dist/js/node/runtime-testing/index.js +18 -27
- package/dist/js/node/runtime-testing/reduck.js +67 -31
- package/dist/js/node/runtime-testing/request.js +32 -13
- package/dist/js/node/runtime-testing/resolvePlugins.js +41 -12
- package/dist/js/treeshaking/base/config/index.js +150 -31
- package/dist/js/treeshaking/base/config/patches/assetsModule.js +9 -11
- package/dist/js/treeshaking/base/config/patches/filemock.js +2 -1
- package/dist/js/treeshaking/base/config/patches/index.js +221 -64
- package/dist/js/treeshaking/base/config/patches/transformer.js +34 -37
- package/dist/js/treeshaking/base/config/resolver.js +24 -11
- package/dist/js/treeshaking/base/config/testConfigOperator.js +120 -69
- package/dist/js/treeshaking/base/config/transformer/babelTransformer.js +16 -10
- package/dist/js/treeshaking/base/hook.js +8 -7
- package/dist/js/treeshaking/base/index.js +7 -6
- package/dist/js/treeshaking/base/runJest.js +281 -164
- package/dist/js/treeshaking/base/types/index.js +1 -0
- package/dist/js/treeshaking/base/utils.js +72 -48
- package/dist/js/treeshaking/cli/bff/app.js +192 -68
- package/dist/js/treeshaking/cli/bff/constant.js +2 -1
- package/dist/js/treeshaking/cli/bff/index.js +291 -130
- package/dist/js/treeshaking/cli/bff/mockAPI.js +181 -91
- package/dist/js/treeshaking/cli/bff/setup.js +185 -59
- package/dist/js/treeshaking/cli/bff/utils/index.js +47 -21
- package/dist/js/treeshaking/cli/index.js +248 -108
- package/dist/js/treeshaking/cli/test.js +177 -44
- package/dist/js/treeshaking/constant.js +2 -1
- package/dist/js/treeshaking/index.js +3 -3
- package/dist/js/treeshaking/modern-app.env.d.js +1 -0
- package/dist/js/treeshaking/runtime-testing/app.js +85 -39
- package/dist/js/treeshaking/runtime-testing/base.js +4 -3
- package/dist/js/treeshaking/runtime-testing/customRender.js +38 -10
- package/dist/js/treeshaking/runtime-testing/index.js +1 -1
- package/dist/js/treeshaking/runtime-testing/reduck.js +85 -33
- package/dist/js/treeshaking/runtime-testing/request.js +49 -19
- package/dist/js/treeshaking/runtime-testing/resolvePlugins.js +45 -14
- package/dist/types/base/config/index.d.ts +1 -0
- package/dist/types/base/config/patches/assetsModule.d.ts +1 -0
- package/dist/types/base/config/patches/filemock.d.ts +1 -0
- package/dist/types/base/config/patches/transformer.d.ts +1 -0
- package/dist/types/base/config/resolver.d.ts +2 -1
- package/dist/types/base/config/testConfigOperator.d.ts +2 -0
- package/dist/types/base/runJest.d.ts +2 -0
- package/dist/types/base/utils.d.ts +1 -0
- package/dist/types/cli/bff/index.d.ts +2 -0
- package/dist/types/cli/bff/mockAPI.d.ts +1 -0
- package/dist/types/cli/index.d.ts +2 -0
- package/dist/types/runtime-testing/app.d.ts +3 -0
- package/dist/types/runtime-testing/customRender.d.ts +2 -0
- package/package.json +13 -13
|
@@ -1,38 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
default: () => bff_default,
|
|
27
|
+
setJestConfigForBFF: () => setJestConfigForBFF
|
|
5
28
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
29
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
30
|
+
var import_path = __toESM(require("path"));
|
|
31
|
+
var import_utils = require("@modern-js/utils");
|
|
32
|
+
var import_base = require("../../base");
|
|
33
|
+
var import_constant = require("./constant");
|
|
34
|
+
var import_utils2 = require("./utils");
|
|
35
|
+
var __defProp2 = Object.defineProperty;
|
|
36
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
37
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
38
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
39
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
40
|
+
var __spreadValues = (a, b) => {
|
|
41
|
+
for (var prop in b || (b = {}))
|
|
42
|
+
if (__hasOwnProp2.call(b, prop))
|
|
43
|
+
__defNormalProp(a, prop, b[prop]);
|
|
44
|
+
if (__getOwnPropSymbols)
|
|
45
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
46
|
+
if (__propIsEnum.call(b, prop))
|
|
47
|
+
__defNormalProp(a, prop, b[prop]);
|
|
48
|
+
}
|
|
49
|
+
return a;
|
|
50
|
+
};
|
|
51
|
+
var __async = (__this, __arguments, generator) => {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
var fulfilled = (value) => {
|
|
54
|
+
try {
|
|
55
|
+
step(generator.next(value));
|
|
56
|
+
} catch (e) {
|
|
57
|
+
reject(e);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var rejected = (value) => {
|
|
61
|
+
try {
|
|
62
|
+
step(generator.throw(value));
|
|
63
|
+
} catch (e) {
|
|
64
|
+
reject(e);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
68
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const setJestConfigForBFF = (_0) => __async(void 0, [_0], function* ({
|
|
17
72
|
pwd,
|
|
18
73
|
userConfig,
|
|
19
74
|
plugins,
|
|
20
75
|
routes,
|
|
21
76
|
utils
|
|
22
|
-
})
|
|
23
|
-
var
|
|
77
|
+
}) {
|
|
78
|
+
var _a;
|
|
24
79
|
const bffConfig = {
|
|
25
|
-
rootDir:
|
|
80
|
+
rootDir: import_path.default.join(pwd, "./api"),
|
|
26
81
|
setupFilesAfterEnv: [require.resolve("./setup")],
|
|
27
|
-
testEnvironment:
|
|
82
|
+
testEnvironment: "node",
|
|
28
83
|
testMatch: [`**/api/**/*.test.[jt]s`],
|
|
29
84
|
globals: {
|
|
30
|
-
|
|
85
|
+
"ts-jest": {
|
|
31
86
|
diagnostics: {
|
|
32
87
|
warnOnly: true
|
|
33
88
|
}
|
|
34
89
|
},
|
|
35
|
-
[
|
|
90
|
+
[import_constant.bff_info_key]: {
|
|
36
91
|
appDir: pwd,
|
|
37
92
|
modernUserConfig: userConfig,
|
|
38
93
|
plugins,
|
|
@@ -40,25 +95,17 @@ const setJestConfigForBFF = async ({
|
|
|
40
95
|
}
|
|
41
96
|
}
|
|
42
97
|
};
|
|
43
|
-
const {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
const aliasMapper = (0, _base.getModuleNameMapper)(alias);
|
|
48
|
-
const {
|
|
49
|
-
moduleNameMapper
|
|
50
|
-
} = jestConfig;
|
|
51
|
-
|
|
52
|
-
// 服务端统一使用 ts-jest
|
|
98
|
+
const { jestConfig } = utils;
|
|
99
|
+
const alias = ((_a = userConfig == null ? void 0 : userConfig.source) == null ? void 0 : _a.alias) || {};
|
|
100
|
+
const aliasMapper = (0, import_base.getModuleNameMapper)(alias);
|
|
101
|
+
const { moduleNameMapper } = jestConfig;
|
|
53
102
|
const transform = {
|
|
54
|
-
|
|
103
|
+
"\\.[jt]sx?$": require.resolve("ts-jest")
|
|
55
104
|
};
|
|
56
|
-
const apiOnly =
|
|
57
|
-
const mergedModuleNameMapper =
|
|
58
|
-
const resolver = jestConfig.resolver ||
|
|
59
|
-
|
|
60
|
-
// 这三个配置不能设置在 projects 中,需要设置在外层(https://github.com/facebook/jest/issues/9696)
|
|
61
|
-
const configFields = ['coverage', 'collectCoverage', 'testTimeout'];
|
|
105
|
+
const apiOnly = yield (0, import_utils.isApiOnly)(pwd);
|
|
106
|
+
const mergedModuleNameMapper = __spreadValues(__spreadValues({}, moduleNameMapper), aliasMapper);
|
|
107
|
+
const resolver = jestConfig.resolver || import_base.DEFAULT_RESOLVER_PATH;
|
|
108
|
+
const configFields = ["coverage", "collectCoverage", "testTimeout"];
|
|
62
109
|
const commonConfig = configFields.reduce((obj, field) => {
|
|
63
110
|
if (jestConfig.hasOwnProperty(field)) {
|
|
64
111
|
obj[field] = jestConfig[field];
|
|
@@ -66,41 +113,51 @@ const setJestConfigForBFF = async ({
|
|
|
66
113
|
return obj;
|
|
67
114
|
}, {});
|
|
68
115
|
if (!apiOnly) {
|
|
69
|
-
utils.setJestConfig(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
116
|
+
utils.setJestConfig(
|
|
117
|
+
{
|
|
118
|
+
projects: [
|
|
119
|
+
__spreadValues({}, jestConfig),
|
|
120
|
+
__spreadValues({
|
|
121
|
+
transform,
|
|
122
|
+
moduleNameMapper: mergedModuleNameMapper,
|
|
123
|
+
resolver
|
|
124
|
+
}, bffConfig)
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
force: true
|
|
129
|
+
}
|
|
130
|
+
);
|
|
78
131
|
} else {
|
|
79
|
-
utils.setJestConfig(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
132
|
+
utils.setJestConfig(
|
|
133
|
+
{
|
|
134
|
+
projects: [
|
|
135
|
+
__spreadValues({
|
|
136
|
+
transform,
|
|
137
|
+
moduleNameMapper: mergedModuleNameMapper,
|
|
138
|
+
resolver
|
|
139
|
+
}, bffConfig)
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
force: true
|
|
144
|
+
}
|
|
145
|
+
);
|
|
88
146
|
}
|
|
89
147
|
utils.setJestConfig(commonConfig);
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
name: '@modern-js/testing-plugin-bff',
|
|
148
|
+
});
|
|
149
|
+
var bff_default = () => ({
|
|
150
|
+
name: "@modern-js/testing-plugin-bff",
|
|
94
151
|
setup(api) {
|
|
95
152
|
return {
|
|
96
|
-
jestConfig:
|
|
153
|
+
jestConfig: (utils, next) => __async(this, null, function* () {
|
|
97
154
|
const appContext = api.useAppContext();
|
|
98
155
|
const pwd = appContext.appDirectory;
|
|
99
|
-
if (!(0,
|
|
156
|
+
if (!(0, import_utils2.isBFFProject)(pwd)) {
|
|
100
157
|
return next(utils);
|
|
101
158
|
}
|
|
102
159
|
const userConfig = api.useResolvedConfigContext();
|
|
103
|
-
|
|
160
|
+
yield setJestConfigForBFF({
|
|
104
161
|
pwd,
|
|
105
162
|
userConfig,
|
|
106
163
|
routes: appContext.serverRoutes,
|
|
@@ -108,8 +165,7 @@ var _default = () => ({
|
|
|
108
165
|
utils
|
|
109
166
|
});
|
|
110
167
|
return next(utils);
|
|
111
|
-
}
|
|
168
|
+
})
|
|
112
169
|
};
|
|
113
170
|
}
|
|
114
171
|
});
|
|
115
|
-
exports.default = _default;
|
|
@@ -1,17 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
default: () => mockAPI_default
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var ptr =
|
|
8
|
-
var mockAppModule =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var ptr = __toESM(require("path-to-regexp"));
|
|
30
|
+
var mockAppModule = __toESM(require("./app"));
|
|
31
|
+
var __defProp2 = Object.defineProperty;
|
|
32
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
33
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
34
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
35
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
36
|
+
var __spreadValues = (a, b) => {
|
|
37
|
+
for (var prop in b || (b = {}))
|
|
38
|
+
if (__hasOwnProp2.call(b, prop))
|
|
39
|
+
__defNormalProp(a, prop, b[prop]);
|
|
40
|
+
if (__getOwnPropSymbols)
|
|
41
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
42
|
+
if (__propIsEnum.call(b, prop))
|
|
43
|
+
__defNormalProp(a, prop, b[prop]);
|
|
44
|
+
}
|
|
45
|
+
return a;
|
|
46
|
+
};
|
|
15
47
|
const mock_replaceUrlWithParams = (url, paramValues, payload) => {
|
|
16
48
|
const keys = [];
|
|
17
49
|
ptr.pathToRegexp(url, keys);
|
|
@@ -21,82 +53,82 @@ const mock_replaceUrlWithParams = (url, paramValues, payload) => {
|
|
|
21
53
|
}
|
|
22
54
|
return cur;
|
|
23
55
|
}, {});
|
|
24
|
-
const getFinalPath = ptr.compile(url, {
|
|
25
|
-
|
|
26
|
-
});
|
|
27
|
-
return getFinalPath(_objectSpread(_objectSpread({}, params), payload));
|
|
56
|
+
const getFinalPath = ptr.compile(url, { encode: encodeURIComponent });
|
|
57
|
+
return getFinalPath(__spreadValues(__spreadValues({}, params), payload));
|
|
28
58
|
};
|
|
29
|
-
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
31
|
-
const mock_getParamsAndPayload = args => {
|
|
59
|
+
const mock_getParamsAndPayload = (args) => {
|
|
32
60
|
if (args.length === 0) {
|
|
33
61
|
return [[], {}];
|
|
34
62
|
}
|
|
35
63
|
const head = args[0];
|
|
36
|
-
if (typeof head ===
|
|
64
|
+
if (typeof head === "object") {
|
|
37
65
|
return [[], head];
|
|
38
66
|
} else {
|
|
39
67
|
const latest = args[args.length - 1];
|
|
40
|
-
if (typeof latest ===
|
|
68
|
+
if (typeof latest === "object") {
|
|
41
69
|
return [args.slice(0, args.length - 1), latest];
|
|
42
70
|
} else {
|
|
43
71
|
return [args, {}];
|
|
44
72
|
}
|
|
45
73
|
}
|
|
46
74
|
};
|
|
47
|
-
var
|
|
75
|
+
var mockAPI_default = (mockApiInfosByFile) => {
|
|
48
76
|
const files = Object.keys(mockApiInfosByFile);
|
|
49
|
-
files.forEach(mockedFile => {
|
|
77
|
+
files.forEach((mockedFile) => {
|
|
50
78
|
jest.mock(mockedFile, () => {
|
|
51
|
-
const supertest = require(
|
|
52
|
-
return mockApiInfosByFile[mockedFile].reduce(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const [params, payload] = mock_getParamsAndPayload(args);
|
|
59
|
-
const {
|
|
60
|
-
returnHttp
|
|
61
|
-
} = module[info.name];
|
|
62
|
-
const url = mock_replaceUrlWithParams(info.routePath, params, payload.params);
|
|
63
|
-
const app = mockAppModule.getApp();
|
|
64
|
-
let test = supertest(app)[info.httpMethod.toLowerCase()](url);
|
|
65
|
-
if (payload.query) {
|
|
66
|
-
test = test.query(payload.query);
|
|
67
|
-
}
|
|
68
|
-
if (payload.body) {
|
|
69
|
-
test = test.send(payload.body);
|
|
70
|
-
}
|
|
71
|
-
if (payload.data) {
|
|
72
|
-
test = test.send(payload.data);
|
|
73
|
-
}
|
|
74
|
-
if (payload.headers) {
|
|
75
|
-
for (const name in payload.headers) {
|
|
76
|
-
test = test.set(name, payload.headers[name]);
|
|
79
|
+
const supertest = require("supertest");
|
|
80
|
+
return mockApiInfosByFile[mockedFile].reduce(
|
|
81
|
+
(res, info) => {
|
|
82
|
+
const module2 = {
|
|
83
|
+
[info.name]: (...args) => {
|
|
84
|
+
if (mockAppModule.isInHandler()) {
|
|
85
|
+
return info.handler(...args);
|
|
77
86
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
const [params, payload] = mock_getParamsAndPayload(args);
|
|
88
|
+
const { returnHttp } = module2[info.name];
|
|
89
|
+
const url = mock_replaceUrlWithParams(
|
|
90
|
+
info.routePath,
|
|
91
|
+
params,
|
|
92
|
+
payload.params
|
|
93
|
+
);
|
|
94
|
+
const app = mockAppModule.getApp();
|
|
95
|
+
let test = supertest(app)[info.httpMethod.toLowerCase()](url);
|
|
96
|
+
if (payload.query) {
|
|
97
|
+
test = test.query(payload.query);
|
|
98
|
+
}
|
|
99
|
+
if (payload.body) {
|
|
100
|
+
test = test.send(payload.body);
|
|
101
|
+
}
|
|
102
|
+
if (payload.data) {
|
|
103
|
+
test = test.send(payload.data);
|
|
90
104
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
if (payload.headers) {
|
|
106
|
+
for (const name in payload.headers) {
|
|
107
|
+
test = test.set(name, payload.headers[name]);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (payload.cookies) {
|
|
111
|
+
test = test.set("Cookie", [payload.cookies]);
|
|
112
|
+
}
|
|
113
|
+
if (returnHttp) {
|
|
114
|
+
return test;
|
|
115
|
+
}
|
|
116
|
+
return test.then((value) => {
|
|
117
|
+
try {
|
|
118
|
+
return JSON.parse(value.text);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
return value.text;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
res[info.name] = module2[info.name];
|
|
126
|
+
Object.assign(res[info.name], info.handler);
|
|
127
|
+
res.__esModule = true;
|
|
128
|
+
return res;
|
|
129
|
+
},
|
|
130
|
+
{}
|
|
131
|
+
);
|
|
99
132
|
});
|
|
100
133
|
});
|
|
101
134
|
};
|
|
102
|
-
exports.default = _default;
|
|
@@ -1,41 +1,103 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
default: () => stdin_default
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_path = __toESM(require("path"));
|
|
30
|
+
var import_bff_core = require("@modern-js/bff-core");
|
|
31
|
+
var import_constant = require("./constant");
|
|
32
|
+
var import_mockAPI = __toESM(require("./mockAPI"));
|
|
33
|
+
var import_app = require("./app");
|
|
34
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
35
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
36
|
+
return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
37
|
+
};
|
|
38
|
+
var __async = (__this, __arguments, generator) => {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
var fulfilled = (value) => {
|
|
41
|
+
try {
|
|
42
|
+
step(generator.next(value));
|
|
43
|
+
} catch (e) {
|
|
44
|
+
reject(e);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var rejected = (value) => {
|
|
48
|
+
try {
|
|
49
|
+
step(generator.throw(value));
|
|
50
|
+
} catch (e) {
|
|
51
|
+
reject(e);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
55
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
56
|
});
|
|
39
|
-
(0, _mockAPI.default)(apiInfosByFile);
|
|
40
57
|
};
|
|
41
|
-
|
|
58
|
+
var require_setup = __commonJS({
|
|
59
|
+
"src/cli/bff/setup.ts"(exports) {
|
|
60
|
+
let uped = false;
|
|
61
|
+
const setup = () => {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
if (uped) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
uped = true;
|
|
67
|
+
const bff_info = global[import_constant.bff_info_key];
|
|
68
|
+
const prefix = (_b = (_a = bff_info == null ? void 0 : bff_info.modernUserConfig) == null ? void 0 : _a.bff) == null ? void 0 : _b.prefix;
|
|
69
|
+
const apiRouter = new import_bff_core.ApiRouter({
|
|
70
|
+
apiDir: import_path.default.join(bff_info.appDir, "./api"),
|
|
71
|
+
prefix
|
|
72
|
+
});
|
|
73
|
+
const apiInfos = apiRouter.getApiHandlers();
|
|
74
|
+
const apiInfosByFile = apiInfos.reduce(
|
|
75
|
+
(res, apiInfo) => {
|
|
76
|
+
if (!res[apiInfo.filename]) {
|
|
77
|
+
res[apiInfo.filename] = [];
|
|
78
|
+
}
|
|
79
|
+
res[apiInfo.filename].push(apiInfo);
|
|
80
|
+
return res;
|
|
81
|
+
},
|
|
82
|
+
{}
|
|
83
|
+
);
|
|
84
|
+
let app = null;
|
|
85
|
+
beforeAll(() => __async(exports, null, function* () {
|
|
86
|
+
if (!app) {
|
|
87
|
+
app = yield (0, import_app.createApp)(
|
|
88
|
+
bff_info.appDir,
|
|
89
|
+
bff_info.modernUserConfig,
|
|
90
|
+
bff_info.plugins,
|
|
91
|
+
bff_info.routes
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}));
|
|
95
|
+
afterAll(() => __async(exports, null, function* () {
|
|
96
|
+
yield (0, import_app.closeServer)();
|
|
97
|
+
}));
|
|
98
|
+
(0, import_mockAPI.default)(apiInfosByFile);
|
|
99
|
+
};
|
|
100
|
+
setup();
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
var stdin_default = require_setup();
|