Skip to content

Commit 37924d2

Browse files
committed
Include test for extending a schema that uses Enums
1 parent 1de281b commit 37924d2

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

src/utilities/__tests__/extendSchema.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
GraphQLUnionType,
2121
GraphQLID,
2222
GraphQLString,
23+
GraphQLEnumType,
2324
GraphQLNonNull,
2425
GraphQLList,
2526
} from '../../type';
@@ -70,12 +71,21 @@ const SomeUnionType = new GraphQLUnionType({
7071
types: [ FooType, BizType ],
7172
});
7273

74+
const SomeEnumType = new GraphQLEnumType({
75+
name: 'SomeEnum',
76+
values: {
77+
'ONE': { value: 1 },
78+
'TWO': { value: 2 },
79+
}
80+
});
81+
7382
const testSchema = new GraphQLSchema({
7483
query: new GraphQLObjectType({
7584
name: 'Query',
7685
fields: () => ({
7786
foo: { type: FooType },
7887
someUnion: { type: SomeUnionType },
88+
someEnum: { type: SomeEnumType },
7989
someInterface: {
8090
args: { id: { type: new GraphQLNonNull(GraphQLID) } },
8191
type: SomeInterfaceType
@@ -153,9 +163,15 @@ type Foo implements SomeInterface {
153163
type Query {
154164
foo: Foo
155165
someUnion: SomeUnion
166+
someEnum: SomeEnum
156167
someInterface(id: ID!): SomeInterface
157168
}
158169
170+
enum SomeEnum {
171+
ONE
172+
TWO
173+
}
174+
159175
interface SomeInterface {
160176
name: String
161177
some: SomeInterface
@@ -208,9 +224,70 @@ input NewInputObj {
208224
type Query {
209225
foo: Foo
210226
someUnion: SomeUnion
227+
someEnum: SomeEnum
228+
someInterface(id: ID!): SomeInterface
229+
}
230+
231+
enum SomeEnum {
232+
ONE
233+
TWO
234+
}
235+
236+
interface SomeInterface {
237+
name: String
238+
some: SomeInterface
239+
}
240+
241+
union SomeUnion = Foo | Biz
242+
`);
243+
});
244+
245+
it('extends objects by adding new fields with existing types', () => {
246+
const ast = parse(`
247+
extend type Foo {
248+
newField(arg1: SomeEnum!): SomeEnum
249+
}
250+
251+
input NewInputObj {
252+
field1: Int
253+
field2: [Float]
254+
field3: String!
255+
}
256+
`);
257+
const originalPrint = printSchema(testSchema);
258+
const extendedSchema = extendSchema(testSchema, ast);
259+
expect(extendedSchema).to.not.equal(testSchema);
260+
expect(printSchema(testSchema)).to.equal(originalPrint);
261+
expect(printSchema(extendedSchema)).to.equal(
262+
`type Bar implements SomeInterface {
263+
name: String
264+
some: SomeInterface
265+
foo: Foo
266+
}
267+
268+
type Biz {
269+
fizz: String
270+
}
271+
272+
type Foo implements SomeInterface {
273+
name: String
274+
some: SomeInterface
275+
tree: [Foo]!
276+
newField(arg1: SomeEnum!): SomeEnum
277+
}
278+
279+
type Query {
280+
foo: Foo
281+
someUnion: SomeUnion
282+
someEnum: SomeEnum
211283
someInterface(id: ID!): SomeInterface
212284
}
213285
286+
enum SomeEnum {
287+
ONE
288+
TWO
289+
}
290+
214291
interface SomeInterface {
215292
name: String
216293
some: SomeInterface
@@ -253,9 +330,15 @@ type Foo implements SomeInterface {
253330
type Query {
254331
foo: Foo
255332
someUnion: SomeUnion
333+
someEnum: SomeEnum
256334
someInterface(id: ID!): SomeInterface
257335
}
258336
337+
enum SomeEnum {
338+
ONE
339+
TWO
340+
}
341+
259342
interface SomeInterface {
260343
name: String
261344
some: SomeInterface
@@ -348,9 +431,15 @@ union NewUnion = NewObject | NewOtherObject
348431
type Query {
349432
foo: Foo
350433
someUnion: SomeUnion
434+
someEnum: SomeEnum
351435
someInterface(id: ID!): SomeInterface
352436
}
353437
438+
enum SomeEnum {
439+
ONE
440+
TWO
441+
}
442+
354443
interface SomeInterface {
355444
name: String
356445
some: SomeInterface
@@ -399,9 +488,15 @@ interface NewInterface {
399488
type Query {
400489
foo: Foo
401490
someUnion: SomeUnion
491+
someEnum: SomeEnum
402492
someInterface(id: ID!): SomeInterface
403493
}
404494
495+
enum SomeEnum {
496+
ONE
497+
TWO
498+
}
499+
405500
interface SomeInterface {
406501
name: String
407502
some: SomeInterface
@@ -465,9 +560,15 @@ interface NewInterface {
465560
type Query {
466561
foo: Foo
467562
someUnion: SomeUnion
563+
someEnum: SomeEnum
468564
someInterface(id: ID!): SomeInterface
469565
}
470566
567+
enum SomeEnum {
568+
ONE
569+
TWO
570+
}
571+
471572
interface SomeInterface {
472573
name: String
473574
some: SomeInterface

0 commit comments

Comments
 (0)