From 0f9c2332e0a94f1d6bd90f759a2502a2cb72501b Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Tue, 4 Mar 2025 14:49:37 +0100 Subject: [PATCH] Adds unit tests for RequiredValidator. (#18471) Co-authored-by: Mole --- .../Validators/RequiredValidatorTests.cs | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/RequiredValidatorTests.cs diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/RequiredValidatorTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/RequiredValidatorTests.cs new file mode 100644 index 0000000000..d2071472ab --- /dev/null +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/Validators/RequiredValidatorTests.cs @@ -0,0 +1,66 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System.ComponentModel.DataAnnotations; +using NUnit.Framework; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.PropertyEditors; +using Umbraco.Cms.Core.PropertyEditors.Validators; + +namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.PropertyEditors.Validators; + +[TestFixture] +public class RequiredValidatorTests +{ + [Test] + public void Validates_Null() + { + var validator = new RequiredValidator(); + var result = validator.ValidateRequired(null, ValueTypes.String); + AssertValidationFailed(result, expectedMessage: Constants.Validation.ErrorMessages.Properties.Missing); + } + + [TestCase("", false)] + [TestCase(" ", false)] + [TestCase("a", true)] + public void Validates_Strings(string value, bool expectedSuccess) + { + var validator = new RequiredValidator(); + var result = validator.ValidateRequired(value, ValueTypes.String); + if (expectedSuccess) + { + Assert.IsEmpty(result); + } + else + { + AssertValidationFailed(result); + } + } + + [TestCase("{}", false)] + [TestCase("[]", false)] + [TestCase("{ }", false)] + [TestCase("[ ]", false)] + [TestCase(" { } ", false)] + [TestCase(" [ ] ", false)] + [TestCase(" { \"foo\": \"bar\" } ", true)] + public void Validates_Json(string value, bool expectedSuccess) + { + var validator = new RequiredValidator(); + var result = validator.ValidateRequired(value, ValueTypes.Json); + if (expectedSuccess) + { + Assert.IsEmpty(result); + } + else + { + AssertValidationFailed(result); + } + } + + private static void AssertValidationFailed(IEnumerable result, string expectedMessage = Constants.Validation.ErrorMessages.Properties.Empty) + { + Assert.AreEqual(1, result.Count()); + Assert.AreEqual(expectedMessage, result.First().ErrorMessage); + } +}