@modern-js/plugin-testing 1.7.1-beta.2 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/js/modern/cli/bff/app.js +13 -34
- package/dist/js/modern/cli/bff/index.js +3 -6
- package/dist/js/modern/cli/bff/mockAPI.js +6 -7
- package/dist/js/modern/cli/bff/setup.js +1 -11
- package/dist/js/modern/runtime-testing/request.js +1 -3
- package/dist/js/node/cli/bff/app.js +14 -39
- package/dist/js/node/cli/bff/index.js +3 -6
- package/dist/js/node/cli/bff/mockAPI.js +6 -7
- package/dist/js/node/cli/bff/setup.js +1 -12
- package/dist/js/node/runtime-testing/request.js +1 -4
- package/dist/js/treeshaking/cli/bff/app.js +6 -51
- package/dist/js/treeshaking/cli/bff/index.js +6 -10
- package/dist/js/treeshaking/cli/bff/mockAPI.js +6 -7
- package/dist/js/treeshaking/cli/bff/setup.js +1 -43
- package/dist/js/treeshaking/runtime-testing/request.js +1 -3
- package/dist/types/cli/bff/app.d.ts +1 -3
- package/dist/types/cli/bff/mockAPI.d.ts +1 -1
- package/package.json +9 -10
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
# @modern-js/plugin-testing
|
2
2
|
|
3
|
+
## 1.8.0
|
4
|
+
|
5
|
+
### Minor Changes
|
6
|
+
|
7
|
+
- 59c941a: chore(runtime): merge `@modern-js/runtime-core` to `@modern-js/runtime`
|
8
|
+
|
9
|
+
chore(runtime): 合并 `@modern-js/runtime-core` 到 `@modern-js/runtime`
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- Updated dependencies [79e83ef]
|
14
|
+
- Updated dependencies [e0cd14a]
|
15
|
+
- Updated dependencies [287ac8b]
|
16
|
+
- Updated dependencies [5f1a231]
|
17
|
+
- Updated dependencies [22f4dca]
|
18
|
+
- Updated dependencies [59c941a]
|
19
|
+
- Updated dependencies [7b9067f]
|
20
|
+
- @modern-js/utils@1.9.0
|
21
|
+
- @modern-js/runtime@1.5.0
|
22
|
+
- @modern-js/webpack@1.12.4
|
23
|
+
- @modern-js/babel-preset-app@1.6.0
|
24
|
+
- @modern-js/server@1.6.0
|
25
|
+
|
3
26
|
## 1.7.0
|
4
27
|
|
5
28
|
### Minor Changes
|
@@ -2,42 +2,21 @@ import { AsyncLocalStorage } from 'async_hooks';
|
|
2
2
|
import { Server } from '@modern-js/server';
|
3
3
|
const store = new AsyncLocalStorage();
|
4
4
|
export const isInHandler = () => Boolean(store.getStore());
|
5
|
-
let server = null;
|
6
5
|
|
7
6
|
const createApp = async (pwd, config, plugins, routes) => {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
await server.init();
|
21
|
-
}
|
22
|
-
|
23
|
-
const app = server.getRequestHandler();
|
24
|
-
return app;
|
25
|
-
};
|
26
|
-
|
27
|
-
const getApp = () => {
|
28
|
-
if (!server) {
|
29
|
-
throw new Error('please createApp first');
|
30
|
-
}
|
31
|
-
|
7
|
+
config.output.path = './';
|
8
|
+
const server = new Server({
|
9
|
+
apiOnly: true,
|
10
|
+
dev: {
|
11
|
+
watch: false
|
12
|
+
},
|
13
|
+
pwd,
|
14
|
+
config,
|
15
|
+
plugins,
|
16
|
+
routes
|
17
|
+
});
|
18
|
+
await server.init();
|
32
19
|
return server.getRequestHandler();
|
33
20
|
};
|
34
21
|
|
35
|
-
|
36
|
-
if (!server) {
|
37
|
-
throw new Error('please createApp first');
|
38
|
-
}
|
39
|
-
|
40
|
-
await server.close();
|
41
|
-
};
|
42
|
-
|
43
|
-
export { createApp, getApp, closeServer };
|
22
|
+
export { createApp };
|
@@ -21,7 +21,7 @@ export const setJestConfigForBFF = async ({
|
|
21
21
|
const bffConfig = {
|
22
22
|
rootDir: path.join(pwd, './api'),
|
23
23
|
setupFilesAfterEnv: [require.resolve("./setup")],
|
24
|
-
testEnvironment:
|
24
|
+
testEnvironment: require.resolve("./env"),
|
25
25
|
testMatch: [`**/api/**/*.test.[jt]s`],
|
26
26
|
globals: {
|
27
27
|
[bff_info_key]: {
|
@@ -38,12 +38,9 @@ export const setJestConfigForBFF = async ({
|
|
38
38
|
const alias = (userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$source = userConfig.source) === null || _userConfig$source === void 0 ? void 0 : _userConfig$source.alias) || {};
|
39
39
|
const aliasMapper = getModuleNameMapper(alias);
|
40
40
|
const {
|
41
|
+
transform,
|
41
42
|
moduleNameMapper
|
42
|
-
} = jestConfig;
|
43
|
-
|
44
|
-
const transform = {
|
45
|
-
'\\.[jt]sx?$': require.resolve('ts-jest')
|
46
|
-
};
|
43
|
+
} = jestConfig;
|
47
44
|
const apiOnly = await isApiOnly(pwd);
|
48
45
|
|
49
46
|
const mergedModuleNameMapper = _objectSpread(_objectSpread({}, moduleNameMapper), aliasMapper);
|
@@ -5,7 +5,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
6
6
|
|
7
7
|
import * as ptr from 'path-to-regexp';
|
8
|
-
import * as
|
8
|
+
import * as mock_appModule from "./app"; // eslint-disable-next-line @typescript-eslint/naming-convention
|
9
9
|
|
10
10
|
const mock_replaceUrlWithParams = (url, paramValues, payload) => {
|
11
11
|
const keys = [];
|
@@ -44,16 +44,16 @@ const mock_getParamsAndPayload = args => {
|
|
44
44
|
}
|
45
45
|
};
|
46
46
|
|
47
|
-
export default (
|
48
|
-
const files = Object.keys(
|
47
|
+
export default ((mock_apiInfosByFile, mock_app) => {
|
48
|
+
const files = Object.keys(mock_apiInfosByFile);
|
49
49
|
files.forEach(mockedFile => {
|
50
50
|
jest.mock(mockedFile, () => {
|
51
51
|
const supertest = require('supertest');
|
52
52
|
|
53
|
-
return
|
53
|
+
return mock_apiInfosByFile[mockedFile].reduce((res, info) => {
|
54
54
|
const module = {
|
55
55
|
[info.name]: (...args) => {
|
56
|
-
if (
|
56
|
+
if (mock_appModule.isInHandler()) {
|
57
57
|
return info.handler(...args);
|
58
58
|
}
|
59
59
|
|
@@ -62,8 +62,7 @@ export default (mockApiInfosByFile => {
|
|
62
62
|
returnHttp
|
63
63
|
} = module[info.name];
|
64
64
|
const url = mock_replaceUrlWithParams(info.routePath, params, payload.params);
|
65
|
-
|
66
|
-
let test = supertest(app)[info.httpMethod.toLowerCase()](url);
|
65
|
+
let test = supertest(mock_app)[info.httpMethod.toLowerCase()](url);
|
67
66
|
|
68
67
|
if (payload.query) {
|
69
68
|
test = test.query(payload.query);
|
@@ -2,7 +2,6 @@ import path from 'path';
|
|
2
2
|
import { ApiRouter } from '@modern-js/bff-core';
|
3
3
|
import { bff_info_key } from "./constant";
|
4
4
|
import mockAPI from "./mockAPI";
|
5
|
-
import { createApp, closeServer } from "./app";
|
6
5
|
let uped = false;
|
7
6
|
|
8
7
|
const setup = () => {
|
@@ -28,16 +27,7 @@ const setup = () => {
|
|
28
27
|
res[apiInfo.filename].push(apiInfo);
|
29
28
|
return res;
|
30
29
|
}, {});
|
31
|
-
|
32
|
-
beforeAll(async () => {
|
33
|
-
if (!app) {
|
34
|
-
app = await createApp(bff_info.appDir, bff_info.modernUserConfig, bff_info.plugins, bff_info.routes);
|
35
|
-
}
|
36
|
-
});
|
37
|
-
afterAll(async () => {
|
38
|
-
await closeServer();
|
39
|
-
});
|
40
|
-
mockAPI(apiInfosByFile);
|
30
|
+
mockAPI(apiInfosByFile, global.app);
|
41
31
|
};
|
42
32
|
|
43
33
|
setup();
|
@@ -1,13 +1,11 @@
|
|
1
1
|
/* eslint-disable eslint-comments/disable-enable-pair */
|
2
2
|
import supertest from 'supertest';
|
3
|
-
import { getApp } from "../cli/bff/app";
|
4
3
|
|
5
4
|
function request(...args) {
|
6
5
|
const [fn, ...extraArgs] = args;
|
7
|
-
const app = getApp();
|
8
6
|
|
9
7
|
if (!fn) {
|
10
|
-
return supertest(app);
|
8
|
+
return supertest(global.app);
|
11
9
|
}
|
12
10
|
|
13
11
|
fn.returnHttp = true;
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.isInHandler = exports.
|
6
|
+
exports.isInHandler = exports.createApp = void 0;
|
7
7
|
|
8
8
|
var _async_hooks = require("async_hooks");
|
9
9
|
|
@@ -14,46 +14,21 @@ const store = new _async_hooks.AsyncLocalStorage();
|
|
14
14
|
const isInHandler = () => Boolean(store.getStore());
|
15
15
|
|
16
16
|
exports.isInHandler = isInHandler;
|
17
|
-
let server = null;
|
18
17
|
|
19
18
|
const createApp = async (pwd, config, plugins, routes) => {
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
await server.init();
|
33
|
-
}
|
34
|
-
|
35
|
-
const app = server.getRequestHandler();
|
36
|
-
return app;
|
37
|
-
};
|
38
|
-
|
39
|
-
exports.createApp = createApp;
|
40
|
-
|
41
|
-
const getApp = () => {
|
42
|
-
if (!server) {
|
43
|
-
throw new Error('please createApp first');
|
44
|
-
}
|
45
|
-
|
19
|
+
config.output.path = './';
|
20
|
+
const server = new _server.Server({
|
21
|
+
apiOnly: true,
|
22
|
+
dev: {
|
23
|
+
watch: false
|
24
|
+
},
|
25
|
+
pwd,
|
26
|
+
config,
|
27
|
+
plugins,
|
28
|
+
routes
|
29
|
+
});
|
30
|
+
await server.init();
|
46
31
|
return server.getRequestHandler();
|
47
32
|
};
|
48
33
|
|
49
|
-
exports.
|
50
|
-
|
51
|
-
const closeServer = async () => {
|
52
|
-
if (!server) {
|
53
|
-
throw new Error('please createApp first');
|
54
|
-
}
|
55
|
-
|
56
|
-
await server.close();
|
57
|
-
};
|
58
|
-
|
59
|
-
exports.closeServer = closeServer;
|
34
|
+
exports.createApp = createApp;
|
@@ -35,7 +35,7 @@ const setJestConfigForBFF = async ({
|
|
35
35
|
const bffConfig = {
|
36
36
|
rootDir: _path.default.join(pwd, './api'),
|
37
37
|
setupFilesAfterEnv: [require.resolve("./setup")],
|
38
|
-
testEnvironment:
|
38
|
+
testEnvironment: require.resolve("./env"),
|
39
39
|
testMatch: [`**/api/**/*.test.[jt]s`],
|
40
40
|
globals: {
|
41
41
|
[_constant.bff_info_key]: {
|
@@ -52,12 +52,9 @@ const setJestConfigForBFF = async ({
|
|
52
52
|
const alias = (userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$source = userConfig.source) === null || _userConfig$source === void 0 ? void 0 : _userConfig$source.alias) || {};
|
53
53
|
const aliasMapper = (0, _base.getModuleNameMapper)(alias);
|
54
54
|
const {
|
55
|
+
transform,
|
55
56
|
moduleNameMapper
|
56
|
-
} = jestConfig;
|
57
|
-
|
58
|
-
const transform = {
|
59
|
-
'\\.[jt]sx?$': require.resolve('ts-jest')
|
60
|
-
};
|
57
|
+
} = jestConfig;
|
61
58
|
const apiOnly = await (0, _utils.isApiOnly)(pwd);
|
62
59
|
|
63
60
|
const mergedModuleNameMapper = _objectSpread(_objectSpread({}, moduleNameMapper), aliasMapper);
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
7
7
|
|
8
8
|
var ptr = _interopRequireWildcard(require("path-to-regexp"));
|
9
9
|
|
10
|
-
var
|
10
|
+
var mock_appModule = _interopRequireWildcard(require("./app"));
|
11
11
|
|
12
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
13
13
|
|
@@ -57,16 +57,16 @@ const mock_getParamsAndPayload = args => {
|
|
57
57
|
}
|
58
58
|
};
|
59
59
|
|
60
|
-
var _default =
|
61
|
-
const files = Object.keys(
|
60
|
+
var _default = (mock_apiInfosByFile, mock_app) => {
|
61
|
+
const files = Object.keys(mock_apiInfosByFile);
|
62
62
|
files.forEach(mockedFile => {
|
63
63
|
jest.mock(mockedFile, () => {
|
64
64
|
const supertest = require('supertest');
|
65
65
|
|
66
|
-
return
|
66
|
+
return mock_apiInfosByFile[mockedFile].reduce((res, info) => {
|
67
67
|
const module = {
|
68
68
|
[info.name]: (...args) => {
|
69
|
-
if (
|
69
|
+
if (mock_appModule.isInHandler()) {
|
70
70
|
return info.handler(...args);
|
71
71
|
}
|
72
72
|
|
@@ -75,8 +75,7 @@ var _default = mockApiInfosByFile => {
|
|
75
75
|
returnHttp
|
76
76
|
} = module[info.name];
|
77
77
|
const url = mock_replaceUrlWithParams(info.routePath, params, payload.params);
|
78
|
-
|
79
|
-
let test = supertest(app)[info.httpMethod.toLowerCase()](url);
|
78
|
+
let test = supertest(mock_app)[info.httpMethod.toLowerCase()](url);
|
80
79
|
|
81
80
|
if (payload.query) {
|
82
81
|
test = test.query(payload.query);
|
@@ -8,8 +8,6 @@ var _constant = require("./constant");
|
|
8
8
|
|
9
9
|
var _mockAPI = _interopRequireDefault(require("./mockAPI"));
|
10
10
|
|
11
|
-
var _app = require("./app");
|
12
|
-
|
13
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
12
|
|
15
13
|
let uped = false;
|
@@ -37,16 +35,7 @@ const setup = () => {
|
|
37
35
|
res[apiInfo.filename].push(apiInfo);
|
38
36
|
return res;
|
39
37
|
}, {});
|
40
|
-
|
41
|
-
beforeAll(async () => {
|
42
|
-
if (!app) {
|
43
|
-
app = await (0, _app.createApp)(bff_info.appDir, bff_info.modernUserConfig, bff_info.plugins, bff_info.routes);
|
44
|
-
}
|
45
|
-
});
|
46
|
-
afterAll(async () => {
|
47
|
-
await (0, _app.closeServer)();
|
48
|
-
});
|
49
|
-
(0, _mockAPI.default)(apiInfosByFile);
|
38
|
+
(0, _mockAPI.default)(apiInfosByFile, global.app);
|
50
39
|
};
|
51
40
|
|
52
41
|
setup();
|
@@ -7,17 +7,14 @@ exports.request = request;
|
|
7
7
|
|
8
8
|
var _supertest = _interopRequireDefault(require("supertest"));
|
9
9
|
|
10
|
-
var _app = require("../cli/bff/app");
|
11
|
-
|
12
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
11
|
|
14
12
|
/* eslint-disable eslint-comments/disable-enable-pair */
|
15
13
|
function request(...args) {
|
16
14
|
const [fn, ...extraArgs] = args;
|
17
|
-
const app = (0, _app.getApp)();
|
18
15
|
|
19
16
|
if (!fn) {
|
20
|
-
return (0, _supertest.default)(app);
|
17
|
+
return (0, _supertest.default)(global.app);
|
21
18
|
}
|
22
19
|
|
23
20
|
fn.returnHttp = true;
|
@@ -6,20 +6,14 @@ var store = new AsyncLocalStorage();
|
|
6
6
|
export var isInHandler = function isInHandler() {
|
7
7
|
return Boolean(store.getStore());
|
8
8
|
};
|
9
|
-
var server = null;
|
10
9
|
|
11
10
|
var createApp = /*#__PURE__*/function () {
|
12
11
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(pwd, config, plugins, routes) {
|
13
|
-
var
|
12
|
+
var server;
|
14
13
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
15
14
|
while (1) {
|
16
15
|
switch (_context.prev = _context.next) {
|
17
16
|
case 0:
|
18
|
-
if (server) {
|
19
|
-
_context.next = 5;
|
20
|
-
break;
|
21
|
-
}
|
22
|
-
|
23
17
|
config.output.path = './';
|
24
18
|
server = new Server({
|
25
19
|
apiOnly: true,
|
@@ -31,14 +25,13 @@ var createApp = /*#__PURE__*/function () {
|
|
31
25
|
plugins: plugins,
|
32
26
|
routes: routes
|
33
27
|
});
|
34
|
-
_context.next =
|
28
|
+
_context.next = 4;
|
35
29
|
return server.init();
|
36
30
|
|
37
|
-
case
|
38
|
-
|
39
|
-
return _context.abrupt("return", app);
|
31
|
+
case 4:
|
32
|
+
return _context.abrupt("return", server.getRequestHandler());
|
40
33
|
|
41
|
-
case
|
34
|
+
case 5:
|
42
35
|
case "end":
|
43
36
|
return _context.stop();
|
44
37
|
}
|
@@ -51,42 +44,4 @@ var createApp = /*#__PURE__*/function () {
|
|
51
44
|
};
|
52
45
|
}();
|
53
46
|
|
54
|
-
|
55
|
-
if (!server) {
|
56
|
-
throw new Error('please createApp first');
|
57
|
-
}
|
58
|
-
|
59
|
-
return server.getRequestHandler();
|
60
|
-
};
|
61
|
-
|
62
|
-
var closeServer = /*#__PURE__*/function () {
|
63
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
64
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
65
|
-
while (1) {
|
66
|
-
switch (_context2.prev = _context2.next) {
|
67
|
-
case 0:
|
68
|
-
if (server) {
|
69
|
-
_context2.next = 2;
|
70
|
-
break;
|
71
|
-
}
|
72
|
-
|
73
|
-
throw new Error('please createApp first');
|
74
|
-
|
75
|
-
case 2:
|
76
|
-
_context2.next = 4;
|
77
|
-
return server.close();
|
78
|
-
|
79
|
-
case 4:
|
80
|
-
case "end":
|
81
|
-
return _context2.stop();
|
82
|
-
}
|
83
|
-
}
|
84
|
-
}, _callee2);
|
85
|
-
}));
|
86
|
-
|
87
|
-
return function closeServer() {
|
88
|
-
return _ref2.apply(this, arguments);
|
89
|
-
};
|
90
|
-
}();
|
91
|
-
|
92
|
-
export { createApp, getApp, closeServer };
|
47
|
+
export { createApp };
|
@@ -11,7 +11,7 @@ export var setJestConfigForBFF = /*#__PURE__*/function () {
|
|
11
11
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
12
12
|
var _userConfig$source;
|
13
13
|
|
14
|
-
var pwd, userConfig, plugins, routes, utils, bffConfig, jestConfig, alias, aliasMapper,
|
14
|
+
var pwd, userConfig, plugins, routes, utils, bffConfig, jestConfig, alias, aliasMapper, transform, moduleNameMapper, apiOnly, mergedModuleNameMapper, resolver, configFields, commonConfig;
|
15
15
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
16
16
|
while (1) {
|
17
17
|
switch (_context.prev = _context.next) {
|
@@ -20,7 +20,7 @@ export var setJestConfigForBFF = /*#__PURE__*/function () {
|
|
20
20
|
bffConfig = {
|
21
21
|
rootDir: path.join(pwd, './api'),
|
22
22
|
setupFilesAfterEnv: [require.resolve("./setup")],
|
23
|
-
testEnvironment:
|
23
|
+
testEnvironment: require.resolve("./env"),
|
24
24
|
testMatch: ["**/api/**/*.test.[jt]s"],
|
25
25
|
globals: _defineProperty({}, bff_info_key, {
|
26
26
|
appDir: pwd,
|
@@ -32,15 +32,11 @@ export var setJestConfigForBFF = /*#__PURE__*/function () {
|
|
32
32
|
jestConfig = utils.jestConfig;
|
33
33
|
alias = (userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$source = userConfig.source) === null || _userConfig$source === void 0 ? void 0 : _userConfig$source.alias) || {};
|
34
34
|
aliasMapper = getModuleNameMapper(alias);
|
35
|
-
moduleNameMapper = jestConfig.moduleNameMapper;
|
36
|
-
|
37
|
-
transform = {
|
38
|
-
'\\.[jt]sx?$': require.resolve('ts-jest')
|
39
|
-
};
|
40
|
-
_context.next = 9;
|
35
|
+
transform = jestConfig.transform, moduleNameMapper = jestConfig.moduleNameMapper;
|
36
|
+
_context.next = 8;
|
41
37
|
return isApiOnly(pwd);
|
42
38
|
|
43
|
-
case
|
39
|
+
case 8:
|
44
40
|
apiOnly = _context.sent;
|
45
41
|
mergedModuleNameMapper = _objectSpread(_objectSpread({}, moduleNameMapper), aliasMapper);
|
46
42
|
resolver = jestConfig.resolver || DEFAULT_RESOLVER_PATH; // 这三个配置不能设置在 projects 中,需要设置在外层(https://github.com/facebook/jest/issues/9696)
|
@@ -78,7 +74,7 @@ export var setJestConfigForBFF = /*#__PURE__*/function () {
|
|
78
74
|
|
79
75
|
utils.setJestConfig(commonConfig);
|
80
76
|
|
81
|
-
case
|
77
|
+
case 15:
|
82
78
|
case "end":
|
83
79
|
return _context.stop();
|
84
80
|
}
|
@@ -3,7 +3,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
4
4
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
5
5
|
import * as ptr from 'path-to-regexp';
|
6
|
-
import * as
|
6
|
+
import * as mock_appModule from "./app"; // eslint-disable-next-line @typescript-eslint/naming-convention
|
7
7
|
|
8
8
|
var mock_replaceUrlWithParams = function mock_replaceUrlWithParams(url, paramValues, payload) {
|
9
9
|
var keys = [];
|
@@ -42,19 +42,19 @@ var mock_getParamsAndPayload = function mock_getParamsAndPayload(args) {
|
|
42
42
|
}
|
43
43
|
};
|
44
44
|
|
45
|
-
export default (function (
|
46
|
-
var files = Object.keys(
|
45
|
+
export default (function (mock_apiInfosByFile, mock_app) {
|
46
|
+
var files = Object.keys(mock_apiInfosByFile);
|
47
47
|
files.forEach(function (mockedFile) {
|
48
48
|
jest.mock(mockedFile, function () {
|
49
49
|
var supertest = require('supertest');
|
50
50
|
|
51
|
-
return
|
51
|
+
return mock_apiInfosByFile[mockedFile].reduce(function (res, info) {
|
52
52
|
var module = _defineProperty({}, info.name, function () {
|
53
53
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
54
54
|
args[_key] = arguments[_key];
|
55
55
|
}
|
56
56
|
|
57
|
-
if (
|
57
|
+
if (mock_appModule.isInHandler()) {
|
58
58
|
return info.handler.apply(info, args);
|
59
59
|
}
|
60
60
|
|
@@ -66,8 +66,7 @@ export default (function (mockApiInfosByFile) {
|
|
66
66
|
var _ref = module[info.name],
|
67
67
|
returnHttp = _ref.returnHttp;
|
68
68
|
var url = mock_replaceUrlWithParams(info.routePath, params, payload.params);
|
69
|
-
var
|
70
|
-
var test = supertest(app)[info.httpMethod.toLowerCase()](url);
|
69
|
+
var test = supertest(mock_app)[info.httpMethod.toLowerCase()](url);
|
71
70
|
|
72
71
|
if (payload.query) {
|
73
72
|
test = test.query(payload.query);
|
@@ -1,10 +1,7 @@
|
|
1
|
-
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
3
1
|
import path from 'path';
|
4
2
|
import { ApiRouter } from '@modern-js/bff-core';
|
5
3
|
import { bff_info_key } from "./constant";
|
6
4
|
import mockAPI from "./mockAPI";
|
7
|
-
import { createApp, closeServer } from "./app";
|
8
5
|
var uped = false;
|
9
6
|
|
10
7
|
var setup = function setup() {
|
@@ -30,46 +27,7 @@ var setup = function setup() {
|
|
30
27
|
res[apiInfo.filename].push(apiInfo);
|
31
28
|
return res;
|
32
29
|
}, {});
|
33
|
-
|
34
|
-
beforeAll( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
35
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
36
|
-
while (1) {
|
37
|
-
switch (_context.prev = _context.next) {
|
38
|
-
case 0:
|
39
|
-
if (app) {
|
40
|
-
_context.next = 4;
|
41
|
-
break;
|
42
|
-
}
|
43
|
-
|
44
|
-
_context.next = 3;
|
45
|
-
return createApp(bff_info.appDir, bff_info.modernUserConfig, bff_info.plugins, bff_info.routes);
|
46
|
-
|
47
|
-
case 3:
|
48
|
-
app = _context.sent;
|
49
|
-
|
50
|
-
case 4:
|
51
|
-
case "end":
|
52
|
-
return _context.stop();
|
53
|
-
}
|
54
|
-
}
|
55
|
-
}, _callee);
|
56
|
-
})));
|
57
|
-
afterAll( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
58
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
59
|
-
while (1) {
|
60
|
-
switch (_context2.prev = _context2.next) {
|
61
|
-
case 0:
|
62
|
-
_context2.next = 2;
|
63
|
-
return closeServer();
|
64
|
-
|
65
|
-
case 2:
|
66
|
-
case "end":
|
67
|
-
return _context2.stop();
|
68
|
-
}
|
69
|
-
}
|
70
|
-
}, _callee2);
|
71
|
-
})));
|
72
|
-
mockAPI(apiInfosByFile);
|
30
|
+
mockAPI(apiInfosByFile, global.app);
|
73
31
|
};
|
74
32
|
|
75
33
|
setup();
|
@@ -2,7 +2,6 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
|
3
3
|
/* eslint-disable eslint-comments/disable-enable-pair */
|
4
4
|
import supertest from 'supertest';
|
5
|
-
import { getApp } from "../cli/bff/app";
|
6
5
|
|
7
6
|
function request() {
|
8
7
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
@@ -11,10 +10,9 @@ function request() {
|
|
11
10
|
|
12
11
|
var fn = args[0],
|
13
12
|
extraArgs = args.slice(1);
|
14
|
-
var app = getApp();
|
15
13
|
|
16
14
|
if (!fn) {
|
17
|
-
return supertest(app);
|
15
|
+
return supertest(global.app);
|
18
16
|
}
|
19
17
|
|
20
18
|
fn.returnHttp = true;
|
@@ -3,6 +3,4 @@
|
|
3
3
|
/// <reference types="node/http" />
|
4
4
|
export declare const isInHandler: () => boolean;
|
5
5
|
declare const createApp: (pwd: string, config: any, plugins: any[], routes: any[]) => Promise<(req: import("http").IncomingMessage, res: import("http").ServerResponse, next?: (() => void) | undefined) => void>;
|
6
|
-
|
7
|
-
declare const closeServer: () => Promise<void>;
|
8
|
-
export { createApp, getApp, closeServer };
|
6
|
+
export { createApp };
|
package/package.json
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
"modern",
|
12
12
|
"modern.js"
|
13
13
|
],
|
14
|
-
"version": "1.
|
14
|
+
"version": "1.8.0",
|
15
15
|
"jsnext:source": "./src/index.ts",
|
16
16
|
"types": "./dist/types/index.d.ts",
|
17
17
|
"main": "./dist/js/node/index.js",
|
@@ -100,9 +100,9 @@
|
|
100
100
|
"@modern-js-reduck/plugin-immutable": "^1.0.1",
|
101
101
|
"@modern-js-reduck/store": "^1.0.3",
|
102
102
|
"@modern-js/babel-compiler": "^1.2.6",
|
103
|
-
"@modern-js/utils": "^1.
|
104
|
-
"@modern-js/webpack": "^1.12.
|
105
|
-
"@modern-js/babel-preset-app": "^1.
|
103
|
+
"@modern-js/utils": "^1.9.0",
|
104
|
+
"@modern-js/webpack": "^1.12.4",
|
105
|
+
"@modern-js/babel-preset-app": "^1.6.0",
|
106
106
|
"@modern-js/plugin": "^1.4.1",
|
107
107
|
"@modern-js/server": "^1.6.0",
|
108
108
|
"@testing-library/jest-dom": "^5.14.1",
|
@@ -119,7 +119,7 @@
|
|
119
119
|
"yargs": "^17.0.1"
|
120
120
|
},
|
121
121
|
"peerDependencies": {
|
122
|
-
"@modern-js/runtime": "^1.
|
122
|
+
"@modern-js/runtime": "^1.5.0"
|
123
123
|
},
|
124
124
|
"peerDependenciesMeta": {
|
125
125
|
"@modern-js/runtime": {
|
@@ -127,9 +127,9 @@
|
|
127
127
|
}
|
128
128
|
},
|
129
129
|
"devDependencies": {
|
130
|
-
"@modern-js/core": "1.
|
131
|
-
"@modern-js/runtime": "1.
|
132
|
-
"@modern-js/bff-core": "1.2.2
|
130
|
+
"@modern-js/core": "1.14.0",
|
131
|
+
"@modern-js/runtime": "1.5.0",
|
132
|
+
"@modern-js/bff-core": "1.2.2",
|
133
133
|
"@scripts/build": "0.0.0",
|
134
134
|
"@scripts/jest-config": "0.0.0",
|
135
135
|
"@types/jest": "^27",
|
@@ -148,8 +148,7 @@
|
|
148
148
|
"modernConfig": {},
|
149
149
|
"publishConfig": {
|
150
150
|
"registry": "https://registry.npmjs.org/",
|
151
|
-
"access": "public"
|
152
|
-
"types": "./dist/types/index.d.ts"
|
151
|
+
"access": "public"
|
153
152
|
},
|
154
153
|
"wireit": {
|
155
154
|
"build": {
|