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); 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) public static IEnumerable<RootField> RootFields(this Schema schema, FieldNames names)
{ {
var hasField = false; var hasField = false;
foreach (var name in names) 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; 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); 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] [Fact]
public void Should_deserialize_state() public void Should_deserialize_state()
{ {

Loading…
Cancel
Save