@@ -64,15 +64,17 @@ def with_no_directives():
64
64
"""
65
65
)
66
66
67
- def with_known_directives ():
67
+ def with_standard_directives ():
68
68
assert_valid (
69
69
"""
70
70
{
71
- dog @include(if: true) {
72
- name
73
- }
74
71
human @skip(if: false) {
75
72
name
73
+ pets {
74
+ ... on Dog @include(if: true) {
75
+ name
76
+ }
77
+ }
76
78
}
77
79
}
78
80
"""
@@ -82,102 +84,136 @@ def with_unknown_directive():
82
84
assert_errors (
83
85
"""
84
86
{
85
- dog @unknown(directive: "value") {
87
+ human @unknown(directive: "value") {
86
88
name
87
89
}
88
90
}
89
91
""" ,
90
- [{"message" : "Unknown directive '@unknown'." , "locations" : [(3 , 19 )]}],
92
+ [{"message" : "Unknown directive '@unknown'." , "locations" : [(3 , 21 )]}],
91
93
)
92
94
93
95
def with_many_unknown_directives ():
94
96
assert_errors (
95
97
"""
96
98
{
97
- dog @unknown(directive: "value") {
98
- name
99
- }
100
- human @unknown(directive: "value") {
99
+ __typename @unknown
100
+ human @unknown {
101
101
name
102
- pets @unknown(directive: "value") {
102
+ pets @unknown {
103
103
name
104
104
}
105
105
}
106
106
}
107
107
""" ,
108
108
[
109
- {"message" : "Unknown directive '@unknown'." , "locations" : [(3 , 19 )]},
110
- {"message" : "Unknown directive '@unknown'." , "locations" : [(6 , 21 )]},
111
- {"message" : "Unknown directive '@unknown'." , "locations" : [(8 , 22 )]},
109
+ {"message" : "Unknown directive '@unknown'." , "locations" : [(3 , 26 )]},
110
+ {"message" : "Unknown directive '@unknown'." , "locations" : [(4 , 21 )]},
111
+ {"message" : "Unknown directive '@unknown'." , "locations" : [(6 , 22 )]},
112
112
],
113
113
)
114
114
115
115
def with_well_placed_directives ():
116
116
assert_valid (
117
117
"""
118
- query ($var: Boolean) @onQuery {
119
- name @include(if: $var)
120
- ...Frag @include(if: true)
121
- skippedField @skip(if: true)
122
- ...SkippedFrag @skip(if: true)
123
-
124
- ... @skip(if: true) {
125
- skippedField
118
+ query ($var: Boolean @onVariableDefinition) @onQuery {
119
+ human @onField {
120
+ ...Frag @onFragmentSpread
121
+ ... @onInlineFragment {
122
+ name @onField
123
+ }
126
124
}
127
125
}
128
126
129
127
mutation @onMutation {
130
- someField
128
+ someField @onField
131
129
}
132
130
133
131
subscription @onSubscription {
134
- someField
132
+ someField @onField
135
133
}
136
134
137
- fragment Frag on SomeType @onFragmentDefinition {
138
- someField
139
- }
140
- """
141
- )
142
-
143
- def with_well_placed_variable_definition_directive ():
144
- assert_valid (
145
- """
146
- query Foo($var: Boolean @onVariableDefinition) {
147
- name
135
+ fragment Frag on Human @onFragmentDefinition {
136
+ name @onField
148
137
}
149
138
"""
150
139
)
151
140
152
141
def with_misplaced_directives ():
153
142
assert_errors (
154
143
"""
155
- query Foo($var: Boolean) @include(if: true) {
156
- name @onQuery @include(if: $var)
157
- ...Frag @onQuery
144
+ query ($var: Boolean @onQuery) @onMutation {
145
+ human @onQuery {
146
+ ...Frag @onQuery
147
+ ... @onQuery {
148
+ name @onQuery
149
+ }
150
+ }
158
151
}
159
152
160
- mutation Bar @onQuery {
161
- someField
153
+ mutation @onQuery {
154
+ someField @onQuery
155
+ }
156
+
157
+ subscription @onQuery {
158
+ someField @onQuery
159
+ }
160
+
161
+ fragment Frag on Human @onQuery {
162
+ name @onQuery
162
163
}
163
164
""" ,
164
165
[
165
166
{
166
- "message" : "Directive '@include' may not be used on query." ,
167
- "locations" : [(2 , 38 )],
167
+ "message" : "Directive '@onQuery'"
168
+ " may not be used on variable definition." ,
169
+ "locations" : [(2 , 34 )],
170
+ },
171
+ {
172
+ "message" : "Directive '@onMutation' may not be used on query." ,
173
+ "locations" : [(2 , 44 )],
168
174
},
169
175
{
170
176
"message" : "Directive '@onQuery' may not be used on field." ,
171
- "locations" : [(3 , 20 )],
177
+ "locations" : [(3 , 21 )],
172
178
},
173
179
{
174
180
"message" : "Directive '@onQuery'"
175
181
" may not be used on fragment spread." ,
176
- "locations" : [(4 , 23 )],
182
+ "locations" : [(4 , 25 )],
183
+ },
184
+ {
185
+ "message" : "Directive '@onQuery'"
186
+ " may not be used on inline fragment." ,
187
+ "locations" : [(5 , 21 )],
188
+ },
189
+ {
190
+ "message" : "Directive '@onQuery' may not be used on field." ,
191
+ "locations" : [(6 , 24 )],
177
192
},
178
193
{
179
194
"message" : "Directive '@onQuery' may not be used on mutation." ,
180
- "locations" : [(7 , 26 )],
195
+ "locations" : [(11 , 22 )],
196
+ },
197
+ {
198
+ "message" : "Directive '@onQuery' may not be used on field." ,
199
+ "locations" : [(12 , 25 )],
200
+ },
201
+ {
202
+ "message" : "Directive '@onQuery' may not be used on subscription." ,
203
+ "locations" : [(15 , 26 )],
204
+ },
205
+ {
206
+ "message" : "Directive '@onQuery' may not be used on field." ,
207
+ "locations" : [(16 , 25 )],
208
+ },
209
+ {
210
+ "message" : "Directive '@onQuery'"
211
+ " may not be used on fragment definition." ,
212
+ "locations" : [(19 , 36 )],
213
+ },
214
+ {
215
+ "message" : "Directive '@onQuery' may not be used on field." ,
216
+ "locations" : [(20 , 20 )],
181
217
},
182
218
],
183
219
)
0 commit comments