Browse Source

Fix reference fields.

pull/1074/head
Sebastian Stehle 2 years ago
parent
commit
51363f4bf9
  1. 12
      backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaExtensions.cs
  2. 30
      backend/tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaTests.cs

12
backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaExtensions.cs

@ -62,18 +62,18 @@ public static class SchemaExtensions
return schema.RootFields(schema.FieldsInReferences);
}
public static IEnumerable<RootField> ListFields(this Schema schema)
{
return schema.RootFields(schema.FieldsInLists);
}
public static IEnumerable<RootField> RootFields(this Schema schema, FieldNames names)
{
var hasField = false;
foreach (var name in names)
{
if (schema.FieldsByName.TryGetValue(name, out var field))
if (!FieldNames.IsDataField(name, out var dataField))
{
continue;
}
if (schema.FieldsByName.TryGetValue(dataField, out var field))
{
hasField = true;

30
backend/tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaTests.cs

@ -480,6 +480,36 @@ public class SchemaTests
deserialized.Should().BeEquivalentTo(original);
}
[Fact]
public void Should_get_reference_fields()
{
var field1 = CreateField(1);
var field2 = CreateField(2);
var schema_1 = schema_0.AddField(field1);
var schema_2 = schema_1.AddField(field2);
var schema_3 = schema_2.SetFieldsInReferences(FieldNames.Create($"data.{field1.Name}", $"data.{field2.Name}"));
var referenceFields = schema_3.ReferenceFields();
Assert.Equal(new RootField[] { field1, field2 }, referenceFields.ToArray());
}
[Fact]
public void Should_get_reference_fields_with_fallback()
{
var field1 = CreateField(1);
var field2 = CreateField(2);
var schema_1 = schema_0.AddField(field1);
var schema_2 = schema_1.AddField(field2);
var schema_3 = schema_2.SetFieldsInReferences(FieldNames.Create("data.invalid"));
var referenceFields = schema_3.ReferenceFields();
Assert.Equal(new RootField[] { field1 }, referenceFields.ToArray());
}
[Fact]
public void Should_deserialize_state()
{

Loading…
Cancel
Save