Skip to content

Commit 7591a42

Browse files
committed
Add automated schema-kitchen-sink test
1 parent 8be956e commit 7591a42

File tree

4 files changed

+111
-6
lines changed

4 files changed

+111
-6
lines changed

test/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ FILE(COPY kitchen-sink.graphql DESTINATION .)
1010

1111
FILE(COPY kitchen-sink.json DESTINATION .)
1212

13+
FILE(COPY schema-kitchen-sink.graphql DESTINATION .)
14+
15+
FILE(COPY schema-kitchen-sink.json DESTINATION .)
16+
1317
ADD_EXECUTABLE(runTests ParserTests.cpp JsonVisitorTests.cpp BuildCAPI.c)
1418

1519
TARGET_LINK_LIBRARIES(runTests gtest gtest_main)

test/ParserTests.cpp

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -273,19 +273,25 @@ TEST(ParserTests, AllowsNonKeywordsForNames) {
273273
}
274274
}
275275

276-
TEST(ParserTests, ProducesCorrectOutputForKitchenSink) {
277-
// Make sure we produce correct saved output for
278-
// kitchen-sink.graphql from graphql-js.
279-
FILE *fp = fopen("test/kitchen-sink.graphql", "r");
276+
static void testCorrectOutputForStockFile(
277+
const char *inputFileName,
278+
const char *outputFileName,
279+
bool withSchemaParsing) {
280+
FILE *fp = fopen(inputFileName, "r");
280281
ASSERT_NE(nullptr, fp);
281282
const char *error = nullptr;
282-
auto ast = parseFile(fp, &error);
283+
std::unique_ptr<Node> ast;
284+
if (withSchemaParsing) {
285+
ast = parseFileWithExperimentalSchemaSupport(fp, &error);
286+
} else {
287+
ast = parseFile(fp, &error);
288+
}
283289
ASSERT_TRUE(ast);
284290
ASSERT_FALSE(error);
285291
fclose(fp);
286292

287293
const char *json = graphql_ast_to_json((const struct GraphQLAstNode *)ast.get());
288-
std::ifstream ifs("test/kitchen-sink.json");
294+
std::ifstream ifs(outputFileName);
289295
std::stringstream ss;
290296
ss << ifs.rdbuf();
291297
EXPECT_STREQ(
@@ -294,6 +300,22 @@ TEST(ParserTests, ProducesCorrectOutputForKitchenSink) {
294300
free((void *)json);
295301
}
296302

303+
TEST(ParserTests, ProducesCorrectOutputForKitchenSink) {
304+
SCOPED_TRACE("KitchenSink");
305+
testCorrectOutputForStockFile(
306+
"test/kitchen-sink.graphql",
307+
"test/kitchen-sink.json",
308+
false);
309+
}
310+
311+
TEST(ParserTests, ProducesCorrectOutputForSchemaKitchenSink) {
312+
SCOPED_TRACE("SchemaKitchenSink");
313+
testCorrectOutputForStockFile(
314+
"test/schema-kitchen-sink.graphql",
315+
"test/schema-kitchen-sink.json",
316+
true);
317+
}
318+
297319
static void expectSchemaParsing(const char *queryStr) {
298320
char buf[strlen("1.1-XXX: schema support disabled") + 1];
299321
ASSERT_LT(strlen(queryStr), 999);

test/schema-kitchen-sink.graphql

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Copyright (c) 2015, Facebook, Inc.
2+
# All rights reserved.
3+
#
4+
# This source code is licensed under the BSD-style license found in the
5+
# LICENSE file in the root directory of this source tree. An additional grant
6+
# of patent rights can be found in the PATENTS file in the same directory.
7+
8+
schema {
9+
query: QueryType
10+
mutation: MutationType
11+
}
12+
13+
type Foo implements Bar {
14+
one: Type
15+
two(argument: InputType!): Type
16+
three(argument: InputType, other: String): Int
17+
four(argument: String = "string"): String
18+
five(argument: [String] = ["string", "string"]): String
19+
six(argument: InputType = {key: "value"}): Type
20+
seven(argument: Int = null): Type
21+
}
22+
23+
type AnnotatedObject @onObject(arg: "value") {
24+
annotatedField(arg: Type = "default" @onArg): Type @onField
25+
}
26+
27+
interface Bar {
28+
one: Type
29+
four(argument: String = "string"): String
30+
}
31+
32+
interface AnnotatedInterface @onInterface {
33+
annotatedField(arg: Type @onArg): Type @onField
34+
}
35+
36+
union Feed = Story | Article | Advert
37+
38+
union AnnotatedUnion @onUnion = A | B
39+
40+
scalar CustomScalar
41+
42+
scalar AnnotatedScalar @onScalar
43+
44+
enum Site {
45+
DESKTOP
46+
MOBILE
47+
}
48+
49+
enum AnnotatedEnum @onEnum {
50+
ANNOTATED_VALUE @onEnumValue
51+
OTHER_VALUE
52+
}
53+
54+
input InputType {
55+
key: String!
56+
answer: Int = 42
57+
}
58+
59+
input AnnotatedInput @onInputObjectType {
60+
annotatedField: Type @onField
61+
}
62+
63+
extend type Foo {
64+
seven(argument: [String]): Type
65+
}
66+
67+
# NOTE: out-of-spec test cases commented out until the spec is clarified; see
68+
# https://github.com/graphql/graphql-js/issues/650 .
69+
# extend type Foo @onType {}
70+
71+
#type NoFields {}
72+
73+
directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
74+
75+
directive @include(if: Boolean!)
76+
on FIELD
77+
| FRAGMENT_SPREAD
78+
| INLINE_FRAGMENT

test/schema-kitchen-sink.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"kind":"Document","loc":{"start":1,"end":21},"definitions":[{"kind":"SchemaDefinition","loc":{"start":1,"end":2},"directives":null,"operationTypes":[{"kind":"OperationTypeDefinition","loc":{"start":3,"end":19},"operation":"query","type":{"kind":"NamedType","loc":{"start":10,"end":19},"name":{"kind":"Name","loc":{"start":10,"end":19},"value":"QueryType"}}},{"kind":"OperationTypeDefinition","loc":{"start":3,"end":25},"operation":"mutation","type":{"kind":"NamedType","loc":{"start":13,"end":25},"name":{"kind":"Name","loc":{"start":13,"end":25},"value":"MutationType"}}}]},{"kind":"ObjectTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":6,"end":9},"value":"Foo"},"interfaces":[{"kind":"NamedType","loc":{"start":21,"end":24},"name":{"kind":"Name","loc":{"start":21,"end":24},"value":"Bar"}}],"directives":null,"fields":[{"kind":"FieldDefinition","loc":{"start":3,"end":12},"name":{"kind":"Name","loc":{"start":3,"end":6},"value":"one"},"arguments":null,"type":{"kind":"NamedType","loc":{"start":8,"end":12},"name":{"kind":"Name","loc":{"start":8,"end":12},"value":"Type"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":34},"name":{"kind":"Name","loc":{"start":3,"end":6},"value":"two"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":7,"end":27},"name":{"kind":"Name","loc":{"start":7,"end":15},"value":"argument"},"type":{"kind":"NonNullType","loc":{"start":17,"end":27},"type":{"kind":"NamedType","loc":{"start":17,"end":26},"name":{"kind":"Name","loc":{"start":17,"end":26},"value":"InputType"}}},"defaultValue":null,"directives":null}],"type":{"kind":"NamedType","loc":{"start":30,"end":34},"name":{"kind":"Name","loc":{"start":30,"end":34},"value":"Type"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":49},"name":{"kind":"Name","loc":{"start":3,"end":8},"value":"three"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":9,"end":28},"name":{"kind":"Name","loc":{"start":9,"end":17},"value":"argument"},"type":{"kind":"NamedType","loc":{"start":19,"end":28},"name":{"kind":"Name","loc":{"start":19,"end":28},"value":"InputType"}},"defaultValue":null,"directives":null},{"kind":"InputValueDefinition","loc":{"start":30,"end":43},"name":{"kind":"Name","loc":{"start":30,"end":35},"value":"other"},"type":{"kind":"NamedType","loc":{"start":37,"end":43},"name":{"kind":"Name","loc":{"start":37,"end":43},"value":"String"}},"defaultValue":null,"directives":null}],"type":{"kind":"NamedType","loc":{"start":46,"end":49},"name":{"kind":"Name","loc":{"start":46,"end":49},"value":"Int"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":50},"name":{"kind":"Name","loc":{"start":3,"end":7},"value":"four"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":8,"end":26},"name":{"kind":"Name","loc":{"start":8,"end":16},"value":"argument"},"type":{"kind":"NamedType","loc":{"start":18,"end":24},"name":{"kind":"Name","loc":{"start":18,"end":24},"value":"String"}},"defaultValue":{"kind":"StringValue","loc":{"start":25,"end":26},"value":"string"},"directives":null}],"type":{"kind":"NamedType","loc":{"start":44,"end":50},"name":{"kind":"Name","loc":{"start":44,"end":50},"value":"String"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":70},"name":{"kind":"Name","loc":{"start":3,"end":7},"value":"five"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":8,"end":61},"name":{"kind":"Name","loc":{"start":8,"end":16},"value":"argument"},"type":{"kind":"ListType","loc":{"start":18,"end":26},"type":{"kind":"NamedType","loc":{"start":19,"end":25},"name":{"kind":"Name","loc":{"start":19,"end":25},"value":"String"}}},"defaultValue":{"kind":"ListValue","loc":{"start":29,"end":61},"values":[{"kind":"StringValue","loc":{"start":29,"end":30},"value":"string"},{"kind":"StringValue","loc":{"start":29,"end":30},"value":"string"}]},"directives":null}],"type":{"kind":"NamedType","loc":{"start":64,"end":70},"name":{"kind":"Name","loc":{"start":64,"end":70},"value":"String"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":55},"name":{"kind":"Name","loc":{"start":3,"end":6},"value":"six"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":7,"end":48},"name":{"kind":"Name","loc":{"start":7,"end":15},"value":"argument"},"type":{"kind":"NamedType","loc":{"start":17,"end":26},"name":{"kind":"Name","loc":{"start":17,"end":26},"value":"InputType"}},"defaultValue":{"kind":"ObjectValue","loc":{"start":29,"end":48},"fields":[{"kind":"ObjectField","loc":{"start":30,"end":34},"name":{"kind":"Name","loc":{"start":30,"end":33},"value":"key"},"value":{"kind":"StringValue","loc":{"start":33,"end":34},"value":"value"}}]},"directives":null}],"type":{"kind":"NamedType","loc":{"start":51,"end":55},"name":{"kind":"Name","loc":{"start":51,"end":55},"value":"Type"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":36},"name":{"kind":"Name","loc":{"start":3,"end":8},"value":"seven"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":9,"end":29},"name":{"kind":"Name","loc":{"start":9,"end":17},"value":"argument"},"type":{"kind":"NamedType","loc":{"start":19,"end":22},"name":{"kind":"Name","loc":{"start":19,"end":22},"value":"Int"}},"defaultValue":{"kind":"NullValue","loc":{"start":25,"end":29}},"directives":null}],"type":{"kind":"NamedType","loc":{"start":32,"end":36},"name":{"kind":"Name","loc":{"start":32,"end":36},"value":"Type"}},"directives":null}]},{"kind":"ObjectTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":6,"end":21},"value":"AnnotatedObject"},"interfaces":null,"directives":[{"kind":"Directive","loc":{"start":22,"end":50},"name":{"kind":"Name","loc":{"start":23,"end":31},"value":"onObject"},"arguments":[{"kind":"Argument","loc":{"start":32,"end":36},"name":{"kind":"Name","loc":{"start":32,"end":35},"value":"arg"},"value":{"kind":"StringValue","loc":{"start":35,"end":36},"value":"value"}}]}],"fields":[{"kind":"FieldDefinition","loc":{"start":3,"end":69},"name":{"kind":"Name","loc":{"start":3,"end":17},"value":"annotatedField"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":18,"end":53},"name":{"kind":"Name","loc":{"start":18,"end":21},"value":"arg"},"type":{"kind":"NamedType","loc":{"start":23,"end":27},"name":{"kind":"Name","loc":{"start":23,"end":27},"value":"Type"}},"defaultValue":{"kind":"StringValue","loc":{"start":28,"end":29},"value":"default"},"directives":[{"kind":"Directive","loc":{"start":47,"end":53},"name":{"kind":"Name","loc":{"start":48,"end":53},"value":"onArg"},"arguments":null}]}],"type":{"kind":"NamedType","loc":{"start":56,"end":60},"name":{"kind":"Name","loc":{"start":56,"end":60},"value":"Type"}},"directives":[{"kind":"Directive","loc":{"start":61,"end":69},"name":{"kind":"Name","loc":{"start":62,"end":69},"value":"onField"},"arguments":null}]}]},{"kind":"InterfaceTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":11,"end":14},"value":"Bar"},"directives":null,"fields":[{"kind":"FieldDefinition","loc":{"start":3,"end":12},"name":{"kind":"Name","loc":{"start":3,"end":6},"value":"one"},"arguments":null,"type":{"kind":"NamedType","loc":{"start":8,"end":12},"name":{"kind":"Name","loc":{"start":8,"end":12},"value":"Type"}},"directives":null},{"kind":"FieldDefinition","loc":{"start":3,"end":50},"name":{"kind":"Name","loc":{"start":3,"end":7},"value":"four"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":8,"end":26},"name":{"kind":"Name","loc":{"start":8,"end":16},"value":"argument"},"type":{"kind":"NamedType","loc":{"start":18,"end":24},"name":{"kind":"Name","loc":{"start":18,"end":24},"value":"String"}},"defaultValue":{"kind":"StringValue","loc":{"start":25,"end":26},"value":"string"},"directives":null}],"type":{"kind":"NamedType","loc":{"start":44,"end":50},"name":{"kind":"Name","loc":{"start":44,"end":50},"value":"String"}},"directives":null}]},{"kind":"InterfaceTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":11,"end":29},"value":"AnnotatedInterface"},"directives":[{"kind":"Directive","loc":{"start":30,"end":42},"name":{"kind":"Name","loc":{"start":31,"end":42},"value":"onInterface"},"arguments":null}],"fields":[{"kind":"FieldDefinition","loc":{"start":3,"end":50},"name":{"kind":"Name","loc":{"start":3,"end":17},"value":"annotatedField"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":18,"end":34},"name":{"kind":"Name","loc":{"start":18,"end":21},"value":"arg"},"type":{"kind":"NamedType","loc":{"start":23,"end":27},"name":{"kind":"Name","loc":{"start":23,"end":27},"value":"Type"}},"defaultValue":null,"directives":[{"kind":"Directive","loc":{"start":28,"end":34},"name":{"kind":"Name","loc":{"start":29,"end":34},"value":"onArg"},"arguments":null}]}],"type":{"kind":"NamedType","loc":{"start":37,"end":41},"name":{"kind":"Name","loc":{"start":37,"end":41},"value":"Type"}},"directives":[{"kind":"Directive","loc":{"start":42,"end":50},"name":{"kind":"Name","loc":{"start":43,"end":50},"value":"onField"},"arguments":null}]}]},{"kind":"UnionTypeDefinition","loc":{"start":1,"end":38},"name":{"kind":"Name","loc":{"start":7,"end":11},"value":"Feed"},"directives":null,"types":[{"kind":"NamedType","loc":{"start":14,"end":19},"name":{"kind":"Name","loc":{"start":14,"end":19},"value":"Story"}},{"kind":"NamedType","loc":{"start":22,"end":29},"name":{"kind":"Name","loc":{"start":22,"end":29},"value":"Article"}},{"kind":"NamedType","loc":{"start":32,"end":38},"name":{"kind":"Name","loc":{"start":32,"end":38},"value":"Advert"}}]},{"kind":"UnionTypeDefinition","loc":{"start":1,"end":38},"name":{"kind":"Name","loc":{"start":7,"end":21},"value":"AnnotatedUnion"},"directives":[{"kind":"Directive","loc":{"start":22,"end":30},"name":{"kind":"Name","loc":{"start":23,"end":30},"value":"onUnion"},"arguments":null}],"types":[{"kind":"NamedType","loc":{"start":33,"end":34},"name":{"kind":"Name","loc":{"start":33,"end":34},"value":"A"}},{"kind":"NamedType","loc":{"start":37,"end":38},"name":{"kind":"Name","loc":{"start":37,"end":38},"value":"B"}}]},{"kind":"ScalarTypeDefinition","loc":{"start":1,"end":20},"name":{"kind":"Name","loc":{"start":8,"end":20},"value":"CustomScalar"},"directives":null},{"kind":"ScalarTypeDefinition","loc":{"start":1,"end":33},"name":{"kind":"Name","loc":{"start":8,"end":23},"value":"AnnotatedScalar"},"directives":[{"kind":"Directive","loc":{"start":24,"end":33},"name":{"kind":"Name","loc":{"start":25,"end":33},"value":"onScalar"},"arguments":null}]},{"kind":"EnumTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":6,"end":10},"value":"Site"},"directives":null,"values":[{"kind":"EnumValueDefinition","loc":{"start":3,"end":10},"name":{"kind":"Name","loc":{"start":3,"end":10},"value":"DESKTOP"},"directives":null},{"kind":"EnumValueDefinition","loc":{"start":3,"end":9},"name":{"kind":"Name","loc":{"start":3,"end":9},"value":"MOBILE"},"directives":null}]},{"kind":"EnumTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":6,"end":19},"value":"AnnotatedEnum"},"directives":[{"kind":"Directive","loc":{"start":20,"end":27},"name":{"kind":"Name","loc":{"start":21,"end":27},"value":"onEnum"},"arguments":null}],"values":[{"kind":"EnumValueDefinition","loc":{"start":3,"end":31},"name":{"kind":"Name","loc":{"start":3,"end":18},"value":"ANNOTATED_VALUE"},"directives":[{"kind":"Directive","loc":{"start":19,"end":31},"name":{"kind":"Name","loc":{"start":20,"end":31},"value":"onEnumValue"},"arguments":null}]},{"kind":"EnumValueDefinition","loc":{"start":3,"end":14},"name":{"kind":"Name","loc":{"start":3,"end":14},"value":"OTHER_VALUE"},"directives":null}]},{"kind":"InputObjectTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":7,"end":16},"value":"InputType"},"directives":null,"fields":[{"kind":"InputValueDefinition","loc":{"start":3,"end":15},"name":{"kind":"Name","loc":{"start":3,"end":6},"value":"key"},"type":{"kind":"NonNullType","loc":{"start":8,"end":15},"type":{"kind":"NamedType","loc":{"start":8,"end":14},"name":{"kind":"Name","loc":{"start":8,"end":14},"value":"String"}}},"defaultValue":null,"directives":null},{"kind":"InputValueDefinition","loc":{"start":3,"end":19},"name":{"kind":"Name","loc":{"start":3,"end":9},"value":"answer"},"type":{"kind":"NamedType","loc":{"start":11,"end":14},"name":{"kind":"Name","loc":{"start":11,"end":14},"value":"Int"}},"defaultValue":{"kind":"IntValue","loc":{"start":17,"end":19},"value":"42"},"directives":null}]},{"kind":"InputObjectTypeDefinition","loc":{"start":1,"end":2},"name":{"kind":"Name","loc":{"start":7,"end":21},"value":"AnnotatedInput"},"directives":[{"kind":"Directive","loc":{"start":22,"end":40},"name":{"kind":"Name","loc":{"start":23,"end":40},"value":"onInputObjectType"},"arguments":null}],"fields":[{"kind":"InputValueDefinition","loc":{"start":3,"end":32},"name":{"kind":"Name","loc":{"start":3,"end":17},"value":"annotatedField"},"type":{"kind":"NamedType","loc":{"start":19,"end":23},"name":{"kind":"Name","loc":{"start":19,"end":23},"value":"Type"}},"defaultValue":null,"directives":[{"kind":"Directive","loc":{"start":24,"end":32},"name":{"kind":"Name","loc":{"start":25,"end":32},"value":"onField"},"arguments":null}]}]},{"kind":"TypeExtensionDefinition","loc":{"start":1,"end":2},"definition":{"kind":"ObjectTypeDefinition","loc":{"start":8,"end":2},"name":{"kind":"Name","loc":{"start":13,"end":16},"value":"Foo"},"interfaces":null,"directives":null,"fields":[{"kind":"FieldDefinition","loc":{"start":3,"end":34},"name":{"kind":"Name","loc":{"start":3,"end":8},"value":"seven"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":9,"end":27},"name":{"kind":"Name","loc":{"start":9,"end":17},"value":"argument"},"type":{"kind":"ListType","loc":{"start":19,"end":27},"type":{"kind":"NamedType","loc":{"start":20,"end":26},"name":{"kind":"Name","loc":{"start":20,"end":26},"value":"String"}}},"defaultValue":null,"directives":null}],"type":{"kind":"NamedType","loc":{"start":30,"end":34},"name":{"kind":"Name","loc":{"start":30,"end":34},"value":"Type"}},"directives":null}]}},{"kind":"DirectiveDefinition","loc":{"start":1,"end":75},"name":{"kind":"Name","loc":{"start":12,"end":16},"value":"skip"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":17,"end":29},"name":{"kind":"Name","loc":{"start":17,"end":19},"value":"if"},"type":{"kind":"NonNullType","loc":{"start":21,"end":29},"type":{"kind":"NamedType","loc":{"start":21,"end":28},"name":{"kind":"Name","loc":{"start":21,"end":28},"value":"Boolean"}}},"defaultValue":null,"directives":null}],"locations":[{"kind":"Name","loc":{"start":34,"end":39},"value":"FIELD"},{"kind":"Name","loc":{"start":42,"end":57},"value":"FRAGMENT_SPREAD"},{"kind":"Name","loc":{"start":60,"end":75},"value":"INLINE_FRAGMENT"}]},{"kind":"DirectiveDefinition","loc":{"start":1,"end":21},"name":{"kind":"Name","loc":{"start":12,"end":19},"value":"include"},"arguments":[{"kind":"InputValueDefinition","loc":{"start":20,"end":32},"name":{"kind":"Name","loc":{"start":20,"end":22},"value":"if"},"type":{"kind":"NonNullType","loc":{"start":24,"end":32},"type":{"kind":"NamedType","loc":{"start":24,"end":31},"name":{"kind":"Name","loc":{"start":24,"end":31},"value":"Boolean"}}},"defaultValue":null,"directives":null}],"locations":[{"kind":"Name","loc":{"start":6,"end":11},"value":"FIELD"},{"kind":"Name","loc":{"start":6,"end":21},"value":"FRAGMENT_SPREAD"},{"kind":"Name","loc":{"start":6,"end":21},"value":"INLINE_FRAGMENT"}]}]}

0 commit comments

Comments
 (0)