@@ -7,152 +7,126 @@ import { graphqlSync } from '../graphql';
7
7
8
8
import { StarWarsSchema } from './starWarsSchema' ;
9
9
10
+ function queryStarWars ( source ) {
11
+ const result = graphqlSync ( { schema : StarWarsSchema , source } ) ;
12
+ expect ( Object . keys ( result ) ) . to . deep . equal ( [ 'data' ] ) ;
13
+ return result . data ;
14
+ }
15
+
10
16
describe ( 'Star Wars Introspection Tests' , ( ) => {
11
17
describe ( 'Basic Introspection' , ( ) => {
12
18
it ( 'Allows querying the schema for types' , ( ) => {
13
- const query = `
14
- query IntrospectionTypeQuery {
19
+ const data = queryStarWars ( `
20
+ {
15
21
__schema {
16
22
types {
17
23
name
18
24
}
19
25
}
20
26
}
21
- ` ;
22
- const expected = {
27
+ ` ) ;
28
+
29
+ // Include all types used by StarWars schema, introspection types and
30
+ // standard directives. For example, `Boolean` is used in `@skip`,
31
+ // `@include` and also inside introspection types.
32
+ expect ( data ) . to . deep . equal ( {
23
33
__schema : {
24
34
types : [
25
- {
26
- name : 'Query' ,
27
- } ,
28
- {
29
- name : 'Episode' ,
30
- } ,
31
- {
32
- name : 'Character' ,
33
- } ,
34
- {
35
- name : 'String' ,
36
- } ,
37
- {
38
- name : 'Human' ,
39
- } ,
40
- {
41
- name : 'Droid' ,
42
- } ,
43
- {
44
- name : '__Schema' ,
45
- } ,
46
- {
47
- name : '__Type' ,
48
- } ,
49
- {
50
- name : '__TypeKind' ,
51
- } ,
52
- {
53
- name : 'Boolean' ,
54
- } ,
55
- {
56
- name : '__Field' ,
57
- } ,
58
- {
59
- name : '__InputValue' ,
60
- } ,
61
- {
62
- name : '__EnumValue' ,
63
- } ,
64
- {
65
- name : '__Directive' ,
66
- } ,
67
- {
68
- name : '__DirectiveLocation' ,
69
- } ,
35
+ { name : 'Query' } ,
36
+ { name : 'Episode' } ,
37
+ { name : 'Character' } ,
38
+ { name : 'String' } ,
39
+ { name : 'Human' } ,
40
+ { name : 'Droid' } ,
41
+ { name : '__Schema' } ,
42
+ { name : '__Type' } ,
43
+ { name : '__TypeKind' } ,
44
+ { name : 'Boolean' } ,
45
+ { name : '__Field' } ,
46
+ { name : '__InputValue' } ,
47
+ { name : '__EnumValue' } ,
48
+ { name : '__Directive' } ,
49
+ { name : '__DirectiveLocation' } ,
70
50
] ,
71
51
} ,
72
- } ;
73
- const result = graphqlSync ( StarWarsSchema , query ) ;
74
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
52
+ } ) ;
75
53
} ) ;
76
54
77
55
it ( 'Allows querying the schema for query type' , ( ) => {
78
- const query = `
79
- query IntrospectionQueryTypeQuery {
56
+ const data = queryStarWars ( `
57
+ {
80
58
__schema {
81
59
queryType {
82
60
name
83
61
}
84
62
}
85
63
}
86
- ` ;
87
- const expected = {
64
+ ` ) ;
65
+
66
+ expect ( data ) . to . deep . equal ( {
88
67
__schema : {
89
68
queryType : {
90
69
name : 'Query' ,
91
70
} ,
92
71
} ,
93
- } ;
94
- const result = graphqlSync ( StarWarsSchema , query ) ;
95
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
72
+ } ) ;
96
73
} ) ;
97
74
98
75
it ( 'Allows querying the schema for a specific type' , ( ) => {
99
- const query = `
100
- query IntrospectionDroidTypeQuery {
76
+ const data = queryStarWars ( `
77
+ {
101
78
__type(name: "Droid") {
102
79
name
103
80
}
104
81
}
105
- ` ;
106
- const expected = {
82
+ ` ) ;
83
+
84
+ expect ( data ) . to . deep . equal ( {
107
85
__type : {
108
86
name : 'Droid' ,
109
87
} ,
110
- } ;
111
- const result = graphqlSync ( StarWarsSchema , query ) ;
112
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
88
+ } ) ;
113
89
} ) ;
114
90
115
91
it ( 'Allows querying the schema for an object kind' , ( ) => {
116
- const query = `
117
- query IntrospectionDroidKindQuery {
92
+ const data = queryStarWars ( `
93
+ {
118
94
__type(name: "Droid") {
119
95
name
120
96
kind
121
97
}
122
98
}
123
- ` ;
124
- const expected = {
99
+ ` ) ;
100
+
101
+ expect ( data ) . to . deep . equal ( {
125
102
__type : {
126
103
name : 'Droid' ,
127
104
kind : 'OBJECT' ,
128
105
} ,
129
- } ;
130
- const result = graphqlSync ( StarWarsSchema , query ) ;
131
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
106
+ } ) ;
132
107
} ) ;
133
108
134
109
it ( 'Allows querying the schema for an interface kind' , ( ) => {
135
- const query = `
136
- query IntrospectionCharacterKindQuery {
110
+ const data = queryStarWars ( `
111
+ {
137
112
__type(name: "Character") {
138
113
name
139
114
kind
140
115
}
141
116
}
142
- ` ;
143
- const expected = {
117
+ ` ) ;
118
+
119
+ expect ( data ) . to . deep . equal ( {
144
120
__type : {
145
121
name : 'Character' ,
146
122
kind : 'INTERFACE' ,
147
123
} ,
148
- } ;
149
- const result = graphqlSync ( StarWarsSchema , query ) ;
150
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
124
+ } ) ;
151
125
} ) ;
152
126
153
127
it ( 'Allows querying the schema for object fields' , ( ) => {
154
- const query = `
155
- query IntrospectionDroidFieldsQuery {
128
+ const data = queryStarWars ( `
129
+ {
156
130
__type(name: "Droid") {
157
131
name
158
132
fields {
@@ -164,64 +138,44 @@ describe('Star Wars Introspection Tests', () => {
164
138
}
165
139
}
166
140
}
167
- ` ;
168
- const expected = {
141
+ ` ) ;
142
+
143
+ expect ( data ) . to . deep . equal ( {
169
144
__type : {
170
145
name : 'Droid' ,
171
146
fields : [
172
147
{
173
148
name : 'id' ,
174
- type : {
175
- name : null ,
176
- kind : 'NON_NULL' ,
177
- } ,
149
+ type : { name : null , kind : 'NON_NULL' } ,
178
150
} ,
179
151
{
180
152
name : 'name' ,
181
- type : {
182
- name : 'String' ,
183
- kind : 'SCALAR' ,
184
- } ,
153
+ type : { name : 'String' , kind : 'SCALAR' } ,
185
154
} ,
186
155
{
187
156
name : 'friends' ,
188
- type : {
189
- name : null ,
190
- kind : 'LIST' ,
191
- } ,
157
+ type : { name : null , kind : 'LIST' } ,
192
158
} ,
193
159
{
194
160
name : 'appearsIn' ,
195
- type : {
196
- name : null ,
197
- kind : 'LIST' ,
198
- } ,
161
+ type : { name : null , kind : 'LIST' } ,
199
162
} ,
200
163
{
201
164
name : 'secretBackstory' ,
202
- type : {
203
- name : 'String' ,
204
- kind : 'SCALAR' ,
205
- } ,
165
+ type : { name : 'String' , kind : 'SCALAR' } ,
206
166
} ,
207
167
{
208
168
name : 'primaryFunction' ,
209
- type : {
210
- name : 'String' ,
211
- kind : 'SCALAR' ,
212
- } ,
169
+ type : { name : 'String' , kind : 'SCALAR' } ,
213
170
} ,
214
171
] ,
215
172
} ,
216
- } ;
217
-
218
- const result = graphqlSync ( StarWarsSchema , query ) ;
219
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
173
+ } ) ;
220
174
} ) ;
221
175
222
176
it ( 'Allows querying the schema for nested object fields' , ( ) => {
223
- const query = `
224
- query IntrospectionDroidNestedFieldsQuery {
177
+ const data = queryStarWars ( `
178
+ {
225
179
__type(name: "Droid") {
226
180
name
227
181
fields {
@@ -237,8 +191,9 @@ describe('Star Wars Introspection Tests', () => {
237
191
}
238
192
}
239
193
}
240
- ` ;
241
- const expected = {
194
+ ` ) ;
195
+
196
+ expect ( data ) . to . deep . equal ( {
242
197
__type : {
243
198
name : 'Droid' ,
244
199
fields : [
@@ -301,14 +256,12 @@ describe('Star Wars Introspection Tests', () => {
301
256
} ,
302
257
] ,
303
258
} ,
304
- } ;
305
- const result = graphqlSync ( StarWarsSchema , query ) ;
306
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
259
+ } ) ;
307
260
} ) ;
308
261
309
262
it ( 'Allows querying the schema for field args' , ( ) => {
310
- const query = `
311
- query IntrospectionQueryTypeQuery {
263
+ const data = queryStarWars ( `
264
+ {
312
265
__schema {
313
266
queryType {
314
267
fields {
@@ -330,8 +283,9 @@ describe('Star Wars Introspection Tests', () => {
330
283
}
331
284
}
332
285
}
333
- ` ;
334
- const expected = {
286
+ ` ) ;
287
+
288
+ expect ( data ) . to . deep . equal ( {
335
289
__schema : {
336
290
queryType : {
337
291
fields : [
@@ -390,29 +344,25 @@ describe('Star Wars Introspection Tests', () => {
390
344
] ,
391
345
} ,
392
346
} ,
393
- } ;
394
-
395
- const result = graphqlSync ( StarWarsSchema , query ) ;
396
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
347
+ } ) ;
397
348
} ) ;
398
349
399
350
it ( 'Allows querying the schema for documentation' , ( ) => {
400
- const query = `
401
- query IntrospectionDroidDescriptionQuery {
351
+ const data = queryStarWars ( `
352
+ {
402
353
__type(name: "Droid") {
403
354
name
404
355
description
405
356
}
406
357
}
407
- ` ;
408
- const expected = {
358
+ ` ) ;
359
+
360
+ expect ( data ) . to . deep . equal ( {
409
361
__type : {
410
362
name : 'Droid' ,
411
363
description : 'A mechanical creature in the Star Wars universe.' ,
412
364
} ,
413
- } ;
414
- const result = graphqlSync ( StarWarsSchema , query ) ;
415
- expect ( result ) . to . deep . equal ( { data : expected } ) ;
365
+ } ) ;
416
366
} ) ;
417
367
} ) ;
418
368
} ) ;
0 commit comments