@tramvai/test-mocks 1.95.0 → 1.95.1

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/context.d.ts CHANGED
@@ -7,6 +7,7 @@ declare type OptionsStore = Parameters<typeof createMockStore>[0];
7
7
  declare type Options = OptionsDi & OptionsStore & {
8
8
  store?: typeof STORE_TOKEN;
9
9
  di?: Container;
10
+ useTramvaiActionsConditionals?: boolean;
10
11
  };
11
12
  /**
12
13
  * Создаёт мок для consumerContext
@@ -16,6 +17,7 @@ declare type Options = OptionsDi & OptionsStore & {
16
17
  * @param store - глобальный стор приложения, по умолчанию используется результат createMockStore
17
18
  * @param providers - список провайдеров, которые будут переданы в createMockDi если явно не передавать di
18
19
  * @param stores - di-контейнер, по умолчанию используется результат createMockDi
20
+ * @param useTramvaiActionsConditionals - добавляет встроенные в tramvai actions conditionals
19
21
  */
20
- export declare const createMockContext: ({ stores, initialState, store, providers, di, }?: Options) => typeof CONTEXT_TOKEN;
22
+ export declare const createMockContext: ({ stores, initialState, store, providers, di, useTramvaiActionsConditionals, }?: Options) => typeof CONTEXT_TOKEN;
21
23
  export {};
package/lib/di.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  import type { Provider } from '@tinkoff/dippy';
2
+ import type { ExtendedModule, ModuleType } from '@tramvai/core';
2
3
  interface Options {
4
+ modules?: Array<ModuleType | ExtendedModule>;
3
5
  providers?: Provider[];
4
6
  }
5
7
  /**
6
8
  * Создаёт di-сontainer
7
9
  *
10
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
8
11
  * @param providers - список провайдеров, которые будут добавлены в создаваемый di-контейнер
9
12
  */
10
- export declare const createMockDi: ({ providers }?: Options) => import("@tinkoff/dippy").Container;
13
+ export declare const createMockDi: ({ modules, providers }?: Options) => import("@tinkoff/dippy").Container;
11
14
  export {};
package/lib/index.es.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { STORE_TOKEN, ACTION_EXECUTION_TOKEN, ACTION_CONDITIONALS, CONTEXT_TOKEN } from '@tramvai/tokens-common';
2
- import { ActionExecution, createConsumerContext } from '@tramvai/module-common';
2
+ import { alwaysCondition, onlyServer, onlyBrowser, pageServer, pageBrowser, ActionExecution, createConsumerContext } from '@tramvai/module-common';
3
3
  import { PubSub } from '@tinkoff/pubsub';
4
4
  import { createContainer, DI_TOKEN } from '@tinkoff/dippy';
5
5
  import keys from '@tinkoff/utils/object/keys';
6
6
  import difference from '@tinkoff/utils/array/difference';
7
7
  import { createReducer, createDispatcher } from '@tramvai/state';
8
+ import { walkOfModules, getModuleParameters } from '@tramvai/core';
8
9
  import { AbstractRouter } from '@tinkoff/router';
9
10
  import { parse } from '@tinkoff/url';
10
11
  import noop from '@tinkoff/utils/function/noop';
