Skip to content

Commit e6350af

Browse files
committed
test: add cases for cause propagation
1 parent 6013edf commit e6350af

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/__fixtures__/errors.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { rpcErrors } from '..';
22

3-
export const dummyData = { foo: 'bar' };
43
export const dummyMessage = 'baz';
4+
export const dummyData = { foo: 'bar' };
5+
export const dummyDataWithCause = {
6+
foo: 'bar',
7+
cause: { message: dummyMessage },
8+
};
59

610
export const invalidError0 = 0;
711
export const invalidError1 = ['foo', 'bar', 3];

src/errors.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { assert, isPlainObject } from '@metamask/utils';
33
import { rpcErrors, providerErrors, errorCodes } from '.';
44
import {
55
dummyData,
6+
dummyDataWithCause,
7+
dummyMessage,
68
CUSTOM_ERROR_MESSAGE,
79
SERVER_ERROR_CODE,
810
CUSTOM_ERROR_CODE,
@@ -97,6 +99,21 @@ describe('rpcErrors', () => {
9799
},
98100
);
99101

102+
it.each(Object.entries(rpcErrors).filter(([key]) => key !== 'server'))(
103+
'%s propagates data.cause if set',
104+
(key, value) => {
105+
const createError = value as any;
106+
const error = createError({
107+
message: null,
108+
data: Object.assign({}, dummyDataWithCause),
109+
});
110+
// @ts-expect-error TypeScript does not like indexing into this with the key
111+
const rpcCode = errorCodes.rpc[key];
112+
expect(error.message).toBe(getMessageFromCode(rpcCode));
113+
expect(error.cause.message).toBe(dummyMessage);
114+
},
115+
);
116+
100117
it('serializes a cause', () => {
101118
const error = rpcErrors.invalidInput({
102119
data: {
@@ -156,6 +173,21 @@ describe('providerErrors', () => {
156173
},
157174
);
158175

176+
it.each(Object.entries(providerErrors).filter(([key]) => key !== 'custom'))(
177+
'%s propagates data.cause if set',
178+
(key, value) => {
179+
const createError = value as any;
180+
const error = createError({
181+
message: null,
182+
data: Object.assign({}, dummyDataWithCause),
183+
});
184+
// @ts-expect-error TypeScript does not like indexing into this with the key
185+
const providerCode = errorCodes.provider[key];
186+
expect(error.message).toBe(getMessageFromCode(providerCode));
187+
expect(error.cause.message).toBe(dummyMessage);
188+
},
189+
);
190+
159191
it('custom returns appropriate value', () => {
160192
const error = providerErrors.custom({
161193
code: CUSTOM_ERROR_CODE,

0 commit comments

Comments
 (0)