From d666cf0bea71d153d4e6d306b05d5e5ecdffc478 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sat, 9 Feb 2019 20:51:20 +0100 Subject: [PATCH] More validation fixes. --- .../ValidateContent/JsonValueConverter.cs | 6 ++++- .../ValidateContent/ValidatorsFactory.cs | 2 +- .../ValidateContent/StringFieldTests.cs | 4 +-- .../ValidateContent/TagsFieldTests.cs | 26 +++++++++++++++++-- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs b/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs index 397ed286f..2972cd648 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs +++ b/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs @@ -179,7 +179,11 @@ namespace Squidex.Domain.Apps.Core.ValidateContent foreach (var item in array) { - if (item is JsonScalar s) + if (item is JsonNull n) + { + result.Add(null); + } + else if (item is JsonScalar s) { result.Add(s.Value); } diff --git a/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/ValidatorsFactory.cs b/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/ValidatorsFactory.cs index 495dc500c..af7e3e698 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/ValidatorsFactory.cs +++ b/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/ValidatorsFactory.cs @@ -171,7 +171,7 @@ namespace Squidex.Domain.Apps.Core.ValidateContent yield return new CollectionItemValidator(new AllowedValuesValidator(field.Properties.AllowedValues)); } - yield return new CollectionItemValidator(new RequiredStringValidator()); + yield return new CollectionItemValidator(new RequiredStringValidator(true)); } } } diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/StringFieldTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/StringFieldTests.cs index f90a14989..69d9402e4 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/StringFieldTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/StringFieldTests.cs @@ -39,7 +39,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent } [Fact] - public async Task Should_add_error_if_string_is_required() + public async Task Should_add_error_if_string_is_required_but_null() { var sut = Field(new StringFieldProperties { IsRequired = true }); @@ -50,7 +50,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent } [Fact] - public async Task Should_add_error_if_string_is_required_and_empty_string_is_passed() + public async Task Should_add_error_if_string_is_required_but_empty() { var sut = Field(new StringFieldProperties { IsRequired = true }); diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/TagsFieldTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/TagsFieldTests.cs index 23eef2ef9..bab3782b2 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/TagsFieldTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/TagsFieldTests.cs @@ -59,7 +59,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent } [Fact] - public async Task Should_add_error_if_tags_are_required_and_null() + public async Task Should_add_error_if_tags_are_required_but_null() { var sut = Field(new TagsFieldProperties { IsRequired = true }); @@ -70,7 +70,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent } [Fact] - public async Task Should_add_error_if_tags_are_required_and_empty() + public async Task Should_add_error_if_tags_are_required_but_empty() { var sut = Field(new TagsFieldProperties { IsRequired = true }); @@ -80,6 +80,28 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent new[] { "Field is required." }); } + [Fact] + public async Task Should_add_error_if_tag_value_is_null() + { + var sut = Field(new TagsFieldProperties { IsRequired = true }); + + await sut.ValidateAsync(JsonValue.Array(JsonValue.Null), errors); + + errors.Should().BeEquivalentTo( + new[] { "[1]: Field is required." }); + } + + [Fact] + public async Task Should_add_error_if_tag_value_is_empty() + { + var sut = Field(new TagsFieldProperties { IsRequired = true }); + + await sut.ValidateAsync(CreateValue(string.Empty), errors); + + errors.Should().BeEquivalentTo( + new[] { "[1]: Field is required." }); + } + [Fact] public async Task Should_add_error_if_value_is_not_valid() {