@@ -39,10 +40,22 @@ const createMockStore = ({ stores = [], initialState = {}, } = {}) => {
39
40
  /**
40
41
  * Создаёт di-сontainer
41
42
  *
43
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
42
44
  * @param providers - список провайдеров, которые будут добавлены в создаваемый di-контейнер
43
45
  */
44
- const createMockDi = ({ providers = [] } = {}) => {
45
- return createContainer(providers);
46
+ const createMockDi = ({ modules = [], providers = [] } = {}) => {
47
+ const di = createContainer();
48
+ const resolvedModules = walkOfModules(modules);
49
+ resolvedModules.forEach((mod) => {
50
+ const moduleParameters = getModuleParameters(mod);
51
+ moduleParameters.providers.forEach((provider) => {
52
+ di.register(provider);
53
+ });
54
+ });
55
+ if (providers) {
56
+ providers.forEach((provider) => di.register(provider));
57
+ }
58
+ return di;
46
59
  };
47
60
 
48
61
  /**
@@ -53,8 +66,9 @@ const createMockDi = ({ providers = [] } = {}) => {
53
66
  * @param store - глобальный стор приложения, по умолчанию используется результат createMockStore
54
67
  * @param providers - список провайдеров, которые будут переданы в createMockDi если явно не передавать di
55
68
  * @param stores - di-контейнер, по умолчанию используется результат createMockDi
69
+ * @param useTramvaiActionsConditionals - добавляет встроенные в tramvai actions conditionals
56
70
  */
57
- const createMockContext = ({ stores, initialState, store = createMockStore({ stores, initialState }), providers, di = createMockDi({ providers }), } = {}) => {
71
+ const createMockContext = ({ stores, initialState, store = createMockStore({ stores, initialState }), providers, di = createMockDi({ providers }), useTramvaiActionsConditionals = false, } = {}) => {
58
72
  const { __dispatcherContext__: dispatcherContext } = store; // хак для получения уже созданного dispatcherContext в сторе
59
73
  const pubsub = new PubSub();
60
74
  di.register({
@@ -62,6 +76,13 @@ const createMockContext = ({ stores, initialState, store = createMockStore({ sto
62
76
  useValue: store,
63
77
  });
64
78
  if (!di.get({ token: ACTION_EXECUTION_TOKEN, optional: true })) {
79
+ if (useTramvaiActionsConditionals) {
80
+ di.register({
81
+ provide: ACTION_CONDITIONALS,
82
+ multi: true,
83
+ useValue: [alwaysCondition, onlyServer, onlyBrowser, pageServer, pageBrowser],
84
+ });
85
+ }
65
86
  di.register({
66
87
  provide: ACTION_EXECUTION_TOKEN,
67
88
  useClass: ActionExecution,
package/lib/index.js CHANGED
@@ -9,6 +9,7 @@ var dippy = require('@tinkoff/dippy');
9
9
  var keys = require('@tinkoff/utils/object/keys');
10
10
  var difference = require('@tinkoff/utils/array/difference');
11
11
  var state = require('@tramvai/state');
12
+ var core = require('@tramvai/core');
12
13
  var router = require('@tinkoff/router');
13
14
  var url = require('@tinkoff/url');
14
15
  var noop = require('@tinkoff/utils/function/noop');
@@ -49,10 +50,22 @@ const createMockStore = ({ stores = [], initialState = {}, } = {}) => {
49
50
  /**
50
51
  * Создаёт di-сontainer
51
52
  *
53
+ * @param modules - список модулей, провайдеры которых будут добавлены в создаваемый di-контейнер
52
54
  * @param providers - список провайдеров, которые будут добавлены в создаваемый di-контейнер
53
55
  */
54
- const createMockDi = ({ providers = [] } = {}) => {
55
- return dippy.createContainer(providers);
56
+ const createMockDi = ({ modules = [], providers = [] } = {}) => {
57
+ const di = dippy.createContainer();
58
+ const resolvedModules = core.walkOfModules(modules);
59
+ resolvedModules.forEach((mod) => {
60
+ const moduleParameters = core.getModuleParameters(mod);
61
+ moduleParameters.providers.forEach((provider) => {
62
+ di.register(provider);
63
+ });
64
+ });
65
+ if (providers) {
66
+ providers.forEach((provider) => di.register(provider));
67
+ }
68
+ return di;
56
69
  };
57
70
 
58
71
  /**
@@ -63,8 +76,9 @@ const createMockDi = ({ providers = [] } = {}) => {
63
76
  * @param store - глобальный стор приложения, по умолчанию используется результат createMockStore
64
77
  * @param providers - список провайдеров, которые будут переданы в createMockDi если явно не передавать di
65
78
  * @param stores - di-контейнер, по умолчанию используется результат createMockDi
79
+ * @param useTramvaiActionsConditionals - добавляет встроенные в tramvai actions conditionals
66
80
  */
67
- const createMockContext = ({ stores, initialState, store = createMockStore({ stores, initialState }), providers, di = createMockDi({ providers }), } = {}) => {
81
+ const createMockContext = ({ stores, initialState, store = createMockStore({ stores, initialState }), providers, di = createMockDi({ providers }), useTramvaiActionsConditionals = false, } = {}) => {
68
82
  const { __dispatcherContext__: dispatcherContext } = store; // хак для получения уже созданного dispatcherContext в сторе
69
83
  const pubsub$1 = new pubsub.PubSub();
70
84
  di.register({
@@ -72,6 +86,13 @@ const createMockContext = ({ stores, initialState, store = createMockStore({ sto
72
86
  useValue: store,
73
87
  });
74
88
  if (!di.get({ token: tokensCommon.ACTION_EXECUTION_TOKEN, optional: true })) {
89
+ if (useTramvaiActionsConditionals) {
90
+ di.register({
91
+ provide: tokensCommon.ACTION_CONDITIONALS,
92
+ multi: true,
93
+ useValue: [moduleCommon.alwaysCondition, moduleCommon.onlyServer, moduleCommon.onlyBrowser, moduleCommon.pageServer, moduleCommon.pageBrowser],
94
+ });
95
+ }
75
96
  di.register({
76
97
  provide: tokensCommon.ACTION_EXECUTION_TOKEN,
77
98
  useClass: moduleCommon.ActionExecution,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/test-mocks",
3
- "version": "1.95.0",
3
+ "version": "1.95.1",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -18,14 +18,14 @@
18
18
  "build-for-publish": "true"
19
19
  },
20
20
  "dependencies": {
21
- "@tramvai/core": "1.95.0",
21
+ "@tramvai/core": "1.95.1",
22
22
  "@tinkoff/pubsub": "0.4.23",
23
23
  "@tinkoff/router": "0.1.72",
24
24
  "@tinkoff/url": "0.7.37",
25
- "@tramvai/module-cookie": "1.95.0",
26
- "@tramvai/module-common": "1.95.0",
27
- "@tramvai/state": "1.95.0",
28
- "@tramvai/tokens-common": "1.95.0"
25
+ "@tramvai/module-cookie": "1.95.1",
26
+ "@tramvai/module-common": "1.95.1",
27
+ "@tramvai/state": "1.95.1",
28
+ "@tramvai/tokens-common": "1.95.1"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@tinkoff/dippy": "0.7.39",