Browse Source

Fix list fields comparison.

pull/484/head
Sebastian 6 years ago
parent
commit
f12449d6f4
  1. 8
      backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonSchemaModel.cs
  2. 23
      backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Schema.cs
  3. 4
      backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaExtensions.cs
  4. 2
      backend/src/Squidex.Domain.Apps.Core.Operations/ExtractReferenceIds/ContentReferencesExtensions.cs
  5. 2
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/EnrichWithSchema.cs
  6. 8
      backend/src/Squidex.Domain.Apps.Entities/Schemas/Commands/UpsertCommand.cs
  7. 8
      backend/src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs
  8. 54
      backend/tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaTests.cs
  9. 12
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/EventSynchronization/SchemaSynchronizerTests.cs
  10. 2
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ExtractReferenceIds/ReferenceFormattingTests.cs
  11. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentDomainObjectTests.cs
  12. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs
  13. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryServiceTests.cs
  14. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs
  15. 4
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveReferencesTests.cs
  16. 8
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaCommandsTests.cs

8
backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonSchemaModel.cs

@ -105,22 +105,22 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json
if (Scripts != null)
{
schema = schema.ConfigureScripts(Scripts);
schema = schema.SetScripts(Scripts);
}
if (FieldsInLists?.Count > 0)
{
schema = schema.ConfigureFieldsInLists(FieldsInLists);
schema = schema.SetFieldsInLists(FieldsInLists);
}
if (FieldsInReferences?.Count > 0)
{
schema = schema.ConfigureFieldsInReferences(FieldsInReferences);
schema = schema.SetFieldsInReferences(FieldsInReferences);
}
if (PreviewUrls?.Count > 0)
{
schema = schema.ConfigurePreviewUrls(PreviewUrls);
schema = schema.SetPreviewUrls(PreviewUrls);
}
return schema;

23
backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Schema.cs

@ -8,6 +8,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
@ -118,7 +119,7 @@ namespace Squidex.Domain.Apps.Core.Schemas
{
newProperties ??= new SchemaProperties();
if (properties.DeepEquals(newProperties))
if (properties.Equals(newProperties))
{
return this;
}
@ -131,7 +132,7 @@ namespace Squidex.Domain.Apps.Core.Schemas
}
[Pure]
public Schema ConfigureScripts(SchemaScripts newScripts)
public Schema SetScripts(SchemaScripts newScripts)
{
newScripts ??= new SchemaScripts();
@ -148,11 +149,11 @@ namespace Squidex.Domain.Apps.Core.Schemas
}
[Pure]
public Schema ConfigureFieldsInLists(FieldNames names)
public Schema SetFieldsInLists(FieldNames names)
{
names ??= FieldNames.Empty;
if (fieldsInLists.SetEquals(names))
if (fieldsInLists.SequenceEqual(names))
{
return this;
}
@ -164,17 +165,17 @@ namespace Squidex.Domain.Apps.Core.Schemas
}
[Pure]
public Schema ConfigureFieldsInLists(params string[] names)
public Schema SetFieldsInLists(params string[] names)
{
return ConfigureFieldsInLists(new FieldNames(names));
return SetFieldsInLists(new FieldNames(names));
}
[Pure]
public Schema ConfigureFieldsInReferences(FieldNames names)
public Schema SetFieldsInReferences(FieldNames names)
{
names ??= FieldNames.Empty;
if (fieldsInReferences.SetEquals(names))
if (fieldsInReferences.SequenceEqual(names))
{
return this;
}
@ -186,9 +187,9 @@ namespace Squidex.Domain.Apps.Core.Schemas
}
[Pure]
public Schema ConfigureFieldsInReferences(params string[] names)
public Schema SetFieldsInReferences(params string[] names)
{
return ConfigureFieldsInReferences(new FieldNames(names));
return SetFieldsInReferences(new FieldNames(names));
}
[Pure]
@ -234,7 +235,7 @@ namespace Squidex.Domain.Apps.Core.Schemas
}
[Pure]
public Schema ConfigurePreviewUrls(IReadOnlyDictionary<string, string> newPreviewUrls)
public Schema SetPreviewUrls(IReadOnlyDictionary<string, string> newPreviewUrls)
{
previewUrls ??= EmptyPreviewUrls;

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

@ -64,12 +64,12 @@ namespace Squidex.Domain.Apps.Core.Schemas
return properties.SchemaIds?.Count == 1 ? properties.SchemaIds[0] : Guid.Empty;
}
public static IEnumerable<RootField> ReferencesFields(this Schema schema)
public static IEnumerable<RootField> ReferenceFields(this Schema schema)
{
return schema.RootFields(schema.FieldsInReferences);
}
public static IEnumerable<RootField> ListsFields(this Schema schema)
public static IEnumerable<RootField> ListFields(this Schema schema)
{
return schema.RootFields(schema.FieldsInLists);
}

