Skip to content

Commit a57a631

Browse files
committed
Add directives test
1 parent b347a7a commit a57a631

File tree

1 file changed

+241
-0
lines changed

1 file changed

+241
-0
lines changed
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
from graphql.core.execution import execute
2+
from graphql.core.language.parser import parse
3+
from graphql.core.type import GraphQLSchema, GraphQLObjectType, GraphQLField, GraphQLString
4+
5+
6+
schema = GraphQLSchema(
7+
query=GraphQLObjectType(
8+
name='TestType',
9+
fields={
10+
'a': GraphQLField(GraphQLString),
11+
'b': GraphQLField(GraphQLString),
12+
}
13+
)
14+
)
15+
16+
17+
class Data(object):
18+
a = 'a'
19+
b = 'b'
20+
21+
22+
def execute_test_query(doc):
23+
return execute(schema, Data, parse(doc))
24+
25+
26+
def test_basic_query_works():
27+
result = execute_test_query('{ a, b }')
28+
assert not result.errors
29+
assert result.data == {'a': 'a', 'b': 'b'}
30+
31+
32+
def test_if_true_includes_scalar():
33+
result = execute_test_query('{ a, b @include(if: true) }')
34+
assert not result.errors
35+
assert result.data == {'a': 'a', 'b': 'b'}
36+
37+
38+
def test_if_false_omits_on_scalar():
39+
result = execute_test_query('{ a, b @include(if: false) }')
40+
assert not result.errors
41+
assert result.data == {'a': 'a'}
42+
43+
44+
def test_skip_false_includes_scalar():
45+
result = execute_test_query('{ a, b @skip(if: false) }')
46+
assert not result.errors
47+
assert result.data == {'a': 'a', 'b': 'b'}
48+
49+
50+
def test_skip_true_omits_scalar():
51+
result = execute_test_query('{ a, b @skip(if: true) }')
52+
assert not result.errors
53+
assert result.data == {'a': 'a'}
54+
55+
56+
def test_if_false_omits_fragment_spread():
57+
q = '''
58+
query Q {
59+
a
60+
...Frag @include(if: false)
61+
}
62+
fragment Frag on TestType {
63+
b
64+
}
65+
'''
66+
result = execute_test_query(q)
67+
assert not result.errors
68+
assert result.data == {'a': 'a'}
69+
70+
71+
def test_if_true_includes_fragment_spread():
72+
q = '''
73+
query Q {
74+
a
75+
...Frag @include(if: true)
76+
}
77+
fragment Frag on TestType {
78+
b
79+
}
80+
'''
81+
result = execute_test_query(q)
82+
assert not result.errors
83+
assert result.data == {'a': 'a', 'b': 'b'}
84+
85+
86+
def test_skip_false_includes_fragment_spread():
87+
q = '''
88+
query Q {
89+
a
90+
...Frag @skip(if: false)
91+
}
92+
fragment Frag on TestType {
93+
b
94+
}
95+
'''
96+
result = execute_test_query(q)
97+
assert not result.errors
98+
assert result.data == {'a': 'a', 'b': 'b'}
99+
100+
101+
def test_skip_true_omits_fragment_spread():
102+
q = '''
103+
query Q {
104+
a
105+
...Frag @skip(if: true)
106+
}
107+
fragment Frag on TestType {
108+
b
109+
}
110+
'''
111+
result = execute_test_query(q)
112+
assert not result.errors
113+
assert result.data == {'a': 'a'}
114+
115+
116+
def test_if_false_omits_inline_fragment():
117+
q = '''
118+
query Q {
119+
a
120+
... on TestType @include(if: false) {
121+
b
122+
}
123+
}
124+
fragment Frag on TestType {
125+
b
126+
}
127+
'''
128+
result = execute_test_query(q)
129+
assert not result.errors
130+
assert result.data == {'a': 'a'}
131+
132+
133+
def test_if_true_includes_inline_fragment():
134+
q = '''
135+
query Q {
136+
a
137+
... on TestType @include(if: true) {
138+
b
139+
}
140+
}
141+
fragment Frag on TestType {
142+
b
143+
}
144+
'''
145+
result = execute_test_query(q)
146+
assert not result.errors
147+
assert result.data == {'a': 'a', 'b': 'b'}
148+
149+
150+
def test_skip_false_includes_inline_fragment():
151+
q = '''
152+
query Q {
153+
a
154+
... on TestType @skip(if: false) {
155+
b
156+
}
157+
}
158+
fragment Frag on TestType {
159+
b
160+
}
161+
'''
162+
result = execute_test_query(q)
163+
assert not result.errors
164+
assert result.data == {'a': 'a', 'b': 'b'}
165+
166+
167+
def test_skip_true_omits_inline_fragment():
168+
q = '''
169+
query Q {
170+
a
171+
... on TestType @skip(if: true) {
172+
b
173+
}
174+
}
175+
fragment Frag on TestType {
176+
b
177+
}
178+
'''
179+
result = execute_test_query(q)
180+
assert not result.errors
181+
assert result.data == {'a': 'a'}
182+
183+
184+
def test_if_false_omits_fragment():
185+
q = '''
186+
query Q {
187+
a
188+
...Frag
189+
}
190+
fragment Frag on TestType @include(if: false) {
191+
b
192+
}
193+
'''
194+
result = execute_test_query(q)
195+
assert not result.errors
196+
assert result.data == {'a': 'a'}
197+
198+
199+
def test_if_true_includes_fragment():
200+
q = '''
201+
query Q {
202+
a
203+
...Frag
204+
}
205+
fragment Frag on TestType @include(if: true) {
206+
b
207+
}
208+
'''
209+
result = execute_test_query(q)
210+
assert not result.errors
211+
assert result.data == {'a': 'a', 'b': 'b'}
212+
213+
214+
def test_skip_false_includes_fragment():
215+
q = '''
216+
query Q {
217+
a
218+
...Frag
219+
}
220+
fragment Frag on TestType @skip(if: false) {
221+
b
222+
}
223+
'''
224+
result = execute_test_query(q)
225+
assert not result.errors
226+
assert result.data == {'a': 'a', 'b': 'b'}
227+
228+
229+
def test_skip_true_omits_fragment():
230+
q = '''
231+
query Q {
232+
a
233+
...Frag
234+
}
235+
fragment Frag on TestType @skip(if: true) {
236+
b
237+
}
238+
'''
239+
result = execute_test_query(q)
240+
assert not result.errors
241+
assert result.data == {'a': 'a'}

0 commit comments

Comments
 (0)