@tramvai/test-mocks 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.
@@ -0,0 +1,81 @@
1
+ import { __decorate } from 'tslib';
2
+ import { Module, provide, APP_INFO_TOKEN } from '@tramvai/core';
3
+ import { ENV_MANAGER_TOKEN, LOGGER_TOKEN, REQUEST_MANAGER_TOKEN, CREATE_CACHE_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
4
+ import { COOKIE_MANAGER_TOKEN } from '@tramvai/module-common';
5
+ import { createMockEnvManager } from './envManager.es.js';
6
+ import { createMockCookieManager } from './cookie.es.js';
7
+ import { createMockLogger } from './logger.es.js';
8
+ import { createMockAppInfo } from './appInfo.es.js';
9
+ import { createMockRequestManager } from './requestManager.es.js';
10
+ import { createMockCache } from './cache.es.js';
11
+ import { createMockContext } from './context.es.js';
12
+
13
+ var CommonTestModule_1;
14
+ let CommonTestModule = CommonTestModule_1 = class CommonTestModule {
15
+ static forRoot(options) {
16
+ const providers = [];
17
+ const { env, cookies, onCacheCreated } = options;
18
+ if (env) {
19
+ providers.push({
20
+ provide: ENV_MANAGER_TOKEN,
21
+ useValue: createMockEnvManager(env),
22
+ });
23
+ }
24
+ if (cookies) {
25
+ providers.push({
26
+ provide: COOKIE_MANAGER_TOKEN,
27
+ useValue: createMockCookieManager(cookies),
28
+ });
29
+ }
30
+ if (onCacheCreated) {
31
+ providers.push({
32
+ provide: CREATE_CACHE_TOKEN,
33
+ useValue: () => {
34
+ const cache = createMockCache();
35
+ onCacheCreated(cache);
36
+ return cache;
37
+ },
38
+ });
39
+ }
40
+ return {
41
+ providers,
42
+ mainModule: CommonTestModule_1,
43
+ };
44
+ }
45
+ };
46
+ CommonTestModule = CommonTestModule_1 = __decorate([
47
+ Module({
48
+ providers: [
49
+ provide({
50
+ provide: ENV_MANAGER_TOKEN,
51
+ useValue: createMockEnvManager(),
52
+ }),
53
+ provide({
54
+ provide: LOGGER_TOKEN,
55
+ useValue: createMockLogger(),
56
+ }),
57
+ provide({
58
+ provide: APP_INFO_TOKEN,
59
+ useValue: createMockAppInfo(),
60
+ }),
61
+ provide({
62
+ provide: REQUEST_MANAGER_TOKEN,
63
+ useValue: createMockRequestManager(),
64
+ }),
65
+ provide({
66
+ provide: CREATE_CACHE_TOKEN,
67
+ useValue: () => createMockCache(),
68
+ }),
69
+ provide({
70
+ provide: COOKIE_MANAGER_TOKEN,
71
+ useValue: createMockCookieManager(),
72
+ }),
73
+ provide({
74
+ provide: CONTEXT_TOKEN,
75
+ useValue: createMockContext(),
76
+ }),
77
+ ],
78
+ })
79
+ ], CommonTestModule);
80
+
81
+ export { CommonTestModule };
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var core = require('@tramvai/core');
7
+ var tokensCommon = require('@tramvai/tokens-common');
8
+ var moduleCommon = require('@tramvai/module-common');
9
+ var envManager = require('./envManager.js');
10
+ var cookie = require('./cookie.js');
11
+ var logger = require('./logger.js');
12
+ var appInfo = require('./appInfo.js');
13
+ var requestManager = require('./requestManager.js');
14
+ var cache = require('./cache.js');
15
+ var context = require('./context.js');
16
+
17
+ var CommonTestModule_1;
18
+ exports.CommonTestModule = CommonTestModule_1 = class CommonTestModule {
19
+ static forRoot(options) {
20
+ const providers = [];
21
+ const { env, cookies, onCacheCreated } = options;
22
+ if (env) {
23
+ providers.push({
24
+ provide: tokensCommon.ENV_MANAGER_TOKEN,
25
+ useValue: envManager.createMockEnvManager(env),
26
+ });
27
+ }
28
+ if (cookies) {
29
+ providers.push({
30
+ provide: moduleCommon.COOKIE_MANAGER_TOKEN,
31
+ useValue: cookie.createMockCookieManager(cookies),
32
+ });
33
+ }
34
+ if (onCacheCreated) {
35
+ providers.push({
36
+ provide: tokensCommon.CREATE_CACHE_TOKEN,
37
+ useValue: () => {
38
+ const cache$1 = cache.createMockCache();
39
+ onCacheCreated(cache$1);
40
+ return cache$1;
41
+ },
42
+ });
43
+ }
44
+ return {
45
+ providers,
46
+ mainModule: CommonTestModule_1,
47
+ };
48
+ }
49
+ };
50
+ exports.CommonTestModule = CommonTestModule_1 = tslib.__decorate([
51
+ core.Module({
52
+ providers: [
53
+ core.provide({
54
+ provide: tokensCommon.ENV_MANAGER_TOKEN,
55
+ useValue: envManager.createMockEnvManager(),
56
+ }),
57
+ core.provide({
58
+ provide: tokensCommon.LOGGER_TOKEN,
59
+ useValue: logger.createMockLogger(),
60
+ }),
61
+ core.provide({
62
+ provide: core.APP_INFO_TOKEN,
63
+ useValue: appInfo.createMockAppInfo(),
64
+ }),
65
+ core.provide({
66
+ provide: tokensCommon.REQUEST_MANAGER_TOKEN,
67
+ useValue: requestManager.createMockRequestManager(),
68
+ }),
69
+ core.provide({
70
+ provide: tokensCommon.CREATE_CACHE_TOKEN,
71
+ useValue: () => cache.createMockCache(),
72
+ }),
73
+ core.provide({
74
+ provide: moduleCommon.COOKIE_MANAGER_TOKEN,
75
+ useValue: cookie.createMockCookieManager(),
76
+ }),
77
+ core.provide({
78
+ provide: tokensCommon.CONTEXT_TOKEN,
79
+ useValue: context.createMockContext(),
80
+ }),
81
+ ],
82
+ })
83
+ ], exports.CommonTestModule);
@@ -0,0 +1,7 @@
1
+ const createMockAppInfo = ({ appName = 'test', } = {}) => {
2
+ return {
3
+ appName,
4
+ };
5
+ };
6
+
7
+ export { createMockAppInfo };
package/lib/appInfo.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const createMockAppInfo = ({ appName = 'test', } = {}) => {
6
+ return {
7
+ appName,
8
+ };
9
+ };
10
+
11
+ exports.createMockAppInfo = createMockAppInfo;
@@ -0,0 +1,18 @@
1
+ const createMockCache = (entries = {}) => {
2
+ let cache = { ...entries };
3
+ return {
4
+ has: (key) => !!cache[key],
5
+ get: (key) => cache[key],
6
+ set: (key, value) => {
7
+ cache[key] = value;
8
+ },
9
+ clear: () => {
10
+ cache = {};
11
+ },
12
+ // TODO: в @tinkoff/request- используются методы из lru-cache которых нету в Cache
13
+ // @ts-ignore
14
+ peek: (key) => cache[key],
15
+ };
16
+ };
17
+
18
+ export { createMockCache };
package/lib/cache.js ADDED
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const createMockCache = (entries = {}) => {
6
+ let cache = { ...entries };
7
+ return {
8
+ has: (key) => !!cache[key],
9
+ get: (key) => cache[key],
10
+ set: (key, value) => {
11
+ cache[key] = value;
12
+ },
13
+ clear: () => {
14
+ cache = {};
15
+ },
16
+ // TODO: в @tinkoff/request- используются методы из lru-cache которых нету в Cache
17
+ // @ts-ignore
18
+ peek: (key) => cache[key],
19
+ };
20
+ };
21
+
22
+ exports.createMockCache = createMockCache;
@@ -0,0 +1,62 @@
1
+ import { STORE_TOKEN, ACTION_EXECUTION_TOKEN, ACTION_CONDITIONALS, EXECUTION_CONTEXT_MANAGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
2
+ import { alwaysCondition, onlyServer, onlyBrowser, pageServer, pageBrowser, ExecutionContextManager, ActionExecution, createConsumerContext } from '@tramvai/module-common';
3
+ import { PubSub } from '@tinkoff/pubsub';
4
+ import { DI_TOKEN } from '@tinkoff/dippy';
5
+ import { createMockStore } from './store.es.js';
6
+ import { createMockDi } from './di.es.js';
7
+
8
+ /**
9
+ * Создаёт мок для consumerContext
10
+ *
11
+ * @param stores - список сторов, которые будут переданы в createMockStore если явно не передавать store
12
+ * @param initialState - начальное состояние, которое будет передано в createMockStore если явно не передавать store
13
+ * @param store - глобальный стор приложения, по умолчанию используется результат createMockStore
14
+ * @param providers - список провайдеров, которые будут переданы в createMockDi если явно не передавать di
15
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
16
+ * @param stores - di-контейнер, по умолчанию используется результат createMockDi
17
+ * @param useTramvaiActionsConditionals - добавляет встроенные в tramvai actions conditionals
18
+ */
19
+ const createMockContext = ({ stores, initialState, store = createMockStore({ stores, initialState }), providers, modules, di = createMockDi({ providers, modules }), useTramvaiActionsConditionals = false, } = {}) => {
20
+ const { __dispatcherContext__: dispatcherContext } = store; // хак для получения уже созданного dispatcherContext в сторе
21
+ const pubsub = new PubSub();
22
+ di.register({
23
+ provide: STORE_TOKEN,
24
+ useValue: store,
25
+ });
26
+ if (!di.get({ token: ACTION_EXECUTION_TOKEN, optional: true })) {
27
+ if (useTramvaiActionsConditionals) {
28
+ di.register({
29
+ provide: ACTION_CONDITIONALS,
30
+ multi: true,
31
+ useValue: [alwaysCondition, onlyServer, onlyBrowser, pageServer, pageBrowser],
32
+ });
33
+ }
34
+ di.register({
35
+ provide: EXECUTION_CONTEXT_MANAGER_TOKEN,
36
+ useClass: ExecutionContextManager,
37
+ });
38
+ di.register({
39
+ provide: ACTION_EXECUTION_TOKEN,
40
+ useClass: ActionExecution,
41
+ deps: {
42
+ actionConditionals: { token: ACTION_CONDITIONALS, optional: true },
43
+ context: CONTEXT_TOKEN,
44
+ store: STORE_TOKEN,
45
+ di: DI_TOKEN,
46
+ transformAction: {
47
+ token: 'actionTransformAction',
48
+ optional: true,
49
+ },
50
+ executionContextManager: EXECUTION_CONTEXT_MANAGER_TOKEN,
51
+ },
52
+ });
53
+ }
54
+ const context = createConsumerContext({ store, pubsub, di, dispatcherContext });
55
+ di.register({
56
+ provide: CONTEXT_TOKEN,
57
+ useValue: context,
58
+ });
59
+ return context;
60
+ };
61
+
62
+ export { createMockContext };
package/lib/context.js ADDED
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tokensCommon = require('@tramvai/tokens-common');
6
+ var moduleCommon = require('@tramvai/module-common');
7
+ var pubsub = require('@tinkoff/pubsub');
8
+ var dippy = require('@tinkoff/dippy');
9
+ var store = require('./store.js');
10
+ var di = require('./di.js');
11
+
12
+ /**
13
+ * Создаёт мок для consumerContext
14
+ *
15
+ * @param stores - список сторов, которые будут переданы в createMockStore если явно не передавать store
16
+ * @param initialState - начальное состояние, которое будет передано в createMockStore если явно не передавать store
17
+ * @param store - глобальный стор приложения, по умолчанию используется результат createMockStore
18
+ * @param providers - список провайдеров, которые будут переданы в createMockDi если явно не передавать di
19
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
20
+ * @param stores - di-контейнер, по умолчанию используется результат createMockDi
21
+ * @param useTramvaiActionsConditionals - добавляет встроенные в tramvai actions conditionals
22
+ */
23
+ const createMockContext = ({ stores, initialState, store: store$1 = store.createMockStore({ stores, initialState }), providers, modules, di: di$1 = di.createMockDi({ providers, modules }), useTramvaiActionsConditionals = false, } = {}) => {
24
+ const { __dispatcherContext__: dispatcherContext } = store$1; // хак для получения уже созданного dispatcherContext в сторе
25
+ const pubsub$1 = new pubsub.PubSub();
26
+ di$1.register({
27
+ provide: tokensCommon.STORE_TOKEN,
28
+ useValue: store$1,
29
+ });
30
+ if (!di$1.get({ token: tokensCommon.ACTION_EXECUTION_TOKEN, optional: true })) {
31
+ if (useTramvaiActionsConditionals) {
32
+ di$1.register({
33
+ provide: tokensCommon.ACTION_CONDITIONALS,
34
+ multi: true,
35
+ useValue: [moduleCommon.alwaysCondition, moduleCommon.onlyServer, moduleCommon.onlyBrowser, moduleCommon.pageServer, moduleCommon.pageBrowser],
36
+ });
37
+ }
38
+ di$1.register({
39
+ provide: tokensCommon.EXECUTION_CONTEXT_MANAGER_TOKEN,
40
+ useClass: moduleCommon.ExecutionContextManager,
41
+ });
42
+ di$1.register({
43
+ provide: tokensCommon.ACTION_EXECUTION_TOKEN,
44
+ useClass: moduleCommon.ActionExecution,
45
+ deps: {
46
+ actionConditionals: { token: tokensCommon.ACTION_CONDITIONALS, optional: true },
47
+ context: tokensCommon.CONTEXT_TOKEN,
48
+ store: tokensCommon.STORE_TOKEN,
49
+ di: dippy.DI_TOKEN,
50
+ transformAction: {
51
+ token: 'actionTransformAction',
52
+ optional: true,
53
+ },
54
+ executionContextManager: tokensCommon.EXECUTION_CONTEXT_MANAGER_TOKEN,
55
+ },
56
+ });
57
+ }
58
+ const context = moduleCommon.createConsumerContext({ store: store$1, pubsub: pubsub$1, di: di$1, dispatcherContext });
59
+ di$1.register({
60
+ provide: tokensCommon.CONTEXT_TOKEN,
61
+ useValue: context,
62
+ });
63
+ return context;
64
+ };
65
+
66
+ exports.createMockContext = createMockContext;
@@ -0,0 +1,19 @@
1
+ const createMockCookieManager = (entries = {}) => {
2
+ const cookies = { ...entries };
3
+ return {
4
+ get(name) {
5
+ return cookies[name];
6
+ },
7
+ set({ name, value }) {
8
+ cookies[name] = value;
9
+ },
10
+ all() {
11
+ return cookies;
12
+ },
13
+ remove(name) {
14
+ delete cookies[name];
15
+ },
16
+ };
17
+ };
18
+
19
+ export { createMockCookieManager };
package/lib/cookie.js ADDED
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const createMockCookieManager = (entries = {}) => {
6
+ const cookies = { ...entries };
7
+ return {
8
+ get(name) {
9
+ return cookies[name];
10
+ },
11
+ set({ name, value }) {
12
+ cookies[name] = value;
13
+ },
14
+ all() {
15
+ return cookies;
16
+ },
17
+ remove(name) {
18
+ delete cookies[name];
19
+ },
20
+ };
21
+ };
22
+
23
+ exports.createMockCookieManager = createMockCookieManager;
package/lib/di.es.js ADDED
@@ -0,0 +1,25 @@
1
+ import { createContainer } from '@tinkoff/dippy';
2
+ import { walkOfModules, getModuleParameters } from '@tramvai/core';
3
+
4
+ /**
5
+ * Создаёт di-сontainer
6
+ *
7
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
8
+ * @param providers - список провайдеров, которые будут добавлены в создаваемый di-контейнер
9
+ */
10
+ const createMockDi = ({ modules = [], providers = [] } = {}) => {
11
+ const di = createContainer();
12
+ const resolvedModules = walkOfModules(modules);
13
+ resolvedModules.forEach((mod) => {
14
+ const moduleParameters = getModuleParameters(mod);
15
+ moduleParameters.providers.forEach((provider) => {
16
+ di.register(provider);
17
+ });
18
+ });
19
+ if (providers) {
20
+ providers.forEach((provider) => di.register(provider));
21
+ }
22
+ return di;
23
+ };
24
+
25
+ export { createMockDi };
package/lib/di.js ADDED
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dippy = require('@tinkoff/dippy');
6
+ var core = require('@tramvai/core');
7
+
8
+ /**
9
+ * Создаёт di-сontainer
10
+ *
11
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
12
+ * @param providers - список провайдеров, которые будут добавлены в создаваемый di-контейнер
13
+ */
14
+ const createMockDi = ({ modules = [], providers = [] } = {}) => {
15
+ const di = dippy.createContainer();
16
+ const resolvedModules = core.walkOfModules(modules);
17
+ resolvedModules.forEach((mod) => {
18
+ const moduleParameters = core.getModuleParameters(mod);
19
+ moduleParameters.providers.forEach((provider) => {
20
+ di.register(provider);
21
+ });
22
+ });
23
+ if (providers) {
24
+ providers.forEach((provider) => di.register(provider));
25
+ }
26
+ return di;
27
+ };
28
+
29
+ exports.createMockDi = createMockDi;
@@ -0,0 +1,14 @@
1
+ import noop from '@tinkoff/utils/function/noop';
2
+
3
+ const createMockEnvManager = (env = {}) => {
4
+ return {
5
+ get: (name) => env[name],
6
+ getInt: (name, def) => { var _a; return (_a = parseInt(env[name], 10)) !== null && _a !== void 0 ? _a : def; },
7
+ getAll: () => env,
8
+ update: noop,
9
+ clientUsed: () => env,
10
+ updateClientUsed: noop,
11
+ };
12
+ };
13
+
14
+ export { createMockEnvManager };
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var noop = require('@tinkoff/utils/function/noop');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var noop__default = /*#__PURE__*/_interopDefaultLegacy(noop);
10
+
11
+ const createMockEnvManager = (env = {}) => {
12
+ return {
13
+ get: (name) => env[name],
14
+ getInt: (name, def) => { var _a; return (_a = parseInt(env[name], 10)) !== null && _a !== void 0 ? _a : def; },
15
+ getAll: () => env,
16
+ update: noop__default["default"],
17
+ clientUsed: () => env,
18
+ updateClientUsed: noop__default["default"],
19
+ };
20
+ };
21
+
22
+ exports.createMockEnvManager = createMockEnvManager;