private static void SecondCollectionValidator(
                CollectionValidationArgs <EmployeeListVM, EmployeeVM, string> args
                )
            {
                var owner        = args.Owner;
                var invalidItems = owner.Test.InvalidItemsOfSecondCollectionValidator.ToList();

                foreach (var item in invalidItems)
                {
                    args.AddError(item, "Second collection validator error");
                }
            }
 public void PerformValidation <TOwnerVM, TItemVM>(
     CollectionValidationArgs <TOwnerVM, TItemVM> args,
     object validatorKey = null
     )
     where TOwnerVM : IViewModel
     where TItemVM : IViewModel
 {
     PerformCollectionValidation(
         args.AddError,
         ValidatorType.CollectionViewModel,
         args.Owner,
         args.Items,
         validatorKey
         );
 }
        private static CollectionValidationArgs <IViewModel, EmployeeVM> CreateArgs(
            EmployeeListVM owner,
            IValidator validator = null
            )
        {
            validator = validator ?? Mock <IValidator>();

            var path = Path.Empty
                       .Append(owner)
                       .Append(owner.GetValue(x => x.Employees));

            return(CollectionValidationArgs <IViewModel, EmployeeVM> .Create(
                       validator,
                       new ValidationRequest(ValidationStep.ViewModel, path)
                       ));
        }
        private static CollectionValidationArgs <IViewModel, EmployeeVM, string> CreateArgsWithProperty(
            EmployeeListVM owner,
            ValidationStep step  = ValidationStep.Value,
            IValidator validator = null
            )
        {
            validator = validator ?? Mock <IValidator>();

            var path = Path.Empty
                       .Append(owner)
                       .Append(owner.GetValue(x => x.Employees))
                       .Append(EmployeeVM.ClassDescriptor.Name);

            return(CollectionValidationArgs <IViewModel, EmployeeVM, string> .Create(
                       validator,
                       new ValidationRequest(step, path)
                       ));
        }