public void Validate_NoExplicitPropertyNameSet() { var result = _propertyRule.Validate(new ValidationContext(_customer)).ToArray().First(); Assert.That(result.PropertyName, Is.EqualTo("LastName")); Assert.That(result.ErrorMessage, Is.EqualTo("'Last Name' must not be empty.")); }
public void Nullable_object_with_async_condition_should_not_throw() { var builder = _validator.RuleFor(x => x.NullableInt.Value); PropertyRule rule = null; builder.Configure(r => rule = r); builder.GreaterThanOrEqualTo(3).WhenAsync((x, c) => Task.FromResult(x.NullableInt != null)); rule.Validate(new ValidationContext <Person>(new Person(), new PropertyChain(), new DefaultValidatorSelector())); }
public void Result_should_use_custom_property_name_when_no_property_name_can_be_determined() { var builder = _validator.RuleFor(x => x.CalculateSalary()); builder.GreaterThan(100).WithName("Foo"); PropertyRule rule = null; builder.Configure(r => rule = r); var results = rule.Validate(new ValidationContext <Person>(new Person(), new PropertyChain(), new DefaultValidatorSelector())); results.Single().PropertyName.ShouldEqual("Foo"); }
public async Task ValidateShouldFailWhenNonOptionalPropertyIsMissing() { // Arrange var project = new ProjectBuilder().Build(); var data = new PropertyRuleData { Name = "Required-Property", Required = true }; var sut = new PropertyRule(data); // Act var actual = await sut.Validate(project); // Assert Assert.True(actual.IsError); }
public async Task ValidateShouldFailWhenForbiddenPropertyIsFound() { // Arrange var project = new ProjectBuilder() .WithPropertyGroup().WithProperty("Forbidden-Property", "true").Build(); var data = new PropertyRuleData { Forbidden = true, Name = "Forbidden-Property" }; var sut = new PropertyRule(data); // Act var actual = await sut.Validate(project); // Assert Assert.True(actual.IsError); }
public async Task ValidateShouldFailWhenPropertyHasWrongValue() { // Arrange var project = new ProjectBuilder() .WithPropertyGroup() .WithProperty("Property", "invalid") .Build(); var data = new PropertyRuleData { Name = "Property", Value = "valid" }; var sut = new PropertyRule(data); // Act var actual = await sut.Validate(project); // Assert Assert.True(actual.IsError); }
public async Task ValidateShouldSucceedWhenPropertyExists() { // Arrange var project = new ProjectBuilder() .WithPropertyGroup() .WithProperty("TreatWarningsAsErrors", "true") .Build(); var data = new PropertyRuleData { Name = "TreatWarningsAsErrors", Required = true }; var sut = new PropertyRule(data); // Act var actual = await sut.Validate(project); // Assert Assert.False(actual.IsError); }
public async Task ValidateShouldFailWhenPropertyIsFoundTooFewTimes() { // Arrange var project = new ProjectBuilder() .WithPropertyGroup() .WithProperty("Property", "value") .WithPropertyGroup() .WithProperty("Property", "value") .Build(); var data = new PropertyRuleData { Name = "Property", MinimumOccurrences = 3 }; var sut = new PropertyRule(data); // Act var actual = await sut.Validate(project); // Assert Assert.True(actual.IsError); }