Skip to content

Commit 85d4c99

Browse files
Add missing toObjMap' conversion for extensions` inside direc… (#2138)
1 parent 8ab6524 commit 85d4c99

File tree

2 files changed

+41
-31
lines changed

2 files changed

+41
-31
lines changed

Diff for: src/type/__tests__/extensions-test.js

+40-30
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ import {
1818

1919
const dummyType = new GraphQLScalarType({ name: 'DummyScalar' });
2020

21+
function expectObjMap(value) {
22+
invariant(value != null && typeof value === 'object');
23+
expect(Object.getPrototypeOf(value)).to.equal(null);
24+
return expect(value);
25+
}
26+
2127
describe('Type System: Extensions', () => {
2228
describe('GraphQLScalarType', () => {
2329
it('without extensions', () => {
@@ -35,10 +41,10 @@ describe('Type System: Extensions', () => {
3541
extensions: scalarExtensions,
3642
});
3743

38-
expect(someScalar.extensions).to.deep.equal(scalarExtensions);
44+
expectObjMap(someScalar.extensions).to.deep.equal(scalarExtensions);
3945

4046
const config = someScalar.toConfig();
41-
expect(config.extensions).to.deep.equal(scalarExtensions);
47+
expectObjMap(config.extensions).to.deep.equal(scalarExtensions);
4248
});
4349
});
4450

@@ -95,19 +101,19 @@ describe('Type System: Extensions', () => {
95101
extensions: objectExtensions,
96102
});
97103

98-
expect(someObject.extensions).to.deep.equal(objectExtensions);
104+
expectObjMap(someObject.extensions).to.deep.equal(objectExtensions);
99105
const someField = someObject.getFields().someField;
100-
expect(someField.extensions).to.deep.equal(fieldExtensions);
106+
expectObjMap(someField.extensions).to.deep.equal(fieldExtensions);
101107
const someArg = someField.args[0];
102-
expect(someArg.extensions).to.deep.equal(argExtensions);
108+
expectObjMap(someArg.extensions).to.deep.equal(argExtensions);
103109

104110
const config = someObject.toConfig();
105-
expect(config.extensions).to.deep.equal(objectExtensions);
111+
expectObjMap(config.extensions).to.deep.equal(objectExtensions);
106112
const someFieldConfig = config.fields.someField;
107-
expect(someFieldConfig.extensions).to.deep.equal(fieldExtensions);
113+
expectObjMap(someFieldConfig.extensions).to.deep.equal(fieldExtensions);
108114
invariant(someFieldConfig.args);
109115
const someArgConfig = someFieldConfig.args.someArg;
110-
expect(someArgConfig.extensions).to.deep.equal(argExtensions);
116+
expectObjMap(someArgConfig.extensions).to.deep.equal(argExtensions);
111117
});
112118
});
113119

@@ -164,19 +170,19 @@ describe('Type System: Extensions', () => {
164170
extensions: interfaceExtensions,
165171
});
166172

167-
expect(someInterface.extensions).to.deep.equal(interfaceExtensions);
173+
expectObjMap(someInterface.extensions).to.deep.equal(interfaceExtensions);
168174
const someField = someInterface.getFields().someField;
169-
expect(someField.extensions).to.deep.equal(fieldExtensions);
175+
expectObjMap(someField.extensions).to.deep.equal(fieldExtensions);
170176
const someArg = someField.args[0];
171-
expect(someArg.extensions).to.deep.equal(argExtensions);
177+
expectObjMap(someArg.extensions).to.deep.equal(argExtensions);
172178

173179
const config = someInterface.toConfig();
174-
expect(config.extensions).to.deep.equal(interfaceExtensions);
180+
expectObjMap(config.extensions).to.deep.equal(interfaceExtensions);
175181
const someFieldConfig = config.fields.someField;
176-
expect(someFieldConfig.extensions).to.deep.equal(fieldExtensions);
182+
expectObjMap(someFieldConfig.extensions).to.deep.equal(fieldExtensions);
177183
invariant(someFieldConfig.args);
178184
const someArgConfig = someFieldConfig.args.someArg;
179-
expect(someArgConfig.extensions).to.deep.equal(argExtensions);
185+
expectObjMap(someArgConfig.extensions).to.deep.equal(argExtensions);
180186
});
181187
});
182188

@@ -202,10 +208,10 @@ describe('Type System: Extensions', () => {
202208
extensions: unionExtensions,
203209
});
204210

