* configure max chars for textbox * min 1 * Adds server-side check for text box min and max character validation. * Applied suggestion from code review. * Bumped version of test helper * Fixed test that was creating a text string data type with too large a maximum characters setting. --------- Co-authored-by: Andy Butland <abutland73@gmail.com> Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
// Copyright (c) Umbraco.
|
||||
// See LICENSE for more details.
|
||||
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Cms.Core.Models.Validation;
|
||||
using Umbraco.Cms.Core.PropertyEditors;
|
||||
using Umbraco.Cms.Core.PropertyEditors.Validators;
|
||||
|
||||
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.PropertyEditors.Validators;
|
||||
|
||||
[TestFixture]
|
||||
public class IntegerValidatorTests
|
||||
{
|
||||
[TestCase(null, true)]
|
||||
[TestCase("", true)]
|
||||
[TestCase(" ", false)]
|
||||
[TestCase("x", false)]
|
||||
[TestCase("99", true)]
|
||||
public void Validates_Integer(object? value, bool expectedSuccess)
|
||||
{
|
||||
var validator = CreateValidator();
|
||||
var result = validator.Validate(value, ValueTypes.Integer, null, PropertyValidationContext.Empty());
|
||||
if (expectedSuccess)
|
||||
{
|
||||
Assert.IsEmpty(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.AreEqual(1, result.Count());
|
||||
|
||||
var validationResult = result.First();
|
||||
Assert.IsTrue(validationResult.ErrorMessage.Contains("is not a valid integer"));
|
||||
}
|
||||
}
|
||||
|
||||
public enum RangeResult
|
||||
{
|
||||
Success,
|
||||
BelowMin,
|
||||
AboveMax,
|
||||
}
|
||||
|
||||
[TestCase("5", RangeResult.BelowMin)]
|
||||
[TestCase("10", RangeResult.Success)]
|
||||
[TestCase("15", RangeResult.Success)]
|
||||
[TestCase("20", RangeResult.Success)]
|
||||
[TestCase("25", RangeResult.AboveMax)]
|
||||
public void Validates_Integer_Within_Range(object? value, RangeResult expectedResult)
|
||||
{
|
||||
var validator = CreateValidator(10, 20);
|
||||
var result = validator.Validate(value, ValueTypes.Integer, null, PropertyValidationContext.Empty());
|
||||
if (expectedResult == RangeResult.Success)
|
||||
{
|
||||
Assert.IsEmpty(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.AreEqual(1, result.Count());
|
||||
|
||||
var validationResult = result.First();
|
||||
if (expectedResult == RangeResult.BelowMin)
|
||||
{
|
||||
Assert.IsTrue(validationResult.ErrorMessage.Contains("less than the minimum allowed value"));
|
||||
}
|
||||
else if (expectedResult == RangeResult.AboveMax)
|
||||
{
|
||||
Assert.IsTrue(validationResult.ErrorMessage.Contains("greater than the maximum allowed value"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static IntegerValidator CreateValidator(int? min = null, int? max = null) =>
|
||||
min.HasValue is false && max.HasValue is false ? new IntegerValidator() : new IntegerValidator(min, max);
|
||||
}
|
||||
Reference in New Issue
Block a user