diff --git a/src/Squidex.Domain.Apps.Entities/Rules/Guards/RuleActionValidator.cs b/src/Squidex.Domain.Apps.Entities/Rules/Guards/RuleActionValidator.cs index 68a8fc9c5..62e3947b5 100644 --- a/src/Squidex.Domain.Apps.Entities/Rules/Guards/RuleActionValidator.cs +++ b/src/Squidex.Domain.Apps.Entities/Rules/Guards/RuleActionValidator.cs @@ -116,9 +116,9 @@ namespace Squidex.Domain.Apps.Entities.Rules.Guards errors.Add(new ValidationError("Access token is required.", nameof(action.AccessToken))); } - if (string.IsNullOrWhiteSpace(action.Author) && !string.IsNullOrWhiteSpace(action.Publication)) + if (string.IsNullOrWhiteSpace(action.Author) && string.IsNullOrWhiteSpace(action.Publication)) { - errors.Add(new ValidationError("Author or publication id is required.", nameof(action.Author), nameof(action.Publication))); + errors.Add(new ValidationError("Author or publication is required.", nameof(action.Author), nameof(action.Publication))); } if (string.IsNullOrWhiteSpace(action.Content)) @@ -128,7 +128,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Guards if (string.IsNullOrWhiteSpace(action.Title)) { - errors.Add(new ValidationError("Title is required.", nameof(action.Content))); + errors.Add(new ValidationError("Title is required.", nameof(action.Title))); } return Task.FromResult>(errors); diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Guards/Actions/MediumActionTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Guards/Actions/MediumActionTests.cs new file mode 100644 index 000000000..4500a4081 --- /dev/null +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Guards/Actions/MediumActionTests.cs @@ -0,0 +1,85 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschränkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Collections.Generic; +using System.Threading.Tasks; +using FluentAssertions; +using Squidex.Domain.Apps.Core.Rules.Actions; +using Squidex.Infrastructure; +using Xunit; + +namespace Squidex.Domain.Apps.Entities.Rules.Guards.Actions +{ + public class MediumActionTests + { + [Fact] + public async Task Should_add_error_if_access_token_is_null() + { + var action = new MediumAction { AccessToken = null, Author = "author", Title = "title", Content = "content" }; + + var errors = await RuleActionValidator.ValidateAsync(action); + + errors.Should().BeEquivalentTo( + new List + { + new ValidationError("Access token is required.", "AccessToken") + }); + } + + [Fact] + public async Task Should_add_error_if_author_is_null() + { + var action = new MediumAction { AccessToken = "token", Author = null, Title = "title", Content = "content" }; + + var errors = await RuleActionValidator.ValidateAsync(action); + + errors.Should().BeEquivalentTo( + new List + { + new ValidationError("Author or publication is required.", "Author", "Publication") + }); + } + + [Fact] + public async Task Should_add_error_if_title_null() + { + var action = new MediumAction { AccessToken = "token", Author = "author", Title = null, Content = "content" }; + + var errors = await RuleActionValidator.ValidateAsync(action); + + errors.Should().BeEquivalentTo( + new List + { + new ValidationError("Title is required.", "Title") + }); + } + + [Fact] + public async Task Should_add_error_if_content_is_null() + { + var action = new MediumAction { AccessToken = "token", Author = "author", Title = "title", Content = null }; + + var errors = await RuleActionValidator.ValidateAsync(action); + + errors.Should().BeEquivalentTo( + new List + { + new ValidationError("Content is required.", "Content") + }); + } + + [Fact] + public async Task Should_not_add_error_if_values_are_valid() + { + var action = new MediumAction { AccessToken = "token", Author = "author", Title = "title", Content = "content" }; + + var errors = await RuleActionValidator.ValidateAsync(action); + + Assert.Empty(errors); + } + } +}