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.TestValidate(new Person(), opt => opt.IncludeRuleSets("Names")) .ShouldHaveValidationErrorFor(x => x.Forename); }
public void ShouldHaveValidationError_Should_support_custom_propertynameresolver() { try { ValidatorOptions.Global.PropertyNameResolver = (type, prop, expr) => "foo"; var validator = new TestValidator() { v => v.RuleFor(x => x.Surname).NotNull() }; validator.TestValidate(new Person()).ShouldHaveValidationErrorFor(x => x.Surname); } finally { ValidatorOptions.Global.PropertyNameResolver = null; } }
public void ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_should_throw_an_exception() { var validator = new TestValidator(); validator.RuleFor(x => x.NullableInt).GreaterThanOrEqualTo(3); var result = validator.TestValidate(new Person() { NullableInt = 1 }); var ex = Assert.Throws <ValidationTestException>(() => result.ShouldHaveValidationErrorFor(x => x.NullableInt.Value)); Assert.Equal("Expected a validation error for property NullableInt.Value\n----\nProperties with Validation Errors:\n[0]: NullableInt\n", ex.Message); }
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 void Tests_nested_property_reverse() { var validator = new TestValidator(); validator.RuleFor(x => x.Address.Line1).NotEqual("foo"); var result = validator.TestValidate(new Person() { Address = new Address { Line1 = "foo" } }); var ex = Assert.Throws <ValidationTestException>(() => { result.ShouldNotHaveValidationErrorFor(x => x.Address.Line1); }); ex.Message.Contains($"Expected no validation errors for property Address.Line1").ShouldBeTrue(); }
public void Tests_nested_property() { var validator = new TestValidator(); validator.RuleFor(x => x.Address.Line1).NotEqual("foo"); var result = validator.TestValidate(new Person() { Address = new Address { Line1 = "bar" } }); var ex = Assert.Throws <ValidationTestException>(() => { result.ShouldHaveValidationErrorFor(x => x.Address.Line1); }); ex.Message.ShouldEqual("Expected a validation error for property Address.Line1"); }
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); }