205-
expect(someUnion.extensions).to.deep.equal(unionExtensions);
211+
expectObjMap(someUnion.extensions).to.deep.equal(unionExtensions);
206212

207213
const config = someUnion.toConfig();
208-
expect(config.extensions).to.deep.equal(unionExtensions);
214+
expectObjMap(config.extensions).to.deep.equal(unionExtensions);
209215
});
210216
});
211217

@@ -242,14 +248,14 @@ describe('Type System: Extensions', () => {
242248
extensions: enumExtensions,
243249
});
244250

245-
expect(someEnum.extensions).to.deep.equal(enumExtensions);
251+
expectObjMap(someEnum.extensions).to.deep.equal(enumExtensions);
246252
const someValue = someEnum.getValues()[0];
247-
expect(someValue.extensions).to.deep.equal(valueExtensions);
253+
expectObjMap(someValue.extensions).to.deep.equal(valueExtensions);
248254

249255
const config = someEnum.toConfig();
250-
expect(config.extensions).to.deep.equal(enumExtensions);
256+
expectObjMap(config.extensions).to.deep.equal(enumExtensions);
251257
const someValueConfig = config.values.SOME_VALUE;
252-
expect(someValueConfig.extensions).to.deep.equal(valueExtensions);
258+
expectObjMap(someValueConfig.extensions).to.deep.equal(valueExtensions);
253259
});
254260
});
255261

@@ -293,14 +299,18 @@ describe('Type System: Extensions', () => {
293299
extensions: inputObjectExtensions,
294300
});
295301

296-
expect(someInputObject.extensions).to.deep.equal(inputObjectExtensions);
302+
expectObjMap(someInputObject.extensions).to.deep.equal(
303+
inputObjectExtensions,
304+
);
297305
const someInputField = someInputObject.getFields().someInputField;
298-
expect(someInputField.extensions).to.deep.equal(inputFieldExtensions);
306+
expectObjMap(someInputField.extensions).to.deep.equal(
307+
inputFieldExtensions,
308+
);
299309

300310
const config = someInputObject.toConfig();
301-
expect(config.extensions).to.deep.equal(inputObjectExtensions);
311+
expectObjMap(config.extensions).to.deep.equal(inputObjectExtensions);
302312
const someInputFieldConfig = config.fields.someInputField;
303-
expect(someInputFieldConfig.extensions).to.deep.equal(
313+
expectObjMap(someInputFieldConfig.extensions).to.deep.equal(
304314
inputFieldExtensions,
305315
);
306316
});
@@ -346,14 +356,14 @@ describe('Type System: Extensions', () => {
346356
extensions: directiveExtensions,
347357
});
348358

349-
expect(someDirective.extensions).to.deep.equal(directiveExtensions);
359+
expectObjMap(someDirective.extensions).to.deep.equal(directiveExtensions);
350360
const someArg = someDirective.args[0];
351-
expect(someArg.extensions).to.deep.equal(argExtensions);
361+
expectObjMap(someArg.extensions).to.deep.equal(argExtensions);
352362

353363
const config = someDirective.toConfig();
354-
expect(config.extensions).to.deep.equal(directiveExtensions);
364+
expectObjMap(config.extensions).to.deep.equal(directiveExtensions);
355365
const someArgConfig = config.args.someArg;
356-
expect(someArgConfig.extensions).to.deep.equal(argExtensions);
366+
expectObjMap(someArgConfig.extensions).to.deep.equal(argExtensions);
357367
});
358368
});
359369

@@ -374,10 +384,10 @@ describe('Type System: Extensions', () => {
374384

375385
const schema = new GraphQLSchema({ extensions: schemaExtensions });
376386

377-
expect(schema.extensions).to.deep.equal(schemaExtensions);
387+
expectObjMap(schema.extensions).to.deep.equal(schemaExtensions);
378388

379389
const config = schema.toConfig();
380-
expect(config.extensions).to.deep.equal(schemaExtensions);
390+
expectObjMap(config.extensions).to.deep.equal(schemaExtensions);
381391
});
382392
});
383393
});

Diff for: src/type/directives.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export class GraphQLDirective {
8686
description: arg.description === undefined ? null : arg.description,
8787
type: arg.type,
8888
defaultValue: arg.defaultValue,
89-
extensions: arg.extensions,
89+
extensions: arg.extensions && toObjMap(arg.extensions),
9090
astNode: arg.astNode,
9191
}));
9292
}

0 commit comments

Comments
 (0)