public async Task When_ObjectToValidateDoesNotMatchPredicateRequirements_Then_ValidationErrorIsReturned() { // Arrange: var errorMessage = "cannot be null"; var errorCode = "NOT_NULL"; Func <string, Task <bool> > isNotNullPredicate = async s => { await Task.Delay(1); return(s != null); }; string toValidate = null; var toValidateAsObj = (object)toValidate; // Act: var validationRule = new AsyncValidationRule <string>(isNotNullPredicate, errorMessage, errorCode); var result = await validationRule.Validate(toValidate); var resultForObj = await validationRule.Validate(toValidateAsObj); // Assert: result.Count.Should().Be(1); result.First().ErrorMessage.Should().Be("cannot be null"); result.First().ErrorCode.Should().Be("NOT_NULL"); result.First().ProvidedValue.Should().Be(toValidate); result.First().PropertyPath.IsEmpty.Should().BeTrue(); resultForObj.Count.Should().Be(1); resultForObj.First().ErrorMessage.Should().Be("cannot be null"); resultForObj.First().ErrorCode.Should().Be("NOT_NULL"); resultForObj.First().PropertyPath.IsEmpty.Should().BeTrue(); resultForObj.First().ProvidedValue.Should().Be(toValidate); }
public async Task When_ObjectToValidateMatchPredicateRequirements_Then_NoValidationErrorsAreReturned() { // Arrange: var errorMessage = "cannot be null"; var errorCode = "NOT_NULL"; Func <string, Task <bool> > isNotNullPredicate = async s => { await Task.Delay(1); return(s != null); }; var toValidate = "some value"; var toValidateAsObj = (object)toValidate; // Act: var validationRule = new AsyncValidationRule <string>(isNotNullPredicate, errorMessage, errorCode); var result = await validationRule.Validate(toValidate); var resultForObj = await validationRule.Validate(toValidateAsObj); // Assert: result.Count.Should().Be(0); resultForObj.Count.Should().Be(0); }
public AsyncPropertyValidator <TProp> AddRule(Func <TProp, Task <bool> > predicate, string errorMessage, string errorCode = null) { var validationRule = new AsyncValidationRule <TProp>(predicate, errorMessage, errorCode); ValidationTasks.Add(new ValidationTask(validationRule, false)); return(this); }
public AsyncPropertyValidationBuilder <TObject, TProperty> AddAsyncRule(Func <TProperty, Task <bool> > validationPredicate, string errorMessage, string errorCode = null) { var rule = new AsyncValidationRule <TProperty>(validationPredicate, errorMessage, errorCode); PropertyValidator.Rules.Add(rule); return(this); }