-
-
Notifications
You must be signed in to change notification settings - Fork 140
/
initializing-a-service.feature.ts
76 lines (52 loc) · 1.67 KB
/
initializing-a-service.feature.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// std
import { strictEqual } from 'assert';
// FoalTS
import { createApp, dependency, ServiceManager } from '@foal/core';
describe('Feature: Initializing a service', () => {
it('Example: A simple service.', async () => {
let called = false;
function doSomething() {
called = true;
}
/* ======================= DOCUMENTATION BEGIN ======================= */
class ServiceA {
async boot() {
await doSomething();
}
}
/* ======================= DOCUMENTATION END ========================= */
class AppController {
@dependency
serviceA: ServiceA;
}
strictEqual(called, false);
await createApp(AppController);
strictEqual(called, true);
});
it('Example: A service manually injected.', async () => {
let called = false;
class ServiceA {
boot() {
called = true;
}
}
const myServiceInstance = new ServiceA();
/* ======================= DOCUMENTATION BEGIN ======================= */
const serviceManager = new ServiceManager();
serviceManager.set(ServiceA, myServiceInstance, { boot: true });
/* ======================= DOCUMENTATION END ========================= */
class AppController {
@dependency
serviceA: ServiceA;
}
const serviceManager2 = new ServiceManager();
// "boot" option not provided.
serviceManager2.set(ServiceA, myServiceInstance);
strictEqual(called, false);
await createApp(AppController, { serviceManager: serviceManager2 });
strictEqual(called, false);
strictEqual(called, false);
await createApp(AppController, { serviceManager });
strictEqual(called, true);
});
});