From 5c699239db8b7f9a1137637ed709b7f2f46a832a Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Thu, 11 Mar 2021 17:04:49 +0100 Subject: [PATCH] Fix graphql names for field names. (#671) --- .../GraphQL/Types/Contents/SchemaInfos.cs | 49 +++++++++---------- .../Contents/GraphQL/GraphQLTestBase.cs | 10 ++-- .../Contents/GraphQL/TestContent.cs | 10 ++++ 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/SchemaInfos.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/SchemaInfos.cs index b22cf1dca..29dff9125 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/SchemaInfos.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/SchemaInfos.cs @@ -148,39 +148,38 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents public string this[IField field] { - get - { - return this[field.Name.ToCamelCase()]; - } + get => GetName(field.Name.ToCamelCase(), false); } public string this[string name] { - get - { - Guard.NotNullOrEmpty(name, nameof(name)); - - if (!char.IsLetter(name[0])) - { - name = "gql_" + name; - } - else if (name.Equals("Content", StringComparison.OrdinalIgnoreCase)) - { - name = $"{name}Entity"; - } + get => GetName(name, true); + } - // Avoid duplicate names. - if (!takenNames.TryGetValue(name, out var offset)) - { - takenNames[name] = 0; - return name; - } + private string GetName(string name, bool isEntity) + { + Guard.NotNullOrEmpty(name, nameof(name)); - takenNames[name] = ++offset; + if (!char.IsLetter(name[0])) + { + name = "gql_" + name; + } + else if (name.Equals("Content", StringComparison.OrdinalIgnoreCase) && isEntity) + { + name = $"{name}Entity"; + } - // Add + 1 to all offset for backwars compatibility. - return $"{name}{offset + 1}"; + // Avoid duplicate names. + if (!takenNames.TryGetValue(name, out var offset)) + { + takenNames[name] = 0; + return name; } + + takenNames[name] = ++offset; + + // Add + 1 to all offset for backwars compatibility. + return $"{name}{offset + 1}"; } } } \ No newline at end of file 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 a6968bb47..9e8ff4ab3 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 @@ -65,6 +65,12 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL var schemaDef = new Schema(schemaId.Name) .Publish() + .AddNumber(16, "2_numbers", Partitioning.Invariant, + new NumberFieldProperties()) + .AddNumber(17, "2-numbers", Partitioning.Invariant, + new NumberFieldProperties()) + .AddNumber(18, "content", Partitioning.Invariant, + new NumberFieldProperties()) .AddJson(1, "my-json", Partitioning.Invariant, new JsonFieldProperties()) .AddString(2, "my-string", Partitioning.Language, @@ -97,10 +103,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL .AddBoolean(121, "nested-boolean") .AddNumber(122, "nested-number") .AddNumber(123, "nested_number")) - .AddNumber(16, "2_numbers", Partitioning.Invariant, - new NumberFieldProperties()) - .AddNumber(17, "2-numbers", Partitioning.Invariant, - new NumberFieldProperties()) .SetScripts(new SchemaScripts { Query = "" }); schema = Mocks.Schema(appId, schemaId, schemaDef); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs index eb4e4cccc..d672a39cf 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs @@ -32,6 +32,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL gql_2Numbers2 { iv } + content { + iv + } myString { de } @@ -92,6 +95,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL .AddField("2-numbers", new ContentFieldData() .AddInvariant(23)) + .AddField("content", + new ContentFieldData() + .AddInvariant(24)) .AddField("my-number", new ContentFieldData() .AddInvariant(1.0)) @@ -208,6 +214,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL { iv = 23.0 }, + ["content"] = new + { + iv = 24.0 + }, ["myString"] = new { de = "value"