@fluidframework/synthesize 0.54.2 → 0.56.0-49831
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/dist/IFluidDependencySynthesizer.d.ts +4 -32
- package/dist/IFluidDependencySynthesizer.d.ts.map +1 -1
- package/dist/IFluidDependencySynthesizer.js.map +1 -1
- package/dist/dependencyContainer.d.ts +15 -19
- package/dist/dependencyContainer.d.ts.map +1 -1
- package/dist/dependencyContainer.js +61 -63
- package/dist/dependencyContainer.js.map +1 -1
- package/dist/test/dependencyContainer.spec.js +49 -39
- package/dist/test/dependencyContainer.spec.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +54 -82
- package/dist/types.d.ts +9 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/lib/IFluidDependencySynthesizer.js.map +1 -1
- package/lib/dependencyContainer.js +61 -63
- package/lib/dependencyContainer.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +14 -15
|
@@ -35,7 +35,7 @@ describe("Routerlicious", () => {
|
|
|
35
35
|
const dc = new __1.DependencyContainer();
|
|
36
36
|
const mock = new MockLoadable();
|
|
37
37
|
dc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
38
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable },
|
|
38
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
39
39
|
const loadable = await s.IFluidLoadable;
|
|
40
40
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
41
41
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -45,7 +45,7 @@ describe("Routerlicious", () => {
|
|
|
45
45
|
const dc = new __1.DependencyContainer();
|
|
46
46
|
const mock = new MockLoadable();
|
|
47
47
|
dc.register(core_interfaces_1.IFluidLoadable, Promise.resolve(mock));
|
|
48
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable },
|
|
48
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
49
49
|
const loadable = await s.IFluidLoadable;
|
|
50
50
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
51
51
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -56,7 +56,7 @@ describe("Routerlicious", () => {
|
|
|
56
56
|
const mock = new MockLoadable();
|
|
57
57
|
const factory = () => mock;
|
|
58
58
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
59
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable },
|
|
59
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
60
60
|
const loadable = await s.IFluidLoadable;
|
|
61
61
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
62
62
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -67,7 +67,7 @@ describe("Routerlicious", () => {
|
|
|
67
67
|
const mock = new MockLoadable();
|
|
68
68
|
const factory = async () => mock;
|
|
69
69
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
70
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable },
|
|
70
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
71
71
|
const loadable = await s.IFluidLoadable;
|
|
72
72
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
73
73
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -77,8 +77,7 @@ describe("Routerlicious", () => {
|
|
|
77
77
|
const dc = new __1.DependencyContainer();
|
|
78
78
|
const mock = new MockLoadable();
|
|
79
79
|
dc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
80
|
-
|
|
81
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
80
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
82
81
|
const loadable = await s.IFluidLoadable;
|
|
83
82
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
84
83
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -88,8 +87,7 @@ describe("Routerlicious", () => {
|
|
|
88
87
|
const dc = new __1.DependencyContainer();
|
|
89
88
|
const mock = new MockLoadable();
|
|
90
89
|
dc.register(core_interfaces_1.IFluidLoadable, Promise.resolve(mock));
|
|
91
|
-
|
|
92
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
90
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
93
91
|
const loadable = await s.IFluidLoadable;
|
|
94
92
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
95
93
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -100,8 +98,7 @@ describe("Routerlicious", () => {
|
|
|
100
98
|
const mock = new MockLoadable();
|
|
101
99
|
const factory = () => mock;
|
|
102
100
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
103
|
-
|
|
104
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
101
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
105
102
|
const loadable = await s.IFluidLoadable;
|
|
106
103
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
107
104
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -112,8 +109,7 @@ describe("Routerlicious", () => {
|
|
|
112
109
|
const mock = new MockLoadable();
|
|
113
110
|
const factory = async () => mock;
|
|
114
111
|
dc.register(core_interfaces_1.IFluidLoadable, factory);
|
|
115
|
-
|
|
116
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
112
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
117
113
|
const loadable = await s.IFluidLoadable;
|
|
118
114
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
119
115
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -125,7 +121,7 @@ describe("Routerlicious", () => {
|
|
|
125
121
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
126
122
|
const configMock = new MockFluidConfiguration();
|
|
127
123
|
dc.register(core_interfaces_1.IFluidConfiguration, configMock);
|
|
128
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration },
|
|
124
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration }, undefined);
|
|
129
125
|
const loadable = await s.IFluidLoadable;
|
|
130
126
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
131
127
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -137,7 +133,7 @@ describe("Routerlicious", () => {
|
|
|
137
133
|
const dc = new __1.DependencyContainer();
|
|
138
134
|
const loadableMock = new MockLoadable();
|
|
139
135
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
140
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration },
|
|
136
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration }, undefined);
|
|
141
137
|
const loadable = await s.IFluidLoadable;
|
|
142
138
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
143
139
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -146,7 +142,7 @@ describe("Routerlicious", () => {
|
|
|
146
142
|
});
|
|
147
143
|
it(`Two Optional Modules none registered`, async () => {
|
|
148
144
|
const dc = new __1.DependencyContainer();
|
|
149
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration },
|
|
145
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration }, undefined);
|
|
150
146
|
const loadable = await s.IFluidLoadable;
|
|
151
147
|
assert_1.strict(!loadable, "Optional IFluidLoadable was not registered");
|
|
152
148
|
const config = await s.IFluidConfiguration;
|
|
@@ -158,8 +154,7 @@ describe("Routerlicious", () => {
|
|
|
158
154
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
159
155
|
const configMock = new MockFluidConfiguration();
|
|
160
156
|
dc.register(core_interfaces_1.IFluidConfiguration, configMock);
|
|
161
|
-
|
|
162
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration });
|
|
157
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration });
|
|
163
158
|
const loadable = await s.IFluidLoadable;
|
|
164
159
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
165
160
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -169,15 +164,14 @@ describe("Routerlicious", () => {
|
|
|
169
164
|
});
|
|
170
165
|
it(`Required Provider not registered should throw`, async () => {
|
|
171
166
|
const dc = new __1.DependencyContainer();
|
|
172
|
-
|
|
173
|
-
assert_1.strict.throws(() => dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable }), Error);
|
|
167
|
+
assert_1.strict.throws(() => dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable }), Error);
|
|
174
168
|
});
|
|
175
169
|
it(`Optional Provider found in Parent`, async () => {
|
|
176
170
|
const parentDc = new __1.DependencyContainer();
|
|
177
171
|
const mock = new MockLoadable();
|
|
178
172
|
parentDc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
179
173
|
const dc = new __1.DependencyContainer(parentDc);
|
|
180
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable },
|
|
174
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
181
175
|
const loadable = await s.IFluidLoadable;
|
|
182
176
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
183
177
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -190,7 +184,7 @@ describe("Routerlicious", () => {
|
|
|
190
184
|
const dc = new __1.DependencyContainer(parentDc);
|
|
191
185
|
const configMock = new MockFluidConfiguration();
|
|
192
186
|
dc.register(core_interfaces_1.IFluidConfiguration, configMock);
|
|
193
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration },
|
|
187
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration }, undefined);
|
|
194
188
|
const loadable = await s.IFluidLoadable;
|
|
195
189
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
196
190
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -204,7 +198,7 @@ describe("Routerlicious", () => {
|
|
|
204
198
|
const dc = new __1.DependencyContainer(parentDc);
|
|
205
199
|
const loadableMock = new MockLoadable();
|
|
206
200
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
207
|
-
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable },
|
|
201
|
+
const s = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, undefined);
|
|
208
202
|
const loadable = await s.IFluidLoadable;
|
|
209
203
|
assert_1.strict(loadable, "Optional IFluidLoadable was registered");
|
|
210
204
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -214,8 +208,7 @@ describe("Routerlicious", () => {
|
|
|
214
208
|
const mock = new MockLoadable();
|
|
215
209
|
parentDc.register(core_interfaces_1.IFluidLoadable, mock);
|
|
216
210
|
const dc = new __1.DependencyContainer(parentDc);
|
|
217
|
-
|
|
218
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
211
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
219
212
|
const loadable = await s.IFluidLoadable;
|
|
220
213
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
221
214
|
assert_1.strict(loadable === mock, "IFluidLoadable is expected");
|
|
@@ -228,8 +221,7 @@ describe("Routerlicious", () => {
|
|
|
228
221
|
const dc = new __1.DependencyContainer(parentDc);
|
|
229
222
|
const configMock = new MockFluidConfiguration();
|
|
230
223
|
dc.register(core_interfaces_1.IFluidConfiguration, configMock);
|
|
231
|
-
|
|
232
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration });
|
|
224
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable, IFluidConfiguration: core_interfaces_1.IFluidConfiguration });
|
|
233
225
|
const loadable = await s.IFluidLoadable;
|
|
234
226
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
235
227
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -243,8 +235,7 @@ describe("Routerlicious", () => {
|
|
|
243
235
|
const dc = new __1.DependencyContainer(parentDc);
|
|
244
236
|
const loadableMock = new MockLoadable();
|
|
245
237
|
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
246
|
-
|
|
247
|
-
const s = dc.synthesize({}, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
238
|
+
const s = dc.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
248
239
|
const loadable = await s.IFluidLoadable;
|
|
249
240
|
assert_1.strict(loadable, "Required IFluidLoadable was registered");
|
|
250
241
|
assert_1.strict(loadable === loadableMock, "IFluidLoadable is expected");
|
|
@@ -253,7 +244,6 @@ describe("Routerlicious", () => {
|
|
|
253
244
|
const dc = new __1.DependencyContainer();
|
|
254
245
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
255
246
|
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable), "DependencyContainer has IFluidLoadable");
|
|
256
|
-
assert_1.strict(Array.from(dc.registeredTypes).length === 1, "DependencyContainer has one module");
|
|
257
247
|
});
|
|
258
248
|
it(`Registering the same type twice throws`, async () => {
|
|
259
249
|
const dc = new __1.DependencyContainer();
|
|
@@ -265,7 +255,6 @@ describe("Routerlicious", () => {
|
|
|
265
255
|
dc.register(core_interfaces_1.IFluidLoadable, new MockLoadable());
|
|
266
256
|
dc.unregister(core_interfaces_1.IFluidLoadable);
|
|
267
257
|
assert_1.strict(!dc.has(core_interfaces_1.IFluidLoadable), "DependencyContainer doesn't have IFluidLoadable");
|
|
268
|
-
assert_1.strict(Array.from(dc.registeredTypes).length === 0, "Manager has no modules");
|
|
269
258
|
});
|
|
270
259
|
it(`Registering then Unregistering then Registering`, async () => {
|
|
271
260
|
const dc = new __1.DependencyContainer();
|
|
@@ -280,17 +269,38 @@ describe("Routerlicious", () => {
|
|
|
280
269
|
dc.register(core_interfaces_1.IFluidConfiguration, new MockFluidConfiguration());
|
|
281
270
|
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable), "Manager has IFluidLoadable");
|
|
282
271
|
assert_1.strict(dc.has(core_interfaces_1.IFluidConfiguration), "Manager has IFluidConfiguration");
|
|
283
|
-
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable
|
|
284
|
-
assert_1.strict(Array.from(dc.registeredTypes).length === 2, "Manager has two modules");
|
|
272
|
+
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable) && dc.has(core_interfaces_1.IFluidConfiguration), "Manager has IFluidLoadable & IFluidConfiguration");
|
|
285
273
|
});
|
|
286
|
-
it(`
|
|
274
|
+
it(`Child has Parent modules`, async () => {
|
|
275
|
+
const parentDc = new __1.DependencyContainer();
|
|
276
|
+
const loadableMock = new MockLoadable();
|
|
277
|
+
parentDc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
278
|
+
const dc = new __1.DependencyContainer(parentDc);
|
|
279
|
+
const configMock = new MockFluidConfiguration();
|
|
280
|
+
dc.register(core_interfaces_1.IFluidConfiguration, configMock);
|
|
281
|
+
assert_1.strict(dc.has(core_interfaces_1.IFluidLoadable), "has includes parent registered");
|
|
282
|
+
assert_1.strict(!dc.has(core_interfaces_1.IFluidLoadable, true), "has does not include excluded parent registered");
|
|
283
|
+
assert_1.strict(dc.has(core_interfaces_1.IFluidConfiguration), "has includes registered");
|
|
284
|
+
assert_1.strict(!dc.has(core_interfaces_1.IFluidHandle), "does not include not registered");
|
|
285
|
+
});
|
|
286
|
+
it(`Parent Resolved from Child`, async () => {
|
|
287
|
+
const parentDc = new __1.DependencyContainer();
|
|
288
|
+
const loadableToHandle = async (fds) => {
|
|
289
|
+
const loadable = fds.synthesize(undefined, { IFluidLoadable: core_interfaces_1.IFluidLoadable });
|
|
290
|
+
return (await loadable.IFluidLoadable).handle;
|
|
291
|
+
};
|
|
292
|
+
parentDc.register(core_interfaces_1.IFluidHandle, loadableToHandle);
|
|
293
|
+
const dc = new __1.DependencyContainer(parentDc);
|
|
294
|
+
const loadableMock = new MockLoadable();
|
|
295
|
+
dc.register(core_interfaces_1.IFluidLoadable, loadableMock);
|
|
296
|
+
const deps = dc.synthesize({ IFluidHandle: core_interfaces_1.IFluidHandle }, undefined);
|
|
297
|
+
assert_1.strict(await deps.IFluidHandle !== undefined, "handle undefined");
|
|
298
|
+
});
|
|
299
|
+
it(`Undefined Provider is not Undefined`, async () => {
|
|
287
300
|
const dc = new __1.DependencyContainer();
|
|
288
|
-
dc.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
assert_1.strict(modules.length === 2, "Manager has two modules");
|
|
292
|
-
assert_1.strict(modules.includes(core_interfaces_1.IFluidLoadable), "Manager has IFluidLoadable");
|
|
293
|
-
assert_1.strict(modules.includes(core_interfaces_1.IFluidConfiguration), "Manager has IFluidConfiguration");
|
|
301
|
+
const deps = dc.synthesize({ IFluidLoadable: core_interfaces_1.IFluidLoadable }, {});
|
|
302
|
+
assert_1.strict(deps.IFluidLoadable !== undefined, "handle undefined");
|
|
303
|
+
assert_1.strict(await deps.IFluidLoadable === undefined, "handle undefined");
|
|
294
304
|
});
|
|
295
305
|
});
|
|
296
306
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyContainer.spec.js","sourceRoot":"","sources":["../../src/test/dependencyContainer.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\n\nimport {\n IFluidConfiguration,\n IFluidLoadable,\n IFluidHandleContext,\n} from \"@fluidframework/core-interfaces\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore\";\n\nimport { DependencyContainer } from \"..\";\n\nconst mockHandleContext: IFluidHandleContext = {\n absolutePath: \"\",\n isAttached: false,\n IFluidHandleContext: undefined as any,\n\n attachGraph: () => {\n throw new Error(\"Method not implemented.\");\n },\n resolveHandle: () => {\n throw new Error(\"Method not implemented.\");\n },\n};\n\nclass MockLoadable implements IFluidLoadable {\n public get IFluidLoadable() { return this; }\n public get handle() { return new FluidObjectHandle(this, \"\", mockHandleContext); }\n}\n\nclass MockFluidConfiguration implements IFluidConfiguration {\n public get IFluidConfiguration() { return this; }\n public get canReconnect() { return false; }\n public get scopes() { return [\"scope\"]; }\n}\n\ndescribe(\"Routerlicious\", () => {\n describe(\"Aqueduct\", () => {\n describe(\"DependencyContainer\", () => {\n it(`One Optional Provider registered via value`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via factory`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via value`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable>({}, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable>({}, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via factory`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable>({}, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable>({}, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Two Optional Modules all registered`, async () => {\n const dc = new DependencyContainer();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Optional IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Two Optional Modules one registered`, async () => {\n const dc = new DependencyContainer();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(!config, \"Optional IFluidConfiguration was not registered\");\n });\n\n it(`Two Optional Modules none registered`, async () => {\n const dc = new DependencyContainer();\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, {});\n const loadable = await s.IFluidLoadable;\n assert(!loadable, \"Optional IFluidLoadable was not registered\");\n const config = await s.IFluidConfiguration;\n assert(!config, \"Optional IFluidConfiguration was not registered\");\n });\n\n it(`Two Required Modules all registered`, async () => {\n const dc = new DependencyContainer();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable & IFluidConfiguration>(\n {}, { IFluidLoadable, IFluidConfiguration });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Required IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Required Provider not registered should throw`, async () => {\n const dc = new DependencyContainer();\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n assert.throws(() => dc.synthesize<{}, IFluidLoadable>(\n {},\n { IFluidLoadable },\n ), Error);\n });\n\n it(`Optional Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Optional Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Optional IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Optional Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, {});\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Required Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable>({}, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Required Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable & IFluidConfiguration>(\n {}, { IFluidLoadable, IFluidConfiguration });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Required IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Required Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const s = dc.synthesize<{}, IFluidLoadable>({}, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Registering`, async () => {\n const dc = new DependencyContainer();\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n assert(Array.from(dc.registeredTypes).length === 1, \"DependencyContainer has one module\");\n });\n\n it(`Registering the same type twice throws`, async () => {\n const dc = new DependencyContainer();\n dc.register(IFluidLoadable, new MockLoadable());\n assert.throws(() => dc.register(IFluidLoadable, new MockLoadable()), Error);\n });\n\n it(`Registering then Unregistering`, async () => {\n const dc = new DependencyContainer();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n assert(!dc.has(IFluidLoadable), \"DependencyContainer doesn't have IFluidLoadable\");\n assert(Array.from(dc.registeredTypes).length === 0, \"Manager has no modules\");\n });\n\n it(`Registering then Unregistering then Registering`, async () => {\n const dc = new DependencyContainer();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`has() resolves correctly in all variations`, async () => {\n const dc = new DependencyContainer();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.register(IFluidConfiguration, new MockFluidConfiguration());\n assert(dc.has(IFluidLoadable), \"Manager has IFluidLoadable\");\n assert(dc.has(IFluidConfiguration), \"Manager has IFluidConfiguration\");\n assert(\n dc.has(IFluidLoadable, IFluidConfiguration),\n \"Manager has IFluidLoadable & IFluidConfiguration\");\n assert(Array.from(dc.registeredTypes).length === 2, \"Manager has two modules\");\n });\n\n it(`registeredModules() resolves correctly`, async () => {\n const dc = new DependencyContainer();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.register(IFluidConfiguration, new MockFluidConfiguration());\n const modules = Array.from(dc.registeredTypes);\n assert(modules.length === 2, \"Manager has two modules\");\n assert(modules.includes(IFluidLoadable), \"Manager has IFluidLoadable\");\n assert(modules.includes(IFluidConfiguration), \"Manager has IFluidConfiguration\");\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"dependencyContainer.spec.js","sourceRoot":"","sources":["../../src/test/dependencyContainer.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\n\nimport {\n IFluidConfiguration,\n IFluidLoadable,\n IFluidHandleContext,\n IFluidHandle,\n IProvideFluidLoadable,\n IProvideFluidConfiguration,\n IProvideFluidHandle,\n FluidObject,\n} from \"@fluidframework/core-interfaces\";\nimport { FluidObjectHandle } from \"@fluidframework/datastore\";\n\nimport { DependencyContainer } from \"..\";\nimport { IFluidDependencySynthesizer } from \"../IFluidDependencySynthesizer\";\nimport { FluidObjectProvider } from \"../types\";\n\nconst mockHandleContext: IFluidHandleContext = {\n absolutePath: \"\",\n isAttached: false,\n IFluidHandleContext: undefined as any,\n\n attachGraph: () => {\n throw new Error(\"Method not implemented.\");\n },\n resolveHandle: () => {\n throw new Error(\"Method not implemented.\");\n },\n};\n\nclass MockLoadable implements IFluidLoadable {\n public get IFluidLoadable() { return this; }\n public get handle() { return new FluidObjectHandle(this, \"\", mockHandleContext); }\n}\n\nclass MockFluidConfiguration implements IFluidConfiguration {\n public get IFluidConfiguration() { return this; }\n public get canReconnect() { return false; }\n public get scopes() { return [\"scope\"]; }\n}\n\ndescribe(\"Routerlicious\", () => {\n describe(\"Aqueduct\", () => {\n describe(\"DependencyContainer\", () => {\n it(`One Optional Provider registered via value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Optional Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, mock);\n\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise value`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n dc.register(IFluidLoadable, Promise.resolve(mock));\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = () => mock;\n dc.register(IFluidLoadable, factory);\n\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`One Required Provider registered via Promise factory`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n const factory = async () => mock;\n dc.register(IFluidLoadable, factory);\n\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Two Optional Modules all registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Optional IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Two Optional Modules one registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(!config, \"Optional IFluidConfiguration was not registered\");\n });\n\n it(`Two Optional Modules none registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(!loadable, \"Optional IFluidLoadable was not registered\");\n const config = await s.IFluidConfiguration;\n assert(!config, \"Optional IFluidConfiguration was not registered\");\n });\n\n it(`Two Required Modules all registered`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidConfiguration>(\n undefined, { IFluidLoadable, IFluidConfiguration });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Required IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Required Provider not registered should throw`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n\n assert.throws(() => dc.synthesize<undefined, IProvideFluidLoadable>(\n undefined,\n { IFluidLoadable },\n ), Error);\n });\n\n it(`Optional Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Optional Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidConfiguration>>(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<IFluidLoadable & IFluidConfiguration>(\n { IFluidLoadable, IFluidConfiguration }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Optional IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Optional Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<IFluidLoadable>({ IFluidLoadable }, undefined);\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Optional IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Required Provider found in Parent`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const mock = new MockLoadable();\n parentDc.register(IFluidLoadable, mock);\n const dc = new DependencyContainer(parentDc);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === mock, \"IFluidLoadable is expected\");\n assert(loadable?.handle.absolutePath === mock.handle.absolutePath, \"IFluidLoadable is valid\");\n });\n\n it(`Required Modules found in Parent and Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidConfiguration>>(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable & IProvideFluidConfiguration>(\n undefined, { IFluidLoadable, IFluidConfiguration });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n\n const config = await s.IFluidConfiguration;\n assert(config, \"Required IFluidConfiguration was registered\");\n assert(config === configMock, \"IFluidConfiguration is expected\");\n });\n\n it(`Required Provider found in Parent and Child resolves Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n parentDc.register(IFluidLoadable, new MockLoadable());\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const s = dc.synthesize<undefined, IProvideFluidLoadable>(undefined, { IFluidLoadable });\n const loadable = await s.IFluidLoadable;\n assert(loadable, \"Required IFluidLoadable was registered\");\n assert(loadable === loadableMock, \"IFluidLoadable is expected\");\n });\n\n it(`Registering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`Registering the same type twice throws`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n assert.throws(() => dc.register(IFluidLoadable, new MockLoadable()), Error);\n });\n\n it(`Registering then Unregistering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n assert(!dc.has(IFluidLoadable), \"DependencyContainer doesn't have IFluidLoadable\");\n });\n\n it(`Registering then Unregistering then Registering`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.unregister(IFluidLoadable);\n dc.register(IFluidLoadable, new MockLoadable());\n assert(dc.has(IFluidLoadable), \"DependencyContainer has IFluidLoadable\");\n });\n\n it(`has() resolves correctly in all variations`, async () => {\n const dc = new DependencyContainer<FluidObject<IFluidLoadable & IFluidConfiguration>>();\n dc.register(IFluidLoadable, new MockLoadable());\n dc.register(IFluidConfiguration, new MockFluidConfiguration());\n assert(dc.has(IFluidLoadable), \"Manager has IFluidLoadable\");\n assert(dc.has(IFluidConfiguration), \"Manager has IFluidConfiguration\");\n assert(\n dc.has(IFluidLoadable) && dc.has(IFluidConfiguration),\n \"Manager has IFluidLoadable & IFluidConfiguration\");\n });\n\n\n it(`Child has Parent modules`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidLoadable>>();\n const loadableMock = new MockLoadable();\n parentDc.register(IFluidLoadable, loadableMock);\n const dc = new DependencyContainer<FluidObject<IFluidConfiguration>>(parentDc);\n const configMock = new MockFluidConfiguration();\n dc.register(IFluidConfiguration, configMock);\n\n assert(dc.has(IFluidLoadable), \"has includes parent registered\");\n assert(!dc.has(IFluidLoadable, true),\"has does not include excluded parent registered\");\n assert(dc.has(IFluidConfiguration),\"has includes registered\");\n assert(!dc.has(IFluidHandle),\"does not include not registered\");\n });\n\n it(`Parent Resolved from Child`, async () => {\n const parentDc = new DependencyContainer<FluidObject<IFluidHandle>>();\n const loadableToHandle: FluidObjectProvider<IProvideFluidHandle> =\n async (fds: IFluidDependencySynthesizer) => {\n \n const loadable = fds.synthesize<undefined, IProvideFluidLoadable>(undefined,{IFluidLoadable});\n return (await loadable.IFluidLoadable).handle;\n };\n parentDc.register(IFluidHandle, loadableToHandle);\n\n const dc = new DependencyContainer<FluidObject<IFluidLoadable>>(parentDc);\n const loadableMock = new MockLoadable();\n dc.register(IFluidLoadable, loadableMock);\n\n const deps = dc.synthesize<IFluidHandle>({IFluidHandle}, undefined);\n assert(await deps.IFluidHandle !== undefined, \"handle undefined\");\n });\n\n it(`Undefined Provider is not Undefined`, async () => {\n const dc = new DependencyContainer();\n const deps = dc.synthesize<IFluidLoadable>({IFluidLoadable}, {});\n assert(deps.IFluidLoadable !== undefined, \"handle undefined\");\n assert(await deps.IFluidLoadable === undefined, \"handle undefined\");\n });\n });\n });\n});\n"]}
|