-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.js
94 lines (79 loc) · 2.3 KB
/
test.js
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import fs from 'node:fs/promises';
import path from 'node:path';
import t from 'libtap';
import {IntegrationInstanceBase} from '@cfware/integration-instance-base';
class CounterInstance {
counts = {
build: 0,
start: [],
stop: 0,
checkStopped: 0
};
async build() {
this.counts.build++;
}
async start(...args) {
this.counts.start.push(args);
}
async stop() {
this.counts.stop++;
}
async checkStopped() {
this.counts.checkStopped++;
}
}
t.type(IntegrationInstanceBase, 'function');
t.test('counters', async t => {
const statuses = [];
await fs.mkdir('instances', {recursive: true});
const counter1 = new CounterInstance();
const counter2 = new CounterInstance();
const integration = new IntegrationInstanceBase(path.resolve('instances'), {counter1, counter2});
integration.on('status', status => statuses.push(status));
t.same(integration.instances, ['counter1', 'counter2']);
t.equal(integration.defaultInstance, counter1);
t.equal(integration.counter1, counter1);
t.equal(integration.counter2, counter2);
t.equal(integration.startedMessage, 'Started daemons');
// eslint-disable-next-line promise/prefer-await-to-then
integration.stopped.then(() => {
statuses.push('resolved stopped');
});
const counts = {
...integration.counter1.counts,
start: []
};
const checkCounts = () => {
t.same(integration.counter1.counts, counts);
t.same(integration.counter2.counts, counts);
};
checkCounts();
await integration.build();
counts.build++;
checkCounts();
t.same(statuses, ['Building daemons']);
statuses.length = 0;
await integration.start('arg1', 'arg2');
counts.build++;
counts.start.push(['arg1', 'arg2']);
checkCounts();
t.same(statuses, [
'Building daemons',
'Starting daemons',
integration.startedMessage
]);
statuses.length = 0;
await integration.stop();
counts.stop++;
checkCounts();
t.same(statuses, [
'Stopping daemons',
'Stopped daemons',
'resolved stopped'
]);
statuses.length = 0;
await integration.checkStopped();
counts.checkStopped++;
checkCounts();
t.same(statuses, []);
});