diff --git a/src/GraphQLParser.Tests/Files/DeprecatedOnArgAndInputField.graphql b/src/GraphQLParser.Tests/Files/DeprecatedOnArgAndInputField.graphql new file mode 100644 index 00000000..fcc3ae98 --- /dev/null +++ b/src/GraphQLParser.Tests/Files/DeprecatedOnArgAndInputField.graphql @@ -0,0 +1,11 @@ +type Query { + persons(filter: PersonFilter @deprecated(reason: "Do not use this arg")): [Person] +} + +input PersonFilter { + namePattern: String @deprecated(reason: "Do not use this field") +} + +type Person { + name: String +} diff --git a/src/GraphQLParser.Tests/ParserTests.cs b/src/GraphQLParser.Tests/ParserTests.cs index aaf67498..a8197e20 100644 --- a/src/GraphQLParser.Tests/ParserTests.cs +++ b/src/GraphQLParser.Tests/ParserTests.cs @@ -1679,4 +1679,26 @@ directive @TestDirective ( if (parseComments) directiveDef.Arguments[0].Comment.Value.ShouldBe(" comment 29"); } + + // https://github.com/graphql/graphql-spec/pull/805 + [Fact] + public void Should_Parse_Deprecations_On_Arg_And_InputField() + { + string text = "DeprecatedOnArgAndInputField".ReadGraphQLFile(); + var document = text.Parse(); + + var queryDef = document.Definitions.First(x => x is GraphQLObjectTypeDefinition) as GraphQLObjectTypeDefinition; + queryDef.Name.Value.ShouldBe("Query"); + var arg = queryDef.Fields[0].Arguments[0]; + var dir1 = arg.Directives.ShouldNotBeNull()[0]; + dir1.Name.Value.ShouldBe("deprecated"); + dir1.Arguments.ShouldNotBeNull()[0].Value.ShouldBeAssignableTo().Value.ShouldBe("Do not use this arg"); + + var inputDef = document.Definitions.First(x => x is GraphQLInputObjectTypeDefinition) as GraphQLInputObjectTypeDefinition; + inputDef.Name.Value.ShouldBe("PersonFilter"); + var field = inputDef.Fields[0].ShouldNotBeNull(); + var dir2 = field.Directives.ShouldNotBeNull()[0]; + dir2.Name.Value.ShouldBe("deprecated"); + dir2.Arguments.ShouldNotBeNull()[0].Value.ShouldBeAssignableTo().Value.ShouldBe("Do not use this field"); + } }