-
Notifications
You must be signed in to change notification settings - Fork 0
/
test-diagnostics-channel-tracing-channel-async.spec.js
70 lines (61 loc) · 2.01 KB
/
test-diagnostics-channel-tracing-channel-async.spec.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
'use strict';
const test = require('tape');
const common = require('./common.js');
const dc = require('../dc-polyfill.js');
const { hasTracingChannel } = require('../checks.js');
test('test-diagnostics-channel-tracing-channel-async', (t) => {
t.plan(23);
const channel = dc.tracingChannel('test');
const expectedResult = { foo: 'bar' };
const input = { foo: 'bar' };
const thisArg = { baz: 'buz' };
function check(found) {
t.deepEqual(found, input);
}
const handlers = {
start: common.mustCall(check, 2),
end: common.mustCall(check, 2),
asyncStart: common.mustCall((found) => {
check(found);
t.strictEqual(found.error, undefined);
t.deepEqual(found.result, expectedResult);
}, 2),
asyncEnd: common.mustCall((found) => {
check(found);
t.strictEqual(found.error, undefined);
t.deepEqual(found.result, expectedResult);
}, 2),
error: common.mustNotCall()
};
channel.subscribe(handlers);
channel.traceCallback(function(cb, err, res) {
t.deepEqual(this, thisArg);
setImmediate(cb, err, res);
}, 0, input, thisArg, common.mustCall((err, res) => {
t.strictEqual(err, null);
t.deepEqual(res, expectedResult);
}), null, expectedResult);
channel.tracePromise(function(value) {
t.deepEqual(this, thisArg);
return Promise.resolve(value);
}, input, thisArg, expectedResult).then(
common.mustCall((value) => {
t.deepEqual(value, expectedResult);
}),
common.mustNotCall()
);
let failed = false;
try {
channel.traceCallback(common.mustNotCall(), 0, input, thisArg, 1, 2, 3);
} catch (err) {
if (hasTracingChannel()) {
// By default, this error message is used for all of v20
// However, patch-sync-unsubscribe-bug causes the error to change to the older version mentioning Array
t.ok(/"callback" argument must be of type function/.test(err.message));
} else {
t.ok(/Received an instance of Array/.test(err.message));
}
failed = true;
}
t.strictEqual(failed, true);
});