Browse Source

Escape languages in graphql.

pull/333/head
Sebastian Stehle 7 years ago
parent
commit
cb0384d9a7
  1. 8
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentDataGraphType.cs
  2. 5
      src/Squidex.Domain.Apps.Entities/Schemas/SchemaExtensions.cs
  3. 21
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs
  4. 9
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs

8
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentDataGraphType.cs

@ -43,21 +43,23 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
foreach (var partitionItem in partition) foreach (var partitionItem in partition)
{ {
var key = partitionItem.Key;
var resolver = new FuncFieldResolver<object>(c => var resolver = new FuncFieldResolver<object>(c =>
{ {
if (((ContentFieldData)c.Source).TryGetValue(c.FieldName, out var value)) if (((ContentFieldData)c.Source).TryGetValue(key, out var value))
{ {
return fieldInfo.Resolver(value, c); return fieldInfo.Resolver(value, c);
} }
else else
{ {
return fieldInfo; return null;
} }
}); });
fieldGraphType.AddField(new FieldType fieldGraphType.AddField(new FieldType
{ {
Name = partitionItem.Key, Name = key.EscapePartition(),
Resolver = resolver, Resolver = resolver,
ResolvedType = fieldInfo.ResolveType, ResolvedType = fieldInfo.ResolveType,
Description = field.RawProperties.Hints Description = field.RawProperties.Hints

5
src/Squidex.Domain.Apps.Entities/Schemas/SchemaExtensions.cs

@ -18,6 +18,11 @@ namespace Squidex.Domain.Apps.Entities.Schemas
return new NamedId<Guid>(schema.Id, schema.Name); return new NamedId<Guid>(schema.Id, schema.Name);
} }
public static string EscapePartition(this string value)
{
return value.Replace('-', '_');
}
public static string TypeName(this IField field) public static string TypeName(this IField field)
{ {
return field.Name.ToPascalCase(); return field.Name.ToPascalCase();

21
tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs

@ -268,6 +268,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
myTags { myTags {
iv iv
} }
myLocalized {
de_DE
}
myArray { myArray {
iv { iv {
nestedNumber nestedNumber
@ -342,6 +345,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
"tag2" "tag2"
} }
}, },
myLocalized = new
{
de_DE = "de-DE"
},
myArray = new myArray = new
{ {
iv = new[] iv = new[]
@ -405,6 +412,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
myTags { myTags {
iv iv
} }
myLocalized {
de_DE
}
} }
} }
} }
@ -476,6 +486,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
"tag1", "tag1",
"tag2" "tag2"
} }
},
myLocalized = new
{
de_DE = "de-DE"
} }
} }
} }
@ -526,6 +540,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
myTags {{ myTags {{
iv iv
}} }}
myLocalized {{
de_DE
}}
}} }}
}} }}
}}"; }}";
@ -589,6 +606,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
"tag1", "tag1",
"tag2" "tag2"
} }
},
myLocalized = new
{
de_DE = "de-DE"
} }
} }
} }

9
tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs

@ -70,13 +70,15 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
new GeolocationFieldProperties()) new GeolocationFieldProperties())
.AddTags(11, "my-tags", Partitioning.Invariant, .AddTags(11, "my-tags", Partitioning.Invariant,
new TagsFieldProperties()) new TagsFieldProperties())
.AddArray(12, "my-array", Partitioning.Invariant, f => f .AddString(12, "my-localized", Partitioning.Language,
new StringFieldProperties())
.AddArray(13, "my-array", Partitioning.Invariant, f => f
.AddBoolean(121, "nested-boolean") .AddBoolean(121, "nested-boolean")
.AddNumber(122, "nested-number")); .AddNumber(122, "nested-number"));
A.CallTo(() => app.Id).Returns(appId); A.CallTo(() => app.Id).Returns(appId);
A.CallTo(() => app.Name).Returns(appName); A.CallTo(() => app.Name).Returns(appName);
A.CallTo(() => app.LanguagesConfig).Returns(LanguagesConfig.Build(Language.DE)); A.CallTo(() => app.LanguagesConfig).Returns(LanguagesConfig.Build(Language.DE, Language.GermanGermany));
context = QueryContext.Create(app, user); context = QueryContext.Create(app, user);
@ -126,6 +128,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
.AddField("my-json", .AddField("my-json",
new ContentFieldData() new ContentFieldData()
.AddValue("iv", JToken.FromObject(new { value = 1 }))) .AddValue("iv", JToken.FromObject(new { value = 1 })))
.AddField("my-localized",
new ContentFieldData()
.AddValue("de-DE", "de-DE"))
.AddField("my-array", .AddField("my-array",
new ContentFieldData() new ContentFieldData()
.AddValue("iv", new JArray( .AddValue("iv", new JArray(

Loading…
Cancel
Save