-
-
Notifications
You must be signed in to change notification settings - Fork 84
/
errors.test.ts
52 lines (47 loc) · 2.38 KB
/
errors.test.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
import { CheckFailed, ApplicationError, toError, isError, toApplicationError } from './errors';
const oc = expect.objectContaining;
describe('errors', () => {
test.each`
ErrorClass | params
${CheckFailed} | ${['no matches']}
${ApplicationError} | ${['App Error']}
`('new $ErrorClass', ({ ErrorClass, params }) => {
const e = new ErrorClass(...params);
expect(e instanceof Error).toBe(true);
});
test.each`
error | expected
${new CheckFailed('')} | ${true}
${new ApplicationError('')} | ${true}
${{ message: 'msg', name: 'error' }} | ${true}
${{ name: 'error' }} | ${false}
${{}} | ${false}
${null} | ${false}
${'hello'} | ${false}
`('isError $error', ({ error, expected }) => {
expect(isError(error)).toBe(expected);
});
test.each`
error | expected
${new CheckFailed('CheckFailed')} | ${new Error('CheckFailed')}
${new ApplicationError('App Error')} | ${new Error('App Error')}
${{ message: 'msg', name: 'error' }} | ${oc({ message: 'msg', name: 'error' })}
${'hello'} | ${oc({ name: 'error', message: 'hello' })}
${null} | ${oc({ name: 'error', message: 'null' })}
${undefined} | ${oc({ name: 'error', message: 'undefined' })}
${42} | ${oc({ name: 'error', message: '42' })}
${{}} | ${oc({ name: 'error', message: '{}' })}
`('toError $error', ({ error, expected }) => {
expect(toError(error)).toEqual(expected);
});
test.each`
error | expected
${new CheckFailed('CheckFailed')} | ${new Error('CheckFailed')}
${new ApplicationError('App Error')} | ${new Error('App Error')}
${{ message: 'msg', name: 'error' }} | ${new Error('msg')}
${'hello'} | ${new Error('hello')}
${{}} | ${new Error('{}')}
`('toError $error', ({ error, expected }) => {
expect(toApplicationError(error)).toEqual(expected);
});
});