public void Sets_localised_message_via_expression()
 {
     var validator = new TestValidator();
     validator.RuleFor(x => x.Surname).NotEmpty().WithLocalizedMessage(() => MyResources.notempty_error);
     var result = validator.Validate(new Person());
     result.Errors.Single().ErrorMessage.ShouldEqual("foo");
 }
        public void Can_access_expression_in_message()
        {
            var v = new TestValidator();
            v.RuleFor(x => x.Forename).Matches(@"^\w\d$").WithMessage("test {RegularExpression}");

            var result = v.Validate(new Person {Forename = ""});
            result.Errors.Single().ErrorMessage.ShouldEqual(@"test ^\w\d$");
        }
Exemple #3
0
            public void Defaults_user_severity_to_error()
            {
                var validator = new TestValidator();

                validator.RuleFor(x => x.Lastname).NotNull();
                var result = validator.Validate(new ErrorCodeTests.Person());

                Assert.AreEqual(Severity.Error, result.Errors.Single().Severity);
            }
Exemple #4
0
            public void Stores_user_severity_against_validation_failure()
            {
                var validator = new TestValidator();

                validator.RuleFor(x => x.Lastname).NotNull().WithSeverity(Severity.Info);
                var result = validator.Validate(new ErrorCodeTests.Person());

                Assert.AreEqual(Severity.Info, result.Errors.Single().Severity);
            }
		public void Invokes_dependent_rule_if_parent_rule_passes() {
			var validator = new TestValidator();
			validator.RuleFor(x => x.Surname).NotNull()
				.DependentRules(d => {
					d.RuleFor(x => x.Forename).NotNull();
				});

			var results = validator.Validate(new Person {Surname = "foo"});
			results.Errors.Count.ShouldEqual(1);
			results.Errors.Single().PropertyName.ShouldEqual("Forename");
		}
        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 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 Dependent_rules_inside_when()
        {
            var validator = new TestValidator();
            validator.When(o => o != null, () =>
            {
                validator.RuleFor(o => o.Age).LessThan(1)
                .DependentRules(d =>
                {
                    d.RuleFor(o => o).NotNull();
                });
            }); ;

            var result = validator.Validate((Person)null);
            result.IsValid.ShouldBeTrue();
        }
        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 Setting_global_resource_provider_propogates_to_metadata()
        {
            ValidatorOptions.ResourceProviderType = typeof(TestMessages);
            var validator = new TestValidator();
            validator.RuleFor(x => x.Forename).NotNull();

            var descriptor = validator.CreateDescriptor();
            var resourceType = descriptor.GetMembersWithValidators().First().First().ErrorMessageSource.ResourceType;

            Assert.Equal(typeof (TestMessages), resourceType);
        }
        public void Not_Setting_global_resource_provider_uses_default_messages_in_metadata()
        {
            var validator = new TestValidator();
            validator.RuleFor(x => x.Forename).NotNull();

            var descriptor = validator.CreateDescriptor();
            var resourceType = descriptor.GetMembersWithValidators().First().First().ErrorMessageSource.ResourceType;

            Assert.Equal(typeof(Messages), resourceType);
        }
		public void Can_access_expression_in_message_lambda_regex()
		{
			var v = new TestValidator();
			v.RuleFor(x => x.Forename).Matches(x => x.AnotherRegex).WithMessage("test {RegularExpression}");

			var result = v.Validate(new Person { Forename = "", AnotherRegex = new System.Text.RegularExpressions.Regex(@"^\w\d$") });
			result.Errors.Single().ErrorMessage.ShouldEqual(@"test ^\w\d$");
		}
        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"
            };
            validator.ValidateAndThrowAsync(person, ruleSetName).Wait();
        }
		public async Task TestAsyncWithDependentRules_AsyncEntry()
		{
			var validator = new TestValidator();
			validator.RuleFor(o => o)
				.MustAsync(async (p, ct) => await Task.FromResult(p != null))
				.DependentRules(d => {
					d.RuleFor(o => o.Address).NotNull();
					d.RuleFor(o => o.Age).MustAsync(async (p, token) => await Task.FromResult(p > 10));
				});

			var result = await validator.ValidateAsync((Person)null);
			Assert.Equal(1, result.Errors.Count);
			Assert.True(result.Errors.Any(x => x.PropertyName == ""));

			result = await validator.ValidateAsync(new Person());
			Assert.Equal(2, result.Errors.Count);
			Assert.True(result.Errors.Count(x => x.PropertyName == "Address") == 1, "Address");
			Assert.True(result.Errors.Count(x => x.PropertyName == "Age") == 1, "Age");
		}
 public void Setup()
 {
     validator = new TestValidator();
     validator.RuleFor(x => x.Forename).NotNull();
 }