Skip to content

Commit 308d984

Browse files
committed
Spec compliant @skip/@include
Related GraphQL-js commits: graphql/graphql-js@d6da0bf graphql/graphql-js@47f87fa
1 parent 5595fc9 commit 308d984

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

graphql/execution/base.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,8 @@ def should_include_node(ctx, directives):
199199
skip_ast.arguments,
200200
ctx.variable_values,
201201
)
202-
return not args.get('if')
202+
if args.get('if') is True:
203+
return False
203204

204205
include_ast = None
205206

@@ -215,7 +216,8 @@ def should_include_node(ctx, directives):
215216
ctx.variable_values,
216217
)
217218

218-
return bool(args.get('if'))
219+
if args.get('if') is False:
220+
return False
219221

220222
return True
221223

graphql/execution/tests/test_directives.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,3 +295,21 @@ def test_include_on_inline_anonymous_fragment_does_not_omit_field():
295295
result = execute_test_query(q)
296296
assert not result.errors
297297
assert result.data == {'a': 'a', 'b': 'b'}
298+
299+
300+
def test_works_directives_include_and_no_skip():
301+
result = execute_test_query('{ a, b @include(if: true) @skip(if: false) }')
302+
assert not result.errors
303+
assert result.data == {'a': 'a', 'b': 'b'}
304+
305+
306+
def test_works_directives_include_and_skip():
307+
result = execute_test_query('{ a, b @include(if: true) @skip(if: true) }')
308+
assert not result.errors
309+
assert result.data == {'a': 'a'}
310+
311+
312+
def test_works_directives_no_include_or_skip():
313+
result = execute_test_query('{ a, b @include(if: false) @skip(if: false) }')
314+
assert not result.errors
315+
assert result.data == {'a': 'a'}

0 commit comments

Comments
 (0)