public void VerifySetupValidationResults() { var expectedErrors = ValidatorSetups .Where(x => !x.Result.IsValid) .SelectMany(x => x.Result.Errors) .ToArray(); ValidationAssert.Errors(expectedErrors); // TODO: Check if this logic is correct for collection expectations. var validViewModelPropertyCombinations = ActualInvocations .Where(x => x.TargetVM != null) .GroupBy(x => new { VM = x.TargetVM, Prop = x.TargetProperty }) .Where(g => !ValidatorSetups .Select(x => new { VM = x.Invocation.TargetVM, Prop = x.Invocation.TargetProperty }) .Contains(g.Key) ); foreach (var item in validViewModelPropertyCombinations) { var target = item.Key.VM; var targetProperty = item.Key.Prop; if (targetProperty != null) { ValidationAssert.IsValid(target, targetProperty); } else { ValidationAssert.ValidViewModelValidationResultIsValid(target); } } var validSetup = ValidatorSetups.Where(x => x.Result.IsValid); foreach (var setup in validSetup) { var target = setup.Invocation.TargetVM; var targetProperty = setup.Invocation.TargetProperty; if (targetProperty != null) { ValidationAssert.IsValid(target, targetProperty); } else { ValidationAssert.ValidViewModelValidationResultIsValid(target); } } }
protected virtual void PerformValidation( Action <string> addValidationErrorAction, ValidatorType type, IViewModel owner, IViewModel targetVM, object validatorKey, IVMPropertyDescriptor targetProperty = null ) { var invocation = new ValidatorInvocation(type, owner, targetVM, null, targetProperty, validatorKey); var errors = ValidatorSetups .Where(x => x.Invocation.Equals(invocation)) .SelectMany(x => x.Result.Errors); errors.ForEach(x => addValidationErrorAction(x.Message)); ActualInvocations.Add( new ValidatorInvocation(type, owner, targetVM, null, targetProperty, validatorKey) ); }
protected virtual void PerformCollectionValidation <TItemVM>( Action <TItemVM, string, object> addValidationErrorAction, ValidatorType type, IViewModel owner, IVMCollectionBase <TItemVM> targetCollection, object validatorKey, IVMPropertyDescriptor targetProperty = null ) where TItemVM : IViewModel { foreach (TItemVM item in targetCollection) { var invocation = new ValidatorInvocation(type, owner, item, null, targetProperty, validatorKey); var errors = ValidatorSetups .Where(x => x.Invocation.Equals(invocation)) .SelectMany(x => x.Result.Errors); errors.ForEach(x => addValidationErrorAction(item, x.Message, x.Details)); } ActualInvocations.Add( new ValidatorInvocation(type, owner, null, targetCollection, targetProperty, validatorKey) ); }