From 6c02c38d6a13d7f911f4ea5732abe1e13f913bf6 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Tue, 30 Mar 2021 15:32:34 +0200 Subject: [PATCH] Fix graphql for empty nested fields. --- .../Contents/GraphQL/Types/Contents/FieldInputVisitor.cs | 5 +++++ .../Contents/GraphQL/Types/Contents/FieldVisitor.cs | 9 +++++++-- .../Contents/GraphQL/GraphQLTestBase.cs | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldInputVisitor.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldInputVisitor.cs index 0187a7f56..97d1d7c93 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldInputVisitor.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldInputVisitor.cs @@ -21,6 +21,11 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents public IGraphType? Visit(IArrayField field, FieldInfo args) { + if (args.Fields.Count == 0) + { + return null; + } + var schemaFieldType = new ListGraphType( new NonNullGraphType( diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldVisitor.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldVisitor.cs index 9a2e1f9e9..982ed2c9e 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldVisitor.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldVisitor.cs @@ -97,6 +97,11 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents public (IGraphType?, IFieldResolver?, QueryArguments?) Visit(IArrayField field, FieldInfo args) { + if (args.Fields.Count == 0) + { + return default; + } + var schemaFieldType = new ListGraphType( new NonNullGraphType( @@ -152,7 +157,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents public (IGraphType?, IFieldResolver?, QueryArguments?) Visit(IField field, FieldInfo args) { - return (null, null, null); + return default; } private (IGraphType?, IFieldResolver?, QueryArguments?) ResolveReferences(IField field, FieldInfo args) @@ -165,7 +170,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents if (!union.PossibleTypes.Any()) { - return (null, null, null); + return default; } contentType = union; diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs index bc0465007..3ae16e79f 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs @@ -100,6 +100,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL new GeolocationFieldProperties()) .AddTags(14, "my-tags", Partitioning.Invariant, new TagsFieldProperties()) + .AddArray(20, "my-empty-array", Partitioning.Invariant, null, + new ArrayFieldProperties()) .AddArray(15, "my-array", Partitioning.Invariant, f => f .AddBoolean(121, "nested-boolean") .AddNumber(122, "nested-number")