public void Validate_Should_ReturnNoErrors()
        {
            var validator = new SlugValidator();
            var product   = new Product {
                Slug = "this-is-a-valid-slug"
            };

            var selector = ValidatorOptions.ValidatorSelectors.DefaultValidatorSelectorFactory();
            var context  = new PropertyValidatorContext(
                new ValidationContext(product, new PropertyChain(), selector)
                , PropertyRule.Create <Product, string>(p => p.Slug)
                , nameof(product.Slug)
                , product.Slug);

            var result = validator.Validate(context);

            result.Should().HaveCount(0);
        }
        public void Validate_Should_ReturnError()
        {
            var validator = new SlugValidator();
            var product   = new Product {
                Slug = "this is not a valid slug"
            };

            var selector = ValidatorOptions.ValidatorSelectors.DefaultValidatorSelectorFactory();
            var context  = new PropertyValidatorContext(
                new ValidationContext(product, new PropertyChain(), selector)
                , PropertyRule.Create <Product, string>(p => p.Slug)
                , nameof(product.Slug)
                , product.Slug);

            var result = validator.Validate(context);

            result.Should().HaveCount(1);
            result.First().ErrorMessage.Should().StartWith("Invalid slug");
        }