Exemplo n.º 1
0
        public void Uses_named_parameters_to_validate_ruleset()
        {
            validator.RuleSet("Names", () => {
                validator.RuleFor(x => x.Surname).NotNull();
                validator.RuleFor(x => x.Forename).NotNull();
            });
            validator.RuleFor(x => x.Id).NotEqual(0);

            var result = validator.Validate(new Person(), v => v.IncludeRuleSets("Names"));

            result.Errors.Count.ShouldEqual(2);
        }
Exemplo n.º 2
0
        public void ShouldHaveValidationErrorFor_takes_account_of_rulesets()
        {
            var testValidator = new TestValidator();

            testValidator.RuleSet("Names", () => {
                testValidator.RuleFor(x => x.Surname).NotNull();
                testValidator.RuleFor(x => x.Forename).NotNull();
            });
            testValidator.RuleFor(x => x.Id).NotEqual(0);

            testValidator.ShouldHaveValidationErrorFor(x => x.Forename, new Person(), "Names");
        }
Exemplo n.º 3
0
        public void Executes_rules_in_default_ruleset_and_specific_ruleset()
        {
            var validator = new TestValidator();

            validator.RuleSet("foo", () => {
                validator.RuleFor(x => x.Age).NotEqual(0);
            });

            var result = validator.Validate(new Person(), ruleSet: "default,Names");

            result.Errors.Count.ShouldEqual(3);
        }
        public void Throws_exception_with_a_ruleset()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            typeof(ValidationException).ShouldBeThrownBy(() => validator.ValidateAndThrow(new Person(), ruleSetName));
        }
        public async Task RuleSet_can_be_used_inside_async_condition()
        {
            var validator = new TestValidator();

            validator.WhenAsync(async(x, c) => (x.Id > 0), () => { validator.RuleSet("foo", () => { validator.RuleFor(x => x.Forename).NotNull(); }); });

            validator.RuleFor(x => x.Surname).NotNull();

            var result = await validator.ValidateAsync(new Person { Id = 5 }, ruleSet : "foo");

            result.Errors.Count.ShouldEqual(1);
            result.Errors.Single().PropertyName.ShouldEqual("Forename");
        }
Exemplo n.º 6
0
        public void Executes_rules_in_default_ruleset_and_specific_ruleset()
        {
            var validator = new TestValidator();

            validator.RuleSet("foo", () => {
                validator.RuleFor(x => x.Age).NotEqual(0);
            });

            var result = validator.Validate(new Person(), v => v.IncludeRulesNotInRuleSet().IncludeRuleSets("Names"));

            result.Errors.Count.ShouldEqual(3);
            AssertExecuted(result, "default", "Names");
        }
Exemplo n.º 7
0
        public void Executes_multiple_rulesets()
        {
            var validator = new TestValidator();

            validator.RuleSet("Id", () => {
                validator.RuleFor(x => x.Id).NotEqual(0);
            });

            var person = new Person();
            var result = validator.Validate(new ValidationContext <Person>(person, new PropertyChain(), new RulesetValidatorSelector("Names", "Id")));

            result.Errors.Count.ShouldEqual(3);
        }
Exemplo n.º 8
0
        public void Uses_named_parameters_to_validate_ruleset()
        {
            validator.RuleSet("Names", () => {
                validator.RuleFor(x => x.Surname).NotNull();
                validator.RuleFor(x => x.Forename).NotNull();
            });
            validator.RuleFor(x => x.Id).NotEqual(0);

#pragma warning disable 618
            var result = validator.Validate(new Person(), ruleSet: "Names");
#pragma warning restore 618
            result.Errors.Count.ShouldEqual(2);
        }
        public void Throws_exception_with_a_ruleset()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            Assert.Throws <ValidationException>(() => {
                validator.Validate(new Person(), v => v.IncludeRuleSets(ruleSetName).ThrowOnFailures());
            });
        }
        public void Condition_can_be_used_inside_ruleset()
        {
            var validator = new TestValidator();

            validator.RuleSet("foo", () => { validator.When(x => x.Id > 0, () => { validator.RuleFor(x => x.Forename).NotNull(); }); });
            validator.RuleFor(x => x.Surname).NotNull();

            var result = validator.Validate(new Person {
                Id = 5
            }, ruleSet: "foo");

            result.Errors.Count.ShouldEqual(1);
            result.Errors.Single().PropertyName.ShouldEqual("Forename");
        }
Exemplo n.º 11
0
        public void Executes_rules_in_default_ruleset_and_specific_ruleset()
        {
            var validator = new TestValidator();

            validator.RuleSet("foo", () => {
                validator.RuleFor(x => x.Age).NotEqual(0);
            });

#pragma warning disable 618
            var result = validator.Validate(new Person(), ruleSet: "default,Names");
#pragma warning restore 618
            result.Errors.Count.ShouldEqual(3);
            AssertExecuted(result, "default", "Names");
        }
        public async Task Throws_exception_with_a_ruleset_async()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            await Assert.ThrowsAsync <ValidationException>(async() => {
                await validator.ValidateAsync(new Person(), v => v.IncludeRuleSets(ruleSetName).ThrowOnFailures());
            });
        }
