/
fail.js
73 lines (55 loc) · 1.9 KB
/
fail.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
const assert = require('assert');
const cup = require('../index.js');
function rejectPromise(seconds = 1, reason = 'rejected') {
return new Promise((resolve, reject) => (
setTimeout(() => reject(new Error(reason)), 1000 * seconds)
));
}
cup.test('SHOULD FAIL: Catches asserts', () => {
assert(false);
});
cup.test(
'SHOULD FAIL: Promise object works',
new Promise((resolve, reject) => reject()),
);
cup.test('SHOULD FAIL: Promise rejection works', rejectPromise);
cup.test('SHOULD FAIL: Promise error works', () => (
rejectPromise().catch(() => {
throw Error('Promise error');
})
));
cup.test('SHOULD FAIL: Async error works', async () => {
throw Error('Async error');
});
cup.test('SHOULD FAIL: Async rejection works', async () => {
await rejectPromise();
});
cup.test('SHOULD FAIL: Handles hanging test', new Promise(() => null));
// eslint-disable-next-line prefer-promise-reject-errors
cup.test('SHOULD FAIL: Handles non-Error reasons', Promise.reject('reason'));
cup.test('SHOULD FAIL: then works', new Promise((resolve, reject) => {
cup.test(
'SHOULD FAIL: then trial',
Promise.reject,
).then(resolve).catch(reject);
}));
cup.test('SHOULD FAIL: shouldThrow works', cup.shouldThrow(() => null));
cup.test('SHOULD FAIL: shouldThrow regex works', cup.shouldThrow(() => {
throw Error('');
}, /e11e28f1/));
cup.test('SHOULD FAIL: shouldReject works', cup.shouldReject(
Promise.resolve(),
));
cup.test('SHOULD FAIL: shouldReject requires Error', cup.shouldReject(
Promise.reject('reason'), // eslint-disable-line prefer-promise-reject-errors
));
cup.test('SHOULD FAIL: shouldReject regex works', cup.shouldReject(
Promise.reject(Error('')),
/e11e28f1/,
));
for (let i = 1; i <= 3; i++) {
cup.serial(
`SHOULD FAIL: Handles serial rejections tests (${i})`,
() => rejectPromise(0.25, `rejected ${i}`),
);
}