2
backend/src/Squidex.Domain.Apps.Core.Operations/ExtractReferenceIds/ContentReferencesExtensions.cs

@ -123,7 +123,7 @@ namespace Squidex.Domain.Apps.Core.ExtractReferenceIds
sb.Append(value);
}
var referenceFields = schema.ReferencesFields();
var referenceFields = schema.ReferenceFields();
foreach (var referenceField in referenceFields)
{

2
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/EnrichWithSchema.cs

@ -31,7 +31,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps
if (context.IsFrontendClient)
{
var referenceFields = schema.SchemaDef.ReferencesFields().ToArray();
var referenceFields = schema.SchemaDef.ReferenceFields().ToArray();
foreach (var content in group)
{

8
backend/src/Squidex.Domain.Apps.Entities/Schemas/Commands/UpsertCommand.cs

@ -41,22 +41,22 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Commands
if (Scripts != null)
{
schema = schema.ConfigureScripts(Scripts);
schema = schema.SetScripts(Scripts);
}
if (PreviewUrls != null)
{
schema = schema.ConfigurePreviewUrls(PreviewUrls);
schema = schema.SetPreviewUrls(PreviewUrls);
}
if (FieldsInLists != null)
{
schema = schema.ConfigureFieldsInLists(FieldsInLists);
schema = schema.SetFieldsInLists(FieldsInLists);
}
if (FieldsInReferences != null)
{
schema = schema.ConfigureFieldsInReferences(FieldsInReferences);
schema = schema.SetFieldsInReferences(FieldsInReferences);
}
if (!string.IsNullOrWhiteSpace(Category))

8
backend/src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs

@ -76,12 +76,12 @@ namespace Squidex.Domain.Apps.Entities.Schemas.State
{
if (e.FieldsInLists != null)
{
SchemaDef = SchemaDef.ConfigureFieldsInLists(e.FieldsInLists);
SchemaDef = SchemaDef.SetFieldsInLists(e.FieldsInLists);
}
if (e.FieldsInReferences != null)
{
SchemaDef = SchemaDef.ConfigureFieldsInReferences(e.FieldsInReferences);
SchemaDef = SchemaDef.SetFieldsInReferences(e.FieldsInReferences);
}
break;
@ -96,14 +96,14 @@ namespace Squidex.Domain.Apps.Entities.Schemas.State
case SchemaPreviewUrlsConfigured e:
{
SchemaDef = SchemaDef.ConfigurePreviewUrls(e.PreviewUrls);
SchemaDef = SchemaDef.SetPreviewUrls(e.PreviewUrls);
break;
}
case SchemaScriptsConfigured e:
{
SchemaDef = SchemaDef.ConfigureScripts(e.Scripts);
SchemaDef = SchemaDef.SetScripts(e.Scripts);
break;
}

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

@ -258,8 +258,8 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
var schema_1 = schema_0
.AddField(field)
.ConfigureFieldsInLists(field.Name)
.ConfigureFieldsInReferences(field.Name);
.SetFieldsInLists(field.Name)
.SetFieldsInReferences(field.Name);
var schema_2 = schema_1.DeleteField(1);
Assert.Empty(schema_2.FieldsById);
@ -356,19 +356,30 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
[Fact]
public void Should_set_list_fields()
{
var schema_1 = schema_0.ConfigureFieldsInLists("2");
var schema_2 = schema_1.ConfigureFieldsInLists("2");
var schema_1 = schema_0.SetFieldsInLists("2");
var schema_2 = schema_1.SetFieldsInLists("2");
Assert.Equal(new[] { "2" }, schema_1.FieldsInLists);
Assert.Equal(new[] { "2" }, schema_2.FieldsInLists);
Assert.Same(schema_1, schema_2);
}
[Fact]
public void Should_also_set_list_fields_when_reordered()
{
var schema_1 = schema_0.SetFieldsInLists("2", "1");
var schema_2 = schema_1.SetFieldsInLists("1", "2");
Assert.Equal(new[] { "2", "1" }, schema_1.FieldsInLists);
Assert.Equal(new[] { "1", "2" }, schema_2.FieldsInLists);
Assert.NotSame(schema_1, schema_2);
}
[Fact]
public void Should_set_reference_fields()
{
var schema_1 = schema_0.ConfigureFieldsInReferences("2");
var schema_2 = schema_1.ConfigureFieldsInReferences("2");
var schema_1 = schema_0.SetFieldsInReferences("2");
var schema_2 = schema_1.SetFieldsInReferences("2");
Assert.Equal(new[] { "2" }, schema_1.FieldsInReferences);
Assert.Equal(new[] { "2" }, schema_2.FieldsInReferences);
@ -376,7 +387,18 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
}
[Fact]
public void Should_configure_scripts()
public void Should_also_set_reference_fields_when_reordered()
{
var schema_1 = schema_0.SetFieldsInReferences("2", "1");
var schema_2 = schema_1.SetFieldsInReferences("1", "2");
Assert.Equal(new[] { "2", "1" }, schema_1.FieldsInReferences);
Assert.Equal(new[] { "1", "2" }, schema_2.FieldsInReferences);
Assert.NotSame(schema_1, schema_2);
}
[Fact]
public void Should_set_scripts()
{
var scripts1 = new SchemaScripts
{
@ -387,8 +409,8 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
Query = "<query-script>"
};
var schema_1 = schema_0.ConfigureScripts(scripts1);
var schema_2 = schema_1.ConfigureScripts(scripts2);
var schema_1 = schema_0.SetScripts(scripts1);
var schema_2 = schema_1.SetScripts(scripts2);
Assert.Equal("<query-script>", schema_1.Scripts.Query);
@ -398,7 +420,7 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
}
[Fact]
public void Should_configure_preview_urls()
public void Should_set_preview_urls()
{
var urls1 = new Dictionary<string, string>
{
@ -409,8 +431,8 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
["web"] = "Url"
};
var schema_1 = schema_0.ConfigurePreviewUrls(urls1);
var schema_2 = schema_1.ConfigurePreviewUrls(urls2);
var schema_1 = schema_0.SetPreviewUrls(urls1);
var schema_2 = schema_1.SetPreviewUrls(urls2);
Assert.Equal("Url", schema_1.PreviewUrls["web"]);
@ -425,13 +447,13 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
var schemaSource =
TestUtils.MixedSchema(true)
.ChangeCategory("Category")
.ConfigureFieldsInLists("field2")
.ConfigureFieldsInReferences("field1")
.ConfigurePreviewUrls(new Dictionary<string, string>
.SetFieldsInLists("field2")
.SetFieldsInReferences("field1")
.SetPreviewUrls(new Dictionary<string, string>
{
["web"] = "Url"
})
.ConfigureScripts(new SchemaScripts
.SetScripts(new SchemaScripts
{
Create = "<create-script>"
});

12
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/EventSynchronization/SchemaSynchronizerTests.cs

@ -73,7 +73,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EventSynchronization
new Schema("source");
var targetSchema =
new Schema("target").ConfigureScripts(scripts);
new Schema("target").SetScripts(scripts);
var events = sourceSchema.Synchronize(targetSchema, idGenerator);
@ -95,7 +95,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EventSynchronization
var targetSchema =
new Schema("target")
.ConfigurePreviewUrls(previewUrls);
.SetPreviewUrls(previewUrls);
var events = sourceSchema.Synchronize(targetSchema, idGenerator);
@ -143,11 +143,11 @@ namespace Squidex.Domain.Apps.Core.Operations.EventSynchronization
{
var sourceSchema =
new Schema("source")
.ConfigureFieldsInLists("1", "2");
.SetFieldsInLists("1", "2");
var targetSchema =
new Schema("target")
.ConfigureFieldsInLists("2", "1");
.SetFieldsInLists("2", "1");
var events = sourceSchema.Synchronize(targetSchema, idGenerator);
@ -161,11 +161,11 @@ namespace Squidex.Domain.Apps.Core.Operations.EventSynchronization
{
var sourceSchema =
new Schema("source")
.ConfigureFieldsInReferences("1", "2");
.SetFieldsInReferences("1", "2");
var targetSchema =
new Schema("target")
.ConfigureFieldsInReferences("2", "1");
.SetFieldsInReferences("2", "1");
var events = sourceSchema.Synchronize(targetSchema, idGenerator);

2
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ExtractReferenceIds/ReferenceFormattingTests.cs

@ -31,7 +31,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
.AddString(2, "ref2", Partitioning.Invariant,
new StringFieldProperties())
.AddString(3, "non-ref", Partitioning.Invariant)
.ConfigureFieldsInReferences("ref1", "ref2");
.SetFieldsInReferences("ref1", "ref2");
var formatted = data.FormatReferences(schema, languages);

2
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentDomainObjectTests.cs

@ -91,7 +91,7 @@ namespace Squidex.Domain.Apps.Entities.Contents
new NumberFieldProperties { IsRequired = true })
.AddNumber(2, "my-field2", Partitioning.Invariant,
new NumberFieldProperties { IsRequired = false })
.ConfigureScripts(scripts);
.SetScripts(scripts);
schema = Mocks.Schema(AppNamedId, SchemaNamedId, schemaDef);

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

@ -88,7 +88,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
.AddBoolean(121, "nested-boolean")
.AddNumber(122, "nested-number")
.AddNumber(123, "nested_number"))
.ConfigureScripts(new SchemaScripts { Query = "<query-script>" });
.SetScripts(new SchemaScripts { Query = "<query-script>" });
schema = Mocks.Schema(appId, schemaId, schemaDef);

2
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryServiceTests.cs

@ -66,7 +66,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
var schemaDef =
new Schema(schemaId.Name)
.ConfigureScripts(new SchemaScripts { Query = "<query-script>" });
.SetScripts(new SchemaScripts { Query = "<query-script>" });
schema = Mocks.Schema(appId, schemaId, schemaDef);

2
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs

@ -54,7 +54,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
MinItems = 1,
MaxItems = 1
})
.ConfigureFieldsInLists("asset1", "asset2");
.SetFieldsInLists("asset1", "asset2");
A.CallTo(() => assetUrlGenerator.GenerateUrl(A<string>.Ignored))
.ReturnsLazily(new Func<string, string>(id => $"url/to/{id}"));

4
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveReferencesTests.cs

@ -45,7 +45,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
new StringFieldProperties())
.AddNumber(2, "number", Partitioning.Invariant,
new NumberFieldProperties())
.ConfigureFieldsInReferences("name", "number");
.SetFieldsInReferences("name", "number");
var schemaDef =
new Schema(schemaId.Name)
@ -63,7 +63,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
MaxItems = 1,
SchemaId = refSchemaId2.Id
})
.ConfigureFieldsInLists("ref1", "ref2");
.SetFieldsInLists("ref1", "ref2");
schemaProvider = x =>
{

8
backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaCommandsTests.cs

@ -60,13 +60,13 @@ namespace Squidex.Domain.Apps.Entities.Schemas
})
.HideField(1).DisableField(1).LockField(1)
.ChangeCategory("myCategory")
.ConfigureFieldsInLists(new FieldNames("meta.id", "myString"))
.ConfigureFieldsInReferences(new FieldNames("myString"))
.ConfigureScripts(new SchemaScripts
.SetFieldsInLists(new FieldNames("meta.id", "myString"))
.SetFieldsInReferences(new FieldNames("myString"))
.SetScripts(new SchemaScripts
{
Change = "change-script"
})
.ConfigurePreviewUrls(new Dictionary<string, string>
.SetPreviewUrls(new Dictionary<string, string>
{
["mobile"] = "http://mobile"
})

Loading…
Cancel
Save