diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/DefaultValues/DefaultValueFactory.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/DefaultValues/DefaultValueFactory.cs index 9ce3334d4..f70e963cd 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/DefaultValues/DefaultValueFactory.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/DefaultValues/DefaultValueFactory.cs @@ -83,7 +83,7 @@ namespace Squidex.Domain.Apps.Core.DefaultValues { if (field.Properties.CalculatedDefaultValue == DateTimeCalculatedDefaultValue.Now) { - return JsonValue.Create(now.ToString()); + return JsonValue.Create(now); } if (field.Properties.CalculatedDefaultValue == DateTimeCalculatedDefaultValue.Today) @@ -91,7 +91,7 @@ namespace Squidex.Domain.Apps.Core.DefaultValues return JsonValue.Create($"{now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}T00:00:00Z"); } - return JsonValue.Create(field.Properties.DefaultValue?.ToString()); + return JsonValue.Create(field.Properties.DefaultValue); } } } diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs index 1e90575d2..8b1f4ac86 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs @@ -91,7 +91,7 @@ namespace Squidex.Domain.Apps.Core.ValidateContent if (!parseResult.Success) { - throw parseResult.Exception; + return (null, new JsonError(parseResult.Exception.Message)); } return (parseResult.Value, null); @@ -156,7 +156,7 @@ namespace Squidex.Domain.Apps.Core.ValidateContent { if (value is JsonArray array) { - var result = new List(); + var result = new List(array.Count); foreach (var item in array) { @@ -180,7 +180,7 @@ namespace Squidex.Domain.Apps.Core.ValidateContent { if (value is JsonArray array) { - var result = new List(); + var result = new List(array.Count); foreach (var item in array) { @@ -208,7 +208,7 @@ namespace Squidex.Domain.Apps.Core.ValidateContent { if (value is JsonArray array) { - var result = new List(); + var result = new List(array.Count); foreach (var item in array) { diff --git a/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs b/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs index 2fa28acf0..bcb07f88e 100644 --- a/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs +++ b/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs @@ -82,31 +82,41 @@ namespace Squidex.Infrastructure.Json.Objects return Create(value.ToString()); } - public static IJsonValue Create(bool value) + public static IJsonValue Create(Guid? value) { - return value ? True : False; + if (value == null) + { + return Null; + } + + return Create(value.Value); } - public static IJsonValue Create(double value) + public static IJsonValue Create(Instant value) { - Guard.ValidNumber(value); + return Create(value.ToString()); + } - if (value == 0) + public static IJsonValue Create(Instant? value) + { + if (value == null) { - return Zero; + return Null; } - return new JsonNumber(value); + return Create(value.Value); } - public static IJsonValue Create(Instant? value) + public static IJsonValue Create(double value) { - if (value == null) + Guard.ValidNumber(value); + + if (value == 0) { - return Null; + return Zero; } - return Create(value.Value.ToString()); + return new JsonNumber(value); } public static IJsonValue Create(double? value) @@ -119,6 +129,11 @@ namespace Squidex.Infrastructure.Json.Objects return Create(value.Value); } + public static IJsonValue Create(bool value) + { + return value ? True : False; + } + public static IJsonValue Create(bool? value) { if (value == null) diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/DefaultValues/DefaultValuesTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/DefaultValues/DefaultValuesTests.cs index a870ccd75..964a72cf1 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/DefaultValues/DefaultValuesTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/DefaultValues/DefaultValuesTests.cs @@ -107,7 +107,7 @@ namespace Squidex.Domain.Apps.Core.Operations.DefaultValues Fields.DateTime(1, "1", Partitioning.Invariant, new DateTimeFieldProperties { DefaultValue = FutureDays(15) }); - Assert.Equal(JsonValue.Create(FutureDays(15).ToString()), DefaultValueFactory.CreateDefaultValue(field, now)); + Assert.Equal(JsonValue.Create(FutureDays(15)), DefaultValueFactory.CreateDefaultValue(field, now)); } [Fact] diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/DateTimeFieldTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/DateTimeFieldTests.cs index 2fbbed01f..0be218136 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/DateTimeFieldTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/DateTimeFieldTests.cs @@ -79,7 +79,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent await sut.ValidateAsync(JsonValue.Create("Invalid"), errors); errors.Should().BeEquivalentTo( - new[] { "Not a valid value." }); + new[] { "The value string does not match the required number from the format string \"uuuu\". Value being parsed: '^Invalid'. (^ indicates error position.)" }); } [Fact] @@ -100,7 +100,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent private static IJsonValue CreateValue(Instant v) { - return JsonValue.Create(v.ToString()); + return JsonValue.Create(v); } private static RootField Field(DateTimeFieldProperties properties) diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs index 90d9951eb..f606e8f33 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs @@ -301,7 +301,7 @@ namespace Squidex.Domain.Apps.Entities.Assets FileSize = fileSize }; - A.CallTo(() => assetQuery.QueryByHashAsync(A.That.Matches(x => x.ShouldEnrichAsset()), A.Ignored, A.Ignored)) + A.CallTo(() => assetQuery.QueryByHashAsync(A.That.Matches(x => !x.ShouldEnrichAsset()), A.Ignored, A.Ignored)) .Returns(new List { duplicate }); } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs index d0b75065f..291dfb14c 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs @@ -26,8 +26,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries { public class ResolveAssetsTests { - private readonly IContentWorkflow contentWorkflow = A.Fake(); - private readonly IContentQueryService contentQuery = A.Fake(); private readonly IAssetQueryService assetQuery = A.Fake(); private readonly IAssetUrlGenerator assetUrlGenerator = A.Fake(); private readonly NamedId appId = NamedId.Of(Guid.NewGuid(), "my-app"); @@ -93,7 +91,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries new[] { document2.Id, image2.Id }) }; - A.CallTo(() => assetQuery.QueryAsync(A.That.Matches(x => x.ShouldEnrichAsset()), null, A.That.Matches(x => x.Ids.Count == 4))) + A.CallTo(() => assetQuery.QueryAsync(A.That.Matches(x => !x.ShouldEnrichAsset()), null, A.That.Matches(x => x.Ids.Count == 4))) .Returns(ResultList.CreateFrom(4, image1, image2, document1, document2)); await sut.EnrichAsync(requestContext, source, schemaProvider); @@ -128,7 +126,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries new[] { document2.Id, image2.Id }) }; - A.CallTo(() => assetQuery.QueryAsync(A.That.Matches(x => x.ShouldEnrichAsset()), null, A.That.Matches(x => x.Ids.Count == 4))) + A.CallTo(() => assetQuery.QueryAsync(A.That.Matches(x => !x.ShouldEnrichAsset()), null, A.That.Matches(x => x.Ids.Count == 4))) .Returns(ResultList.CreateFrom(4, image1, image2, document1, document2)); await sut.EnrichAsync(requestContext, source, schemaProvider); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveReferencesTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveReferencesTests.cs index 857251480..5a383f52c 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveReferencesTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveReferencesTests.cs @@ -142,7 +142,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries CreateContent(new[] { ref1_2.Id }, new[] { ref2_2.Id }) }; - A.CallTo(() => contentQuery.QueryAsync(A.That.Matches(x => x.ShouldEnrichContent()), A>.That.Matches(x => x.Count == 4))) + A.CallTo(() => contentQuery.QueryAsync(A.That.Matches(x => !x.ShouldEnrichContent()), A>.That.Matches(x => x.Count == 4))) .Returns(ResultList.CreateFrom(4, ref1_1, ref1_2, ref2_1, ref2_2)); await sut.EnrichAsync(requestContext, source, schemaProvider); @@ -194,7 +194,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries CreateContent(new[] { ref1_2.Id }, new[] { ref2_1.Id, ref2_2.Id }) }; - A.CallTo(() => contentQuery.QueryAsync(A.That.Matches(x => x.ShouldEnrichContent()), A>.That.Matches(x => x.Count == 4))) + A.CallTo(() => contentQuery.QueryAsync(A.That.Matches(x => !x.ShouldEnrichContent()), A>.That.Matches(x => x.Count == 4))) .Returns(ResultList.CreateFrom(4, ref1_1, ref1_2, ref2_1, ref2_2)); await sut.EnrichAsync(requestContext, source, schemaProvider);