public void Transform_collection_index_builder_and_condition() { var validator = new InlineValidator <Person>(); validator.TransformForEach(x => x.Orders, to: order => order.Amount) .Where(amt => amt < 20) .OverrideIndexer((person, collection, amt, numericIndex) => $"[{numericIndex}_{amt}]") .LessThan(10); var result = validator.Validate(new Person { Orders = new List <Order> { new Order { Amount = 21 }, // Fails condition, skips validation new Order { Amount = 12 }, // Passes condition, fails validation new Order { Amount = 9 }, // Passes condition, passes validation } }); result.Errors.Count.ShouldEqual(1); result.Errors[0].PropertyName.ShouldEqual("Orders[1_12]"); }
public void Transforms_collection_element() { var validator = new InlineValidator <Person>(); validator.TransformForEach(x => x.Orders, order => order.Amount) .GreaterThan(0); var result = validator.Validate(new Person() { Orders = new List <Order> { new Order() } }); result.Errors.Count.ShouldEqual(1); }
public async Task Transforms_collection_element_async() { var validator = new InlineValidator <Person>(); validator.TransformForEach(x => x.Orders, order => order.Amount) .MustAsync((amt, token) => Task.FromResult(amt > 0)); var result = await validator.ValidateAsync(new Person() { Orders = new List <Order> { new Order() } }); result.Errors.Count.ShouldEqual(1); }
public async Task Transforms_collection_element_with_propagated_original_object_async() { var validator = new InlineValidator <Person>(); validator.TransformForEach(x => x.Children, (parent, children) => new { ParentName = parent.Surname, Children = children }) .Must(context => context.ParentName == context.Children.Surname); var child = new Person { Surname = "Pupa" }; var result = await validator.ValidateAsync(new Person() { Surname = "Lupa", Children = new List <Person> { child } }); result.IsValid.ShouldBeFalse(); result.Errors.Count.ShouldEqual(1); }