Adds unit tests for RequiredValidator. (#18471)

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
This commit is contained in:
Andy Butland
2025-03-04 14:49:37 +01:00
committed by GitHub
parent a7f5b142e9
commit 0f9c2332e0

View File

@@ -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<ValidationResult> result, string expectedMessage = Constants.Validation.ErrorMessages.Properties.Empty)
{
Assert.AreEqual(1, result.Count());
Assert.AreEqual(expectedMessage, result.First().ErrorMessage);
}
}