using FluentAssertions; using Nop.Core.Domain.Customers; using Nop.Web.Framework.Validators; using NUnit.Framework; namespace Nop.Tests.Nop.Web.Tests.Public.Validators; [TestFixture] public class PhoneNumberValidatorTests { private TestValidator _validator; private CustomerSettings _customerSettings; [OneTimeSetUp] public void Setup() { _customerSettings = new CustomerSettings { PhoneNumberValidationRule = "^[0-9]{1,14}?$", PhoneNumberValidationEnabled = true, PhoneNumberValidationUseRegex = false }; _validator = new TestValidator { v => v.RuleFor(x => x.PhoneNumber).IsPhoneNumber(_customerSettings) }; } [Test] public async Task IsValidTests() { //optional value is not valid _customerSettings.PhoneRequired = true; var result = await _validator.ValidateAsync(new Person { PhoneNumber = null }); result.IsValid.Should().BeFalse(); result = await _validator.ValidateAsync(new Person { PhoneNumber = string.Empty }); result.IsValid.Should().BeFalse(); //validation without regex result = await _validator.ValidateAsync(new Person { PhoneNumber = "test_phone_number" }); result.IsValid.Should().BeFalse(); result = await _validator.ValidateAsync(new Person { PhoneNumber = string.Empty }); result.IsValid.Should().BeFalse(); result = await _validator.ValidateAsync(new Person { PhoneNumber = "123" }); result.IsValid.Should().BeFalse(); result = await _validator.ValidateAsync(new Person { PhoneNumber = "[0-9]{1,14}^" }); result.IsValid.Should().BeTrue(); //validation with regex _customerSettings.PhoneNumberValidationUseRegex = true; result = await _validator.ValidateAsync(new Person { PhoneNumber = "test_phone_number" }); result.IsValid.Should().BeFalse(); result = await _validator.ValidateAsync(new Person { PhoneNumber = "123456789" }); result.IsValid.Should().BeTrue(); _customerSettings.PhoneRequired = false; result = await _validator.ValidateAsync(new Person { PhoneNumber = string.Empty }); result.IsValid.Should().BeTrue(); result = await _validator.ValidateAsync(new Person { PhoneNumber = "+123456789" }); result.IsValid.Should().BeFalse(); } }