@tramvai/test-unit 2.70.1 → 2.72.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/lib/app/createTestApp.es.js +81 -0
- package/lib/app/createTestApp.js +90 -0
- package/lib/app/testApp.es.js +31 -0
- package/lib/app/testApp.js +35 -0
- package/lib/index.es.js +5 -154
- package/lib/index.js +10 -160
- package/lib/module/testModule.es.js +21 -0
- package/lib/module/testModule.js +25 -0
- package/lib/state/testAction.es.js +18 -0
- package/lib/state/testAction.js +22 -0
- package/lib/state/testReducer.es.js +15 -0
- package/lib/state/testReducer.js +19 -0
- package/package.json +18 -19
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import mapObj from '@tinkoff/utils/object/map';
|
|
3
|
+
import values from '@tinkoff/utils/object/values';
|
|
4
|
+
import { Module, MODULE_PARAMETERS, createApp } from '@tramvai/core';
|
|
5
|
+
import { ENV_USED_TOKEN, CommonModule } from '@tramvai/module-common';
|
|
6
|
+
import { SpaRouterModule } from '@tramvai/module-router';
|
|
7
|
+
import { RenderModule } from '@tramvai/module-render';
|
|
8
|
+
import { ServerModule, SERVER_TOKEN } from '@tramvai/module-server';
|
|
9
|
+
import { LogModule } from '@tramvai/module-log';
|
|
10
|
+
import { MockerModule, MOCKER } from '@tramvai/module-mocker';
|
|
11
|
+
import { MetricsModule as MetricsModule$1 } from '@tramvai/module-metrics';
|
|
12
|
+
|
|
13
|
+
// create fake metrics module as we don't need it in tests
|
|
14
|
+
// but it causes some compatibility tests
|
|
15
|
+
let MetricsModule = class MetricsModule {
|
|
16
|
+
};
|
|
17
|
+
MetricsModule = __decorate([
|
|
18
|
+
Module({
|
|
19
|
+
providers: [],
|
|
20
|
+
})
|
|
21
|
+
], MetricsModule);
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
MetricsModule[MODULE_PARAMETERS].id = MetricsModule$1[MODULE_PARAMETERS].id;
|
|
24
|
+
/**
|
|
25
|
+
* Creates basic tramvai app for testing based on passed options
|
|
26
|
+
* By default next modules are added to app as they necessary for working app:
|
|
27
|
+
* - @tramvai/module-common
|
|
28
|
+
* - @tramvai/module-log
|
|
29
|
+
* - @tramvai/module-server
|
|
30
|
+
* - @tramvai/module-render
|
|
31
|
+
* - @tramvai/module-router
|
|
32
|
+
* @param. - options passed to createApp
|
|
33
|
+
* @param.env - environment variables
|
|
34
|
+
* @param.excludeDefaultModules - disable adding default modules
|
|
35
|
+
*/
|
|
36
|
+
const createTestApp = async ({ name = 'testApp', bundles = {}, providers = [], modules = [], actions = [], env = {}, excludeDefaultModules = false, } = {}) => {
|
|
37
|
+
const app = await createApp({
|
|
38
|
+
name,
|
|
39
|
+
bundles,
|
|
40
|
+
providers: [
|
|
41
|
+
...providers,
|
|
42
|
+
{
|
|
43
|
+
provide: ENV_USED_TOKEN,
|
|
44
|
+
multi: true,
|
|
45
|
+
useValue: [
|
|
46
|
+
{ key: 'FRONT_LOG_API', value: 'test' },
|
|
47
|
+
{ key: 'MOCKER_ENABLED', value: true },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
provide: ENV_USED_TOKEN,
|
|
52
|
+
multi: true,
|
|
53
|
+
useValue: values(mapObj((value, key) => {
|
|
54
|
+
return { key, value };
|
|
55
|
+
}, env)),
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
modules: excludeDefaultModules
|
|
59
|
+
? modules
|
|
60
|
+
: [
|
|
61
|
+
MetricsModule,
|
|
62
|
+
CommonModule,
|
|
63
|
+
LogModule,
|
|
64
|
+
SpaRouterModule,
|
|
65
|
+
RenderModule,
|
|
66
|
+
ServerModule,
|
|
67
|
+
MockerModule,
|
|
68
|
+
...modules,
|
|
69
|
+
],
|
|
70
|
+
actions,
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
app,
|
|
74
|
+
mocker: app.di.get({ token: MOCKER, optional: true }),
|
|
75
|
+
close: () => {
|
|
76
|
+
return app.di.get(SERVER_TOKEN).close();
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export { createTestApp };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var mapObj = require('@tinkoff/utils/object/map');
|
|
7
|
+
var values = require('@tinkoff/utils/object/values');
|
|
8
|
+
var core = require('@tramvai/core');
|
|
9
|
+
var moduleCommon = require('@tramvai/module-common');
|
|
10
|
+
var moduleRouter = require('@tramvai/module-router');
|
|
11
|
+
var moduleRender = require('@tramvai/module-render');
|
|
12
|
+
var moduleServer = require('@tramvai/module-server');
|
|
13
|
+
var moduleLog = require('@tramvai/module-log');
|
|
14
|
+
var moduleMocker = require('@tramvai/module-mocker');
|
|
15
|
+
var moduleMetrics = require('@tramvai/module-metrics');
|
|
16
|
+
|
|
17
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
18
|
+
|
|
19
|
+
var mapObj__default = /*#__PURE__*/_interopDefaultLegacy(mapObj);
|
|
20
|
+
var values__default = /*#__PURE__*/_interopDefaultLegacy(values);
|
|
21
|
+
|
|
22
|
+
// create fake metrics module as we don't need it in tests
|
|
23
|
+
// but it causes some compatibility tests
|
|
24
|
+
let MetricsModule = class MetricsModule {
|
|
25
|
+
};
|
|
26
|
+
MetricsModule = tslib.__decorate([
|
|
27
|
+
core.Module({
|
|
28
|
+
providers: [],
|
|
29
|
+
})
|
|
30
|
+
], MetricsModule);
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
MetricsModule[core.MODULE_PARAMETERS].id = moduleMetrics.MetricsModule[core.MODULE_PARAMETERS].id;
|
|
33
|
+
/**
|
|
34
|
+
* Creates basic tramvai app for testing based on passed options
|
|
35
|
+
* By default next modules are added to app as they necessary for working app:
|
|
36
|
+
* - @tramvai/module-common
|
|
37
|
+
* - @tramvai/module-log
|
|
38
|
+
* - @tramvai/module-server
|
|
39
|
+
* - @tramvai/module-render
|
|
40
|
+
* - @tramvai/module-router
|
|
41
|
+
* @param. - options passed to createApp
|
|
42
|
+
* @param.env - environment variables
|
|
43
|
+
* @param.excludeDefaultModules - disable adding default modules
|
|
44
|
+
*/
|
|
45
|
+
const createTestApp = async ({ name = 'testApp', bundles = {}, providers = [], modules = [], actions = [], env = {}, excludeDefaultModules = false, } = {}) => {
|
|
46
|
+
const app = await core.createApp({
|
|
47
|
+
name,
|
|
48
|
+
bundles,
|
|
49
|
+
providers: [
|
|
50
|
+
...providers,
|
|
51
|
+
{
|
|
52
|
+
provide: moduleCommon.ENV_USED_TOKEN,
|
|
53
|
+
multi: true,
|
|
54
|
+
useValue: [
|
|
55
|
+
{ key: 'FRONT_LOG_API', value: 'test' },
|
|
56
|
+
{ key: 'MOCKER_ENABLED', value: true },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
provide: moduleCommon.ENV_USED_TOKEN,
|
|
61
|
+
multi: true,
|
|
62
|
+
useValue: values__default["default"](mapObj__default["default"]((value, key) => {
|
|
63
|
+
return { key, value };
|
|
64
|
+
}, env)),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
modules: excludeDefaultModules
|
|
68
|
+
? modules
|
|
69
|
+
: [
|
|
70
|
+
MetricsModule,
|
|
71
|
+
moduleCommon.CommonModule,
|
|
72
|
+
moduleLog.LogModule,
|
|
73
|
+
moduleRouter.SpaRouterModule,
|
|
74
|
+
moduleRender.RenderModule,
|
|
75
|
+
moduleServer.ServerModule,
|
|
76
|
+
moduleMocker.MockerModule,
|
|
77
|
+
...modules,
|
|
78
|
+
],
|
|
79
|
+
actions,
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
app,
|
|
83
|
+
mocker: app.di.get({ token: moduleMocker.MOCKER, optional: true }),
|
|
84
|
+
close: () => {
|
|
85
|
+
return app.di.get(moduleServer.SERVER_TOKEN).close();
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
exports.createTestApp = createTestApp;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getModuleParameters } from '@tramvai/core';
|
|
2
|
+
import { SERVER_TOKEN } from '@tramvai/tokens-server';
|
|
3
|
+
import { WEB_FASTIFY_APP_TOKEN } from '@tramvai/tokens-server-private';
|
|
4
|
+
import { MockerModule, MOCKER } from '@tramvai/module-mocker';
|
|
5
|
+
import { requestFactory, renderFactory } from '@tramvai/test-helpers';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Позволяет протестировать уже созданное через createApp приложение
|
|
9
|
+
* @param appOrAppPromise результат вызова createApp
|
|
10
|
+
* @deprecated используйте `startCli` метод из пакета `@tramvai/test-integration` для полноценного тестирования приложения
|
|
11
|
+
*/
|
|
12
|
+
const testApp = async (appOrAppPromise) => {
|
|
13
|
+
const app = await appOrAppPromise;
|
|
14
|
+
const request = requestFactory(app.di.get(WEB_FASTIFY_APP_TOKEN));
|
|
15
|
+
const mockerModule = getModuleParameters(MockerModule);
|
|
16
|
+
mockerModule.providers.forEach((provider) => {
|
|
17
|
+
app.di.register(provider);
|
|
18
|
+
});
|
|
19
|
+
const render = renderFactory(request);
|
|
20
|
+
return {
|
|
21
|
+
app,
|
|
22
|
+
request,
|
|
23
|
+
render,
|
|
24
|
+
mocker: app.di.get({ token: MOCKER, optional: true }),
|
|
25
|
+
close: () => {
|
|
26
|
+
return app.di.get(SERVER_TOKEN).close();
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { testApp };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@tramvai/core');
|
|
6
|
+
var tokensServer = require('@tramvai/tokens-server');
|
|
7
|
+
var tokensServerPrivate = require('@tramvai/tokens-server-private');
|
|
8
|
+
var moduleMocker = require('@tramvai/module-mocker');
|
|
9
|
+
var testHelpers = require('@tramvai/test-helpers');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Позволяет протестировать уже созданное через createApp приложение
|
|
13
|
+
* @param appOrAppPromise результат вызова createApp
|
|
14
|
+
* @deprecated используйте `startCli` метод из пакета `@tramvai/test-integration` для полноценного тестирования приложения
|
|
15
|
+
*/
|
|
16
|
+
const testApp = async (appOrAppPromise) => {
|
|
17
|
+
const app = await appOrAppPromise;
|
|
18
|
+
const request = testHelpers.requestFactory(app.di.get(tokensServerPrivate.WEB_FASTIFY_APP_TOKEN));
|
|
19
|
+
const mockerModule = core.getModuleParameters(moduleMocker.MockerModule);
|
|
20
|
+
mockerModule.providers.forEach((provider) => {
|
|
21
|
+
app.di.register(provider);
|
|
22
|
+
});
|
|
23
|
+
const render = testHelpers.renderFactory(request);
|
|
24
|
+
return {
|
|
25
|
+
app,
|
|
26
|
+
request,
|
|
27
|
+
render,
|
|
28
|
+
mocker: app.di.get({ token: moduleMocker.MOCKER, optional: true }),
|
|
29
|
+
close: () => {
|
|
30
|
+
return app.di.get(tokensServer.SERVER_TOKEN).close();
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.testApp = testApp;
|
package/lib/index.es.js
CHANGED
|
@@ -1,154 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import mapObj from '@tinkoff/utils/object/map';
|
|
7
|
-
import values from '@tinkoff/utils/object/values';
|
|
8
|
-
import { ENV_USED_TOKEN, CommonModule } from '@tramvai/module-common';
|
|
9
|
-
import { SpaRouterModule } from '@tramvai/module-router';
|
|
10
|
-
import { RenderModule } from '@tramvai/module-render';
|
|
11
|
-
import { ServerModule, SERVER_TOKEN } from '@tramvai/module-server';
|
|
12
|
-
import { LogModule } from '@tramvai/module-log';
|
|
13
|
-
import { MockerModule, MOCKER } from '@tramvai/module-mocker';
|
|
14
|
-
import { MetricsModule as MetricsModule$1 } from '@tramvai/module-metrics';
|
|
15
|
-
import { SERVER_TOKEN as SERVER_TOKEN$1 } from '@tramvai/tokens-server';
|
|
16
|
-
import { WEB_FASTIFY_APP_TOKEN } from '@tramvai/tokens-server-private';
|
|
17
|
-
|
|
18
|
-
function testAction(action, { initialState, providers, modules, di, store, stores, context = createMockContext({ initialState, di, providers, modules, store, stores }), } = {}) {
|
|
19
|
-
return {
|
|
20
|
-
/**
|
|
21
|
-
* @description
|
|
22
|
-
* Run action
|
|
23
|
-
* @param payload
|
|
24
|
-
* @returns
|
|
25
|
-
*/
|
|
26
|
-
run: (payload) => {
|
|
27
|
-
return context.executeAction(action, payload);
|
|
28
|
-
},
|
|
29
|
-
context,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Helper for testing Reducer
|
|
35
|
-
* @param reducer
|
|
36
|
-
*/
|
|
37
|
-
const testReducer = (reducer) => {
|
|
38
|
-
const dispatcherContext = createDispatcher({ stores: [reducer] }).createContext(null, {});
|
|
39
|
-
return {
|
|
40
|
-
dispatch: dispatcherContext.dispatch.bind(dispatcherContext),
|
|
41
|
-
getState: () => dispatcherContext.getState(reducer),
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Helper for testing tramvai module
|
|
47
|
-
* @param Module module itself
|
|
48
|
-
* @param params parameters for helper createMockDi or instance of DI-container
|
|
49
|
-
* @param modules additional modules required for test module
|
|
50
|
-
*/
|
|
51
|
-
const testModule = (Module, { modules = [], providers, di } = {}) => {
|
|
52
|
-
const wrappedDi = getDiWrapper({ providers, modules: [...modules, Module], di });
|
|
53
|
-
const { deps } = getModuleParameters(Module);
|
|
54
|
-
const ModuleConstructor = isExtendedModule(Module) ? Module.mainModule : Module;
|
|
55
|
-
const module = new ModuleConstructor(deps ? wrappedDi.di.getOfDeps(deps) : undefined);
|
|
56
|
-
return {
|
|
57
|
-
...wrappedDi,
|
|
58
|
-
module,
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// create fake metrics module as we don't need it in tests
|
|
63
|
-
// but it causes some compatibility tests
|
|
64
|
-
let MetricsModule = class MetricsModule {
|
|
65
|
-
};
|
|
66
|
-
MetricsModule = __decorate([
|
|
67
|
-
Module({
|
|
68
|
-
providers: [],
|
|
69
|
-
})
|
|
70
|
-
], MetricsModule);
|
|
71
|
-
// @ts-ignore
|
|
72
|
-
MetricsModule[MODULE_PARAMETERS].id = MetricsModule$1[MODULE_PARAMETERS].id;
|
|
73
|
-
/**
|
|
74
|
-
* Creates basic tramvai app for testing based on passed options
|
|
75
|
-
* By default next modules are added to app as they necessary for working app:
|
|
76
|
-
* - @tramvai/module-common
|
|
77
|
-
* - @tramvai/module-log
|
|
78
|
-
* - @tramvai/module-server
|
|
79
|
-
* - @tramvai/module-render
|
|
80
|
-
* - @tramvai/module-router
|
|
81
|
-
* @param. - options passed to createApp
|
|
82
|
-
* @param.env - environment variables
|
|
83
|
-
* @param.excludeDefaultModules - disable adding default modules
|
|
84
|
-
*/
|
|
85
|
-
const createTestApp = async ({ name = 'testApp', bundles = {}, providers = [], modules = [], actions = [], env = {}, excludeDefaultModules = false, } = {}) => {
|
|
86
|
-
const app = await createApp({
|
|
87
|
-
name,
|
|
88
|
-
bundles,
|
|
89
|
-
providers: [
|
|
90
|
-
...providers,
|
|
91
|
-
{
|
|
92
|
-
provide: ENV_USED_TOKEN,
|
|
93
|
-
multi: true,
|
|
94
|
-
useValue: [
|
|
95
|
-
{ key: 'FRONT_LOG_API', value: 'test' },
|
|
96
|
-
{ key: 'MOCKER_ENABLED', value: true },
|
|
97
|
-
],
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
provide: ENV_USED_TOKEN,
|
|
101
|
-
multi: true,
|
|
102
|
-
useValue: values(mapObj((value, key) => {
|
|
103
|
-
return { key, value };
|
|
104
|
-
}, env)),
|
|
105
|
-
},
|
|
106
|
-
],
|
|
107
|
-
modules: excludeDefaultModules
|
|
108
|
-
? modules
|
|
109
|
-
: [
|
|
110
|
-
MetricsModule,
|
|
111
|
-
CommonModule,
|
|
112
|
-
LogModule,
|
|
113
|
-
SpaRouterModule,
|
|
114
|
-
RenderModule,
|
|
115
|
-
ServerModule,
|
|
116
|
-
MockerModule,
|
|
117
|
-
...modules,
|
|
118
|
-
],
|
|
119
|
-
actions,
|
|
120
|
-
});
|
|
121
|
-
return {
|
|
122
|
-
app,
|
|
123
|
-
mocker: app.di.get({ token: MOCKER, optional: true }),
|
|
124
|
-
close: () => {
|
|
125
|
-
return app.di.get(SERVER_TOKEN).close();
|
|
126
|
-
},
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Позволяет протестировать уже созданное через createApp приложение
|
|
132
|
-
* @param appOrAppPromise результат вызова createApp
|
|
133
|
-
* @deprecated используйте `startCli` метод из пакета `@tramvai/test-integration` для полноценного тестирования приложения
|
|
134
|
-
*/
|
|
135
|
-
const testApp = async (appOrAppPromise) => {
|
|
136
|
-
const app = await appOrAppPromise;
|
|
137
|
-
const request = requestFactory(app.di.get(WEB_FASTIFY_APP_TOKEN));
|
|
138
|
-
const mockerModule = getModuleParameters(MockerModule);
|
|
139
|
-
mockerModule.providers.forEach((provider) => {
|
|
140
|
-
app.di.register(provider);
|
|
141
|
-
});
|
|
142
|
-
const render = renderFactory(request);
|
|
143
|
-
return {
|
|
144
|
-
app,
|
|
145
|
-
request,
|
|
146
|
-
render,
|
|
147
|
-
mocker: app.di.get({ token: MOCKER, optional: true }),
|
|
148
|
-
close: () => {
|
|
149
|
-
return app.di.get(SERVER_TOKEN$1).close();
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
export { createTestApp, testAction, testApp, testModule, testReducer };
|
|
1
|
+
export { testAction } from './state/testAction.es.js';
|
|
2
|
+
export { testReducer } from './state/testReducer.es.js';
|
|
3
|
+
export { testModule } from './module/testModule.es.js';
|
|
4
|
+
export { createTestApp } from './app/createTestApp.es.js';
|
|
5
|
+
export { testApp } from './app/testApp.es.js';
|
package/lib/index.js
CHANGED
|
@@ -2,166 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var mapObj = require('@tinkoff/utils/object/map');
|
|
11
|
-
var values = require('@tinkoff/utils/object/values');
|
|
12
|
-
var moduleCommon = require('@tramvai/module-common');
|
|
13
|
-
var moduleRouter = require('@tramvai/module-router');
|
|
14
|
-
var moduleRender = require('@tramvai/module-render');
|
|
15
|
-
var moduleServer = require('@tramvai/module-server');
|
|
16
|
-
var moduleLog = require('@tramvai/module-log');
|
|
17
|
-
var moduleMocker = require('@tramvai/module-mocker');
|
|
18
|
-
var moduleMetrics = require('@tramvai/module-metrics');
|
|
19
|
-
var tokensServer = require('@tramvai/tokens-server');
|
|
20
|
-
var tokensServerPrivate = require('@tramvai/tokens-server-private');
|
|
5
|
+
var testAction = require('./state/testAction.js');
|
|
6
|
+
var testReducer = require('./state/testReducer.js');
|
|
7
|
+
var testModule = require('./module/testModule.js');
|
|
8
|
+
var createTestApp = require('./app/createTestApp.js');
|
|
9
|
+
var testApp = require('./app/testApp.js');
|
|
21
10
|
|
|
22
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
11
|
|
|
24
|
-
var mapObj__default = /*#__PURE__*/_interopDefaultLegacy(mapObj);
|
|
25
|
-
var values__default = /*#__PURE__*/_interopDefaultLegacy(values);
|
|
26
12
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* @param payload
|
|
33
|
-
* @returns
|
|
34
|
-
*/
|
|
35
|
-
run: (payload) => {
|
|
36
|
-
return context.executeAction(action, payload);
|
|
37
|
-
},
|
|
38
|
-
context,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Helper for testing Reducer
|
|
44
|
-
* @param reducer
|
|
45
|
-
*/
|
|
46
|
-
const testReducer = (reducer) => {
|
|
47
|
-
const dispatcherContext = state.createDispatcher({ stores: [reducer] }).createContext(null, {});
|
|
48
|
-
return {
|
|
49
|
-
dispatch: dispatcherContext.dispatch.bind(dispatcherContext),
|
|
50
|
-
getState: () => dispatcherContext.getState(reducer),
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Helper for testing tramvai module
|
|
56
|
-
* @param Module module itself
|
|
57
|
-
* @param params parameters for helper createMockDi or instance of DI-container
|
|
58
|
-
* @param modules additional modules required for test module
|
|
59
|
-
*/
|
|
60
|
-
const testModule = (Module, { modules = [], providers, di } = {}) => {
|
|
61
|
-
const wrappedDi = testHelpers.getDiWrapper({ providers, modules: [...modules, Module], di });
|
|
62
|
-
const { deps } = core.getModuleParameters(Module);
|
|
63
|
-
const ModuleConstructor = core.isExtendedModule(Module) ? Module.mainModule : Module;
|
|
64
|
-
const module = new ModuleConstructor(deps ? wrappedDi.di.getOfDeps(deps) : undefined);
|
|
65
|
-
return {
|
|
66
|
-
...wrappedDi,
|
|
67
|
-
module,
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
// create fake metrics module as we don't need it in tests
|
|
72
|
-
// but it causes some compatibility tests
|
|
73
|
-
let MetricsModule = class MetricsModule {
|
|
74
|
-
};
|
|
75
|
-
MetricsModule = tslib.__decorate([
|
|
76
|
-
core.Module({
|
|
77
|
-
providers: [],
|
|
78
|
-
})
|
|
79
|
-
], MetricsModule);
|
|
80
|
-
// @ts-ignore
|
|
81
|
-
MetricsModule[core.MODULE_PARAMETERS].id = moduleMetrics.MetricsModule[core.MODULE_PARAMETERS].id;
|
|
82
|
-
/**
|
|
83
|
-
* Creates basic tramvai app for testing based on passed options
|
|
84
|
-
* By default next modules are added to app as they necessary for working app:
|
|
85
|
-
* - @tramvai/module-common
|
|
86
|
-
* - @tramvai/module-log
|
|
87
|
-
* - @tramvai/module-server
|
|
88
|
-
* - @tramvai/module-render
|
|
89
|
-
* - @tramvai/module-router
|
|
90
|
-
* @param. - options passed to createApp
|
|
91
|
-
* @param.env - environment variables
|
|
92
|
-
* @param.excludeDefaultModules - disable adding default modules
|
|
93
|
-
*/
|
|
94
|
-
const createTestApp = async ({ name = 'testApp', bundles = {}, providers = [], modules = [], actions = [], env = {}, excludeDefaultModules = false, } = {}) => {
|
|
95
|
-
const app = await core.createApp({
|
|
96
|
-
name,
|
|
97
|
-
bundles,
|
|
98
|
-
providers: [
|
|
99
|
-
...providers,
|
|
100
|
-
{
|
|
101
|
-
provide: moduleCommon.ENV_USED_TOKEN,
|
|
102
|
-
multi: true,
|
|
103
|
-
useValue: [
|
|
104
|
-
{ key: 'FRONT_LOG_API', value: 'test' },
|
|
105
|
-
{ key: 'MOCKER_ENABLED', value: true },
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
provide: moduleCommon.ENV_USED_TOKEN,
|
|
110
|
-
multi: true,
|
|
111
|
-
useValue: values__default["default"](mapObj__default["default"]((value, key) => {
|
|
112
|
-
return { key, value };
|
|
113
|
-
}, env)),
|
|
114
|
-
},
|
|
115
|
-
],
|
|
116
|
-
modules: excludeDefaultModules
|
|
117
|
-
? modules
|
|
118
|
-
: [
|
|
119
|
-
MetricsModule,
|
|
120
|
-
moduleCommon.CommonModule,
|
|
121
|
-
moduleLog.LogModule,
|
|
122
|
-
moduleRouter.SpaRouterModule,
|
|
123
|
-
moduleRender.RenderModule,
|
|
124
|
-
moduleServer.ServerModule,
|
|
125
|
-
moduleMocker.MockerModule,
|
|
126
|
-
...modules,
|
|
127
|
-
],
|
|
128
|
-
actions,
|
|
129
|
-
});
|
|
130
|
-
return {
|
|
131
|
-
app,
|
|
132
|
-
mocker: app.di.get({ token: moduleMocker.MOCKER, optional: true }),
|
|
133
|
-
close: () => {
|
|
134
|
-
return app.di.get(moduleServer.SERVER_TOKEN).close();
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Позволяет протестировать уже созданное через createApp приложение
|
|
141
|
-
* @param appOrAppPromise результат вызова createApp
|
|
142
|
-
* @deprecated используйте `startCli` метод из пакета `@tramvai/test-integration` для полноценного тестирования приложения
|
|
143
|
-
*/
|
|
144
|
-
const testApp = async (appOrAppPromise) => {
|
|
145
|
-
const app = await appOrAppPromise;
|
|
146
|
-
const request = testHelpers.requestFactory(app.di.get(tokensServerPrivate.WEB_FASTIFY_APP_TOKEN));
|
|
147
|
-
const mockerModule = core.getModuleParameters(moduleMocker.MockerModule);
|
|
148
|
-
mockerModule.providers.forEach((provider) => {
|
|
149
|
-
app.di.register(provider);
|
|
150
|
-
});
|
|
151
|
-
const render = testHelpers.renderFactory(request);
|
|
152
|
-
return {
|
|
153
|
-
app,
|
|
154
|
-
request,
|
|
155
|
-
render,
|
|
156
|
-
mocker: app.di.get({ token: moduleMocker.MOCKER, optional: true }),
|
|
157
|
-
close: () => {
|
|
158
|
-
return app.di.get(tokensServer.SERVER_TOKEN).close();
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
exports.createTestApp = createTestApp;
|
|
164
|
-
exports.testAction = testAction;
|
|
165
|
-
exports.testApp = testApp;
|
|
166
|
-
exports.testModule = testModule;
|
|
167
|
-
exports.testReducer = testReducer;
|
|
13
|
+
exports.testAction = testAction.testAction;
|
|
14
|
+
exports.testReducer = testReducer.testReducer;
|
|
15
|
+
exports.testModule = testModule.testModule;
|
|
16
|
+
exports.createTestApp = createTestApp.createTestApp;
|
|
17
|
+
exports.testApp = testApp.testApp;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getModuleParameters, isExtendedModule } from '@tramvai/core';
|
|
2
|
+
import { getDiWrapper } from '@tramvai/test-helpers';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Helper for testing tramvai module
|
|
6
|
+
* @param Module module itself
|
|
7
|
+
* @param params parameters for helper createMockDi or instance of DI-container
|
|
8
|
+
* @param modules additional modules required for test module
|
|
9
|
+
*/
|
|
10
|
+
const testModule = (Module, { modules = [], providers, di } = {}) => {
|
|
11
|
+
const wrappedDi = getDiWrapper({ providers, modules: [...modules, Module], di });
|
|
12
|
+
const { deps } = getModuleParameters(Module);
|
|
13
|
+
const ModuleConstructor = isExtendedModule(Module) ? Module.mainModule : Module;
|
|
14
|
+
const module = new ModuleConstructor(deps ? wrappedDi.di.getOfDeps(deps) : undefined);
|
|
15
|
+
return {
|
|
16
|
+
...wrappedDi,
|
|
17
|
+
module,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { testModule };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@tramvai/core');
|
|
6
|
+
var testHelpers = require('@tramvai/test-helpers');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Helper for testing tramvai module
|
|
10
|
+
* @param Module module itself
|
|
11
|
+
* @param params parameters for helper createMockDi or instance of DI-container
|
|
12
|
+
* @param modules additional modules required for test module
|
|
13
|
+
*/
|
|
14
|
+
const testModule = (Module, { modules = [], providers, di } = {}) => {
|
|
15
|
+
const wrappedDi = testHelpers.getDiWrapper({ providers, modules: [...modules, Module], di });
|
|
16
|
+
const { deps } = core.getModuleParameters(Module);
|
|
17
|
+
const ModuleConstructor = core.isExtendedModule(Module) ? Module.mainModule : Module;
|
|
18
|
+
const module = new ModuleConstructor(deps ? wrappedDi.di.getOfDeps(deps) : undefined);
|
|
19
|
+
return {
|
|
20
|
+
...wrappedDi,
|
|
21
|
+
module,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.testModule = testModule;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createMockContext } from '@tramvai/test-mocks';
|
|
2
|
+
|
|
3
|
+
function testAction(action, { initialState, providers, modules, di, store, stores, context = createMockContext({ initialState, di, providers, modules, store, stores }), } = {}) {
|
|
4
|
+
return {
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
* Run action
|
|
8
|
+
* @param payload
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
run: (payload) => {
|
|
12
|
+
return context.executeAction(action, payload);
|
|
13
|
+
},
|
|
14
|
+
context,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { testAction };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var testMocks = require('@tramvai/test-mocks');
|
|
6
|
+
|
|
7
|
+
function testAction(action, { initialState, providers, modules, di, store, stores, context = testMocks.createMockContext({ initialState, di, providers, modules, store, stores }), } = {}) {
|
|
8
|
+
return {
|
|
9
|
+
/**
|
|
10
|
+
* @description
|
|
11
|
+
* Run action
|
|
12
|
+
* @param payload
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
run: (payload) => {
|
|
16
|
+
return context.executeAction(action, payload);
|
|
17
|
+
},
|
|
18
|
+
context,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.testAction = testAction;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createDispatcher } from '@tramvai/state';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Helper for testing Reducer
|
|
5
|
+
* @param reducer
|
|
6
|
+
*/
|
|
7
|
+
const testReducer = (reducer) => {
|
|
8
|
+
const dispatcherContext = createDispatcher({ stores: [reducer] }).createContext(null, {});
|
|
9
|
+
return {
|
|
10
|
+
dispatch: dispatcherContext.dispatch.bind(dispatcherContext),
|
|
11
|
+
getState: () => dispatcherContext.getState(reducer),
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { testReducer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var state = require('@tramvai/state');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Helper for testing Reducer
|
|
9
|
+
* @param reducer
|
|
10
|
+
*/
|
|
11
|
+
const testReducer = (reducer) => {
|
|
12
|
+
const dispatcherContext = state.createDispatcher({ stores: [reducer] }).createContext(null, {});
|
|
13
|
+
return {
|
|
14
|
+
dispatch: dispatcherContext.dispatch.bind(dispatcherContext),
|
|
15
|
+
getState: () => dispatcherContext.getState(reducer),
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.testReducer = testReducer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/test-unit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.72.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -13,26 +13,25 @@
|
|
|
13
13
|
"url": "git@github.com:Tinkoff/tramvai.git"
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
|
-
"build": "tramvai-build --
|
|
17
|
-
"watch": "tsc -w"
|
|
18
|
-
"build-for-publish": "true"
|
|
16
|
+
"build": "tramvai-build --forPublish --preserveModules",
|
|
17
|
+
"watch": "tsc -w"
|
|
19
18
|
},
|
|
20
19
|
"dependencies": {
|
|
21
|
-
"@tramvai/cli": "2.
|
|
22
|
-
"@tramvai/core": "2.
|
|
23
|
-
"@tramvai/module-common": "2.
|
|
24
|
-
"@tramvai/module-log": "2.
|
|
25
|
-
"@tramvai/module-metrics": "2.
|
|
26
|
-
"@tramvai/module-mocker": "2.
|
|
27
|
-
"@tramvai/module-render": "2.
|
|
28
|
-
"@tramvai/module-router": "2.
|
|
29
|
-
"@tramvai/module-server": "2.
|
|
30
|
-
"@tramvai/state": "2.
|
|
31
|
-
"@tramvai/test-helpers": "2.
|
|
32
|
-
"@tramvai/test-mocks": "2.
|
|
33
|
-
"@tramvai/tokens-common": "2.
|
|
34
|
-
"@tramvai/tokens-server": "2.
|
|
35
|
-
"@tramvai/tokens-server-private": "2.
|
|
20
|
+
"@tramvai/cli": "2.72.0",
|
|
21
|
+
"@tramvai/core": "2.72.0",
|
|
22
|
+
"@tramvai/module-common": "2.72.0",
|
|
23
|
+
"@tramvai/module-log": "2.72.0",
|
|
24
|
+
"@tramvai/module-metrics": "2.72.0",
|
|
25
|
+
"@tramvai/module-mocker": "2.72.0",
|
|
26
|
+
"@tramvai/module-render": "2.72.0",
|
|
27
|
+
"@tramvai/module-router": "2.72.0",
|
|
28
|
+
"@tramvai/module-server": "2.72.0",
|
|
29
|
+
"@tramvai/state": "2.72.0",
|
|
30
|
+
"@tramvai/test-helpers": "2.72.0",
|
|
31
|
+
"@tramvai/test-mocks": "2.72.0",
|
|
32
|
+
"@tramvai/tokens-common": "2.72.0",
|
|
33
|
+
"@tramvai/tokens-server": "2.72.0",
|
|
34
|
+
"@tramvai/tokens-server-private": "2.72.0",
|
|
36
35
|
"utility-types": "^3.10.0"
|
|
37
36
|
},
|
|
38
37
|
"peerDependencies": {
|