public async Task ValidClassIsValidWithCustomRulesForAsync() { var simple = new SimpleClass { Number = 2, Text = "A value" }; var complex = new ComplexClass { Id = Guid.NewGuid(), Child = simple }; var validator = new ComplexClassValidator(new SimpleClassValidator()) as Core.Validators.IValidator <ComplexClass>; var result = await validator?.ValidateAsync(complex, ComplexClassValidator.RuleSetName); validator.Should().NotBeNull("because the base validator should impleent the base IValidator<T> contract"); result.Should().NotBeNull("because a set should be returned even for valid objects"); result.Should().HaveCount(0, "because a valid object should have no errors"); }
public async Task CustomRuleIsNotRunWhenNotRequestedForAsync() { var simple = new SimpleClass { Number = 999, Text = null }; var complex = new ComplexClass { Id = Guid.Empty, Child = simple }; var validator = new ComplexClassValidator(new SimpleClassValidator()) as Core.Validators.IValidator <ComplexClass>; var result = await validator?.ValidateAsync(complex); validator.Should().NotBeNull("because the base validator should impleent the base IValidator<T> contract"); result.Should().NotBeNull("because a set should be returned even for valid objects"); result.Should().HaveCount(1, "because child should not have been validated"); result.Count(error => error.Code == ErrorCode.InvalidValue.ToString()).Should().Be(1, "because the id property was the only property with a bad value"); }
public async Task InValidClassIsVDetectedWithCustomRulesForAsync() { var simple = new SimpleClass { Number = 999, Text = null }; var complex = new ComplexClass { Id = Guid.Empty, Child = simple }; var validator = new ComplexClassValidator(new SimpleClassValidator()) as Core.Validators.IValidator; var result = await validator?.ValidateAsync(complex, ComplexClassValidator.RuleSetName); validator.Should().NotBeNull("because the base validator should impleent the base IValidator<T> contract"); result.Should().NotBeNull("because a set should be returned even for valid objects"); result.Should().HaveCount(3, "because the Id and both child properties were invalid"); result.Count(error => error.Code == ErrorCode.InvalidValue.ToString()).Should().Be(1, "because the id property was the only property with a bad value"); result.Count(error => error.Code == ErrorCode.NumberIsOutOfRange.ToString()).Should().Be(1, "because the number property was the only property with a range error"); result.Count(error => error.Code == ErrorCode.ValueIsRequired.ToString()).Should().Be(1, "because the text property was the only property missing a value"); }