51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using System.Globalization;
|
|
using FluentAssertions;
|
|
using Nop.Web.Framework.Validators;
|
|
using NUnit.Framework;
|
|
|
|
namespace Nop.Tests.Nop.Web.Tests.Public.Validators;
|
|
|
|
[TestFixture]
|
|
public class CreditCardValidatorTests
|
|
{
|
|
private TestValidator _validator;
|
|
|
|
[OneTimeSetUp]
|
|
public void Setup()
|
|
{
|
|
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
|
|
|
|
_validator = new TestValidator { v => v.RuleFor(x => x.CreditCard).IsCreditCard() };
|
|
}
|
|
|
|
[Test]
|
|
public async Task IsValidTests()
|
|
{
|
|
// Optional value is not valid
|
|
var result = await _validator.ValidateAsync(new Person { CreditCard = null });
|
|
result.IsValid.Should().BeFalse();
|
|
|
|
// Simplest valid value
|
|
result = await _validator.ValidateAsync(new Person { CreditCard = "0000000000000000" });
|
|
result.IsValid.Should().BeTrue();
|
|
|
|
// Good checksum
|
|
result = await _validator.ValidateAsync(new Person { CreditCard = "1234567890123452" });
|
|
result.IsValid.Should().BeTrue();
|
|
|
|
// Good checksum, with dashes
|
|
result = await _validator.ValidateAsync(new Person { CreditCard = "1234-5678-9012-3452" });
|
|
result.IsValid.Should().BeTrue();
|
|
|
|
// Good checksum, with spaces
|
|
result = await _validator.ValidateAsync(new Person { CreditCard = "1234 5678 9012 3452" });
|
|
result.IsValid.Should().BeTrue();
|
|
|
|
// Bad checksum
|
|
result = await _validator.ValidateAsync(new Person { CreditCard = "0000000000000001" });
|
|
result.IsValid.Should().BeFalse();
|
|
|
|
result = await _validator.ValidateAsync(new Person { CreditCard = "0000000000000000" });
|
|
result.IsValid.Should().BeTrue();
|
|
}
|
|
} |