@@ -122,6 +122,66 @@ describe('GraphQLError', () => {
122122 } ) ;
123123 } ) ;
124124
125+ it ( 'defaults to original error extension only if extensions argument is not passed' , ( ) => {
126+ class ErrorWithExtensions extends Error {
127+ extensions : mixed ;
128+
129+ constructor ( message : string ) {
130+ super ( message ) ;
131+ this . extensions = { original : 'extensions' } ;
132+ }
133+ }
134+
135+ const original = new ErrorWithExtensions ( 'original' ) ;
136+ const inheritedExtensions = new GraphQLError (
137+ 'InheritedExtensions' ,
138+ undefined ,
139+ undefined ,
140+ undefined ,
141+ undefined ,
142+ original ,
143+ undefined ,
144+ ) ;
145+
146+ expect ( inheritedExtensions ) . to . deep . include ( {
147+ message : 'InheritedExtensions' ,
148+ originalError : original ,
149+ extensions : { original : 'extensions' } ,
150+ } ) ;
151+
152+ const ownExtensions = new GraphQLError (
153+ 'OwnExtensions' ,
154+ undefined ,
155+ undefined ,
156+ undefined ,
157+ undefined ,
158+ original ,
159+ { own : 'extensions' } ,
160+ ) ;
161+
162+ expect ( ownExtensions ) . to . deep . include ( {
163+ message : 'OwnExtensions' ,
164+ originalError : original ,
165+ extensions : { own : 'extensions' } ,
166+ } ) ;
167+
168+ const ownEmptyExtensions = new GraphQLError (
169+ 'OwnEmptyExtensions' ,
170+ undefined ,
171+ undefined ,
172+ undefined ,
173+ undefined ,
174+ original ,
175+ { } ,
176+ ) ;
177+
178+ expect ( ownEmptyExtensions ) . to . deep . include ( {
179+ message : 'OwnEmptyExtensions' ,
180+ originalError : original ,
181+ extensions : { } ,
182+ } ) ;
183+ } ) ;
184+
125185 it ( 'serializes to include all standard fields' , ( ) => {
126186 const eShort = new GraphQLError ( 'msg' ) ;
127187 expect ( JSON . stringify ( eShort , null , 2 ) + '\n' ) . to . equal ( dedent `
0 commit comments