public async Task ValidateAddItem_RuleSetDefault_Valid()
        {
            // Arrange
            var validator   = new NewCartItemValidator();
            var newCartItem = new NewCartItem(Rand.Guid().ToString(), Rand.Int(1, InStockQuantity))
            {
                CartProduct = _fixture.Create <CartProduct>()
            };

            // Act
            var result = await validator.ValidateAsync(newCartItem, ruleSet : "default");

            // Assert
            result.IsValid.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
        public async Task ValidateAddItem_RuleSetDefault_Invalid()
        {
            // Arrange
            var validator   = new NewCartItemValidator();
            var newCartItem = new NewCartItem(null, 0);

            // Act
            var result = await validator.ValidateAsync(newCartItem, ruleSet : "default");

            // Assert
            result.IsValid.Should().BeFalse();
            result.Errors.Should().NotBeEmpty();
            result.Errors.Should().HaveCount(3);
            result.Errors.Should().Contain(x => x.PropertyName == "Quantity" && x.ErrorCode == nameof(GreaterThanValidator));
            result.Errors.Should().Contain(x => x.PropertyName == "ProductId" && x.ErrorCode == nameof(NotNullValidator));
            result.Errors.Should().Contain(x => x.PropertyName == "CartProduct" && x.ErrorCode == nameof(NotNullValidator));
        }