diff --git a/src/error/__tests__/GraphQLError-test.ts b/src/error/__tests__/GraphQLError-test.ts index 2937038ffb..81dbf1fc71 100644 --- a/src/error/__tests__/GraphQLError-test.ts +++ b/src/error/__tests__/GraphQLError-test.ts @@ -144,6 +144,66 @@ describe('GraphQLError', () => { }); }); + it('defaults to original error extension only if extensions argument is not passed', () => { + class ErrorWithExtensions extends Error { + extensions: unknown; + + constructor(message: string) { + super(message); + this.extensions = { original: 'extensions' }; + } + } + + const original = new ErrorWithExtensions('original'); + const inheritedExtensions = new GraphQLError( + 'InheritedExtensions', + undefined, + undefined, + undefined, + undefined, + original, + undefined, + ); + + expect(inheritedExtensions).to.deep.include({ + message: 'InheritedExtensions', + originalError: original, + extensions: { original: 'extensions' }, + }); + + const ownExtensions = new GraphQLError( + 'OwnExtensions', + undefined, + undefined, + undefined, + undefined, + original, + { own: 'extensions' }, + ); + + expect(ownExtensions).to.deep.include({ + message: 'OwnExtensions', + originalError: original, + extensions: { own: 'extensions' }, + }); + + const ownEmptyExtensions = new GraphQLError( + 'OwnEmptyExtensions', + undefined, + undefined, + undefined, + undefined, + original, + {}, + ); + + expect(ownEmptyExtensions).to.deep.include({ + message: 'OwnEmptyExtensions', + originalError: original, + extensions: {}, + }); + }); + it('serializes to include all standard fields', () => { const eShort = new GraphQLError('msg'); expect(JSON.stringify(eShort, null, 2)).to.equal(dedent`