@@ -4,6 +4,7 @@ import * as graphql16 from 'graphql16';
4
4
import { parse } from '../parser' ;
5
5
import { print , printString , printBlockString } from '../printer' ;
6
6
import kitchenSinkAST from './fixtures/kitchen_sink.json' ;
7
+ import { Kind } from 'src/kind' ;
7
8
8
9
function dedentString ( string : string ) {
9
10
const trimmedStr = string
@@ -115,6 +116,94 @@ describe('print', () => {
115
116
) . toBe ( '[Type!]' ) ;
116
117
} ) ;
117
118
119
+ it ( 'prints fragment-definition with variables' , ( ) => {
120
+ expect (
121
+ print ( {
122
+ kind : Kind . FRAGMENT_DEFINITION ,
123
+ directives : [ ] ,
124
+ name : {
125
+ kind : Kind . NAME ,
126
+ value : 'x' ,
127
+ } ,
128
+ typeCondition : {
129
+ kind : Kind . NAMED_TYPE ,
130
+ name : {
131
+ kind : Kind . NAME ,
132
+ value : 'Type' ,
133
+ } ,
134
+ } ,
135
+ variableDefinitions : [
136
+ {
137
+ kind : Kind . VARIABLE_DEFINITION ,
138
+ type : {
139
+ kind : Kind . NAMED_TYPE ,
140
+ name : {
141
+ kind : Kind . NAME ,
142
+ value : 'Int' ,
143
+ } ,
144
+ } ,
145
+ variable : {
146
+ kind : Kind . VARIABLE ,
147
+ name : {
148
+ kind : Kind . NAME ,
149
+ value : 'var' ,
150
+ } ,
151
+ } ,
152
+ defaultValue : {
153
+ kind : Kind . INT ,
154
+ value : '1' ,
155
+ } ,
156
+ directives : [ ] ,
157
+ } ,
158
+ ] ,
159
+ selectionSet : {
160
+ kind : Kind . SELECTION_SET ,
161
+ selections : [
162
+ {
163
+ alias : undefined ,
164
+ kind : Kind . FIELD ,
165
+ directives : [ ] ,
166
+ selectionSet : undefined ,
167
+ arguments : [ ] ,
168
+ name : {
169
+ kind : Kind . NAME ,
170
+ value : 'field' ,
171
+ } ,
172
+ } ,
173
+ ] ,
174
+ } ,
175
+ } as any )
176
+ ) . toBe ( `fragment x on Type($var: Int = 1) {
177
+ field
178
+ }` ) ;
179
+ } ) ;
180
+
181
+ it ( 'prints fragment-spread with arguments' , ( ) => {
182
+ expect (
183
+ print ( {
184
+ kind : Kind . FRAGMENT_SPREAD ,
185
+ directives : [ ] ,
186
+ name : {
187
+ kind : Kind . NAME ,
188
+ value : 'x' ,
189
+ } ,
190
+ arguments : [
191
+ {
192
+ kind : 'Argument' ,
193
+ name : {
194
+ kind : 'Name' ,
195
+ value : 'var' ,
196
+ } ,
197
+ value : {
198
+ kind : 'IntValue' ,
199
+ value : '2' ,
200
+ } ,
201
+ } ,
202
+ ] ,
203
+ } as any )
204
+ ) . toBe ( `...x(var: 2)` ) ;
205
+ } ) ;
206
+
118
207
// NOTE: The shim won't throw for invalid AST nodes
119
208
it ( 'returns empty strings for invalid AST' , ( ) => {
120
209
const badAST = { random : 'Data' } ;
0 commit comments