-
Notifications
You must be signed in to change notification settings - Fork 4
/
utils.js
120 lines (110 loc) · 3.21 KB
/
utils.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const test = require('test')
test.setup()
var Core = require("../..");
describe("Utils", function () {
describe("exposeErrAndResultFromSyncMethod", function () {
it("existence", () => {
assert.isFunction(Core.Utils.exposeErrAndResultFromSyncMethod)
});
;[
undefined,
null,
Symbol('#check'),
{},
[],
0,
'0',
true,
false,
() => void 0
].forEach(_result => {
it(`check result: ${String(_result)}`, () => {
const { error, result } = Core.Utils.exposeErrAndResultFromSyncMethod(
() => _result
);
assert.isUndefined(error)
assert.equal(result, _result)
});
});
;[
'message',
new Error('message')
].forEach((_error, idx) => {
it(`error message in synchronous flow [${idx + 1}]`, () => {
const { error, result } = Core.Utils.exposeErrAndResultFromSyncMethod(
() => {
throw _error
}
);
assert.isUndefined(result)
assert.exist(error)
assert.deepEqual(error, _error)
})
});
});
describe("throwErrOrCallabckErrResult", function () {
it("existence", () => {
assert.isFunction(Core.Utils.throwErrOrCallabckErrResult)
});
;[
[
'',
{ no_throw: true, callback: undefined, use_tick: false },
new Error('message'),
(opts, exposedErrResult) => {
assert.equal(exposedErrResult.error.message, 'message')
Core.Utils.throwErrOrCallabckErrResult(exposedErrResult, opts)
}
],
[
'',
{ no_throw: false, callback: undefined, use_tick: false },
new Error('message'),
(opts, exposedErrResult) => {
assert.equal(exposedErrResult.error.message, 'message')
assert.throws(() => {
Core.Utils.throwErrOrCallabckErrResult(exposedErrResult, opts)
})
}
],
[
'if no_throw == true, callback would be used',
{ no_throw: true, callback: (err, result) => {
assert.exist(err)
assert.isUndefined(result)
assert.equal(err.message, 'message')
}, use_tick: false },
new Error('message'),
(opts, exposedErrResult) => {
Core.Utils.throwErrOrCallabckErrResult(exposedErrResult, opts)
}
],
[
'if no_throw == false, callback would not be used',
{ no_throw: false, callback: (err, result) => {
assert.exist(err)
assert.isUndefined(result)
assert.equal(err.message, 'message')
}, use_tick: false },
new Error('message'),
(opts, exposedErrResult) => {
assert.throws(() => {
Core.Utils.throwErrOrCallabckErrResult(exposedErrResult, opts)
})
}
]
].forEach(([ desc, opts, err_info, checkor]) => {
it(`opts: ${JSON.stringify(opts)} ${desc ? `-- ${desc}` : ``}`, () => {
const exposedErrResult = Core.Utils.exposeErrAndResultFromSyncMethod(
() => {
throw err_info
}
);
checkor(opts, exposedErrResult);
})
})
});
});
if (require.main === module) {
test.run(console.DEBUG)
}