Exemplo n.º 13
0
        public void ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approach()
        {
            var testValidator = new TestValidator();

            testValidator.RuleSet("Names", () => {
                testValidator.RuleFor(x => x.Surname).NotNull();
                testValidator.RuleFor(x => x.Forename).NotNull();
            });
            testValidator.RuleFor(x => x.Id).NotEqual(0);

            var assertionRoot = testValidator.TestValidate(new Person(), "Names").Which;

            assertionRoot.Property(x => x.Forename).ShouldHaveValidationError().WithErrorCode("notnull_error");
            assertionRoot.Property(x => x.Surname).ShouldHaveValidationError().WithErrorCode("notnull_error");
            assertionRoot.Property(x => x.Id).ShouldNotHaveValidationError();
        }
        public async Task Does_not_throw_when_valid_and_a_ruleset_async()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            var person = new Person {
                Forename = "foo",
                Surname  = "foo"
            };
            await validator.ValidateAsync(person, v => v.IncludeRuleSets(ruleSetName).ThrowOnFailures());
        }
        public void Does_not_throw_when_valid_and_a_ruleset()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            var person = new Person {
                Forename = "foo",
                Surname  = "foo"
            };

            validator.ValidateAndThrow(person, ruleSetName);
        }
Exemplo n.º 16
0
        public void Dependent_rules_inside_ruleset()
        {
            var validator = new TestValidator();

            validator.RuleSet("MyRuleSet", () => {
                validator.RuleFor(x => x.Surname).NotNull()
                .DependentRules(d => {
                    d.RuleFor(x => x.Forename).NotNull();
                });
            });

            var results = validator.Validate(new Person {
                Surname = "foo"
            }, ruleSet: "MyRuleSet");

            results.Errors.Count.ShouldEqual(1);
            results.Errors.Single().PropertyName.ShouldEqual("Forename");
        }
        public void Throws_exception_with_a_ruleset_async()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            typeof(ValidationException).ShouldBeThrownBy(() => {
                try {
                    validator.ValidateAndThrowAsync(new Person(), ruleSetName).Wait();
                }
                catch (AggregateException agrEx) {
                    throw agrEx.InnerException;
                }
            });
        }
        public void ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approach()
        {
            var testValidator = new TestValidator();

            testValidator.RuleSet("Names", () => {
                testValidator.RuleFor(x => x.Surname).NotNull();
                testValidator.RuleFor(x => x.Forename).NotNull();
            });
            testValidator.RuleFor(x => x.Id).NotEqual(0);

#pragma warning disable 618
            var assertionRoot = testValidator.TestValidate(new Person(), "Names");
#pragma warning restore 618

            assertionRoot.ShouldHaveValidationErrorFor(x => x.Forename)
            .WithErrorCode("NotNullValidator");
            assertionRoot.ShouldHaveValidationErrorFor(x => x.Surname).WithErrorCode("NotNullValidator");
            assertionRoot.ShouldNotHaveValidationErrorFor(x => x.Id);
        }
        public void Does_not_throw_when_valid_and_a_ruleset_async()
        {
            var validator = new TestValidator {
                v => v.RuleFor(x => x.Surname).NotNull()
            };

            const string ruleSetName = "blah";

            validator.RuleSet(ruleSetName, () => { validator.RuleFor(x => x.Forename).NotNull(); });

            var person = new Person {
                Forename = "foo",
                Surname  = "foo"
            };

#pragma warning disable 618
            validator.ValidateAndThrowAsync(person, ruleSetName).Wait();
#pragma warning restore 618
        }
Exemplo n.º 20
0
        public void Ruleset_cascades_to_child_validator()
        {
            var addressValidator = new InlineValidator <Address>();

            addressValidator.RuleSet("Test", () => {
                addressValidator.RuleFor(x => x.Line1).NotNull();
            });

            var validator = new TestValidator();

            validator.RuleSet("Test", () => {
                validator.RuleFor(x => x.Address).SetValidator(addressValidator);
            });

            var person = new Person {
                Address = new Address()
            };

            var result = validator.Validate(new ValidationContext <Person>(person, new PropertyChain(), new RulesetValidatorSelector("Test")));

            result.Errors.Count.ShouldEqual(1);
        }
Exemplo n.º 21
0
        public void Ruleset_cascades_to_child_collection_validator()
        {
            var orderValidator = new InlineValidator <Order>();

            orderValidator.RuleSet("Test", () => {
                orderValidator.RuleFor(x => x.ProductName).NotNull();
            });

            var validator = new TestValidator();

            validator.RuleSet("Test", () => {
                validator.RuleFor(x => x.Orders).SetValidator(orderValidator);
            });

            var person = new Person {
                Orders = { new Order(), new Order() }
            };

            var result = validator.Validate(new ValidationContext <Person>(person, new PropertyChain(), new RulesetValidatorSelector("Test")));


            result.Errors.Count.ShouldEqual(2);             //one for each order
        }
Exemplo n.º 22
0
        public void Nested_dependent_rules_inside_ruleset_inside_method()
        {
            var validator = new TestValidator();

            validator.RuleSet("MyRuleSet", () =>
            {
                validator.RuleFor(x => x.Surname).NotNull()
                .DependentRules(() =>
                {
                    validator.RuleFor(x => x.Forename).NotNull()
                    .DependentRules(() =>
                    {
                        BaseValidation(validator);
                    });
                });
            });

            var results = validator.Validate(new Person {
                Surname = "foo", Forename = "foo"
            }, ruleSet: "MyRuleSet");

            results.Errors.Count.ShouldEqual(1);
            results.Errors.Single().PropertyName.ShouldEqual("Address");
        }
Exemplo n.º 23
0
        public void Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fails()
        {
            var validator = new TestValidator();

            validator.RuleSet("MyRuleSet", () =>
            {
                validator.RuleFor(x => x.Surname).NotNull()
                .DependentRules(() =>
                {
                    validator.RuleFor(x => x.Forename).NotNull()
                    .DependentRules(() =>
                    {
                        validator.RuleFor(x => x.Address).NotNull();
                    });
                });
            });

            var results = validator.Validate(new Person {
                Surname = "bar", Forename = null
            }, ruleSet: "MyRuleSet");

            results.Errors.Count.ShouldEqual(1);
            results.Errors[0].PropertyName.ShouldEqual("Forename");
        }