public void ClearErrorsShouldRedirectCallToValidators() { ValidatableViewModel viewModel = GetValidatableViewModel(); var validator1 = viewModel.AddValidator <SpyValidator>(new object()); var validator2 = viewModel.AddValidator <SpyValidator>(new object()); viewModel.ClearErrors(); validator1.ClearAllErrorsCount.ShouldEqual(1); validator2.ClearAllErrorsCount.ShouldEqual(1); }
public void ValidateInstanceShouldValidateOnlyInstance() { ValidatableViewModel viewModel = GetValidatableViewModel(); ValidatorProvider.Register <SpyValidator>(); var instance = new object(); var instance2 = new object(); viewModel.AddInstance(instance); viewModel.AddInstance(instance2); viewModel.AddValidator <SpyValidator>(instance); viewModel.GetValidators().Count.ShouldEqual(4); viewModel.GetValidators().OfType <SpyValidator>().ForEach(validator => validator.ValidateAllCount = 0); viewModel.ValidateInstanceAsync(instance); foreach (SpyValidator result in viewModel.GetValidators().OfType <SpyValidator>()) { if (result.Context.Instance == instance) { result.ValidateAllCount.ShouldEqual(1); } else { result.ValidateAllCount.ShouldEqual(0); } } }
public void ValidateMethodShouldCallNotifyEvent() { ThreadManager.ImmediateInvokeAsync = true; ThreadManager.ImmediateInvokeOnUiThreadAsync = true; ThreadManager.ImmediateInvokeOnUiThread = true; int countInvoke = 0; ValidatableViewModel viewModel = GetValidatableViewModel(); INotifyDataErrorInfo notifyDataError = viewModel; notifyDataError.ErrorsChanged += (sender, args) => { args.PropertyName.ShouldEqual(PropToValidate1); countInvoke++; }; var validator = viewModel.AddValidator <SpyValidator>(new object()); notifyDataError.HasErrors.ShouldBeFalse(); validator.SetErrors(PropToValidate1, PropToValidate1); countInvoke.ShouldEqual(1); validator.SetErrors(PropToValidate1, PropToValidate2); countInvoke.ShouldEqual(2); notifyDataError.HasErrors.ShouldBeTrue(); //NOTE: Event is not invoked, if errors is not changed. /*viewModel.ValidateAsync(PropToValidate1); * countInvoke.ShouldEqual(2);*/ }
public void IsValidShouldRedirectCallToValidators() { ValidatableViewModel viewModel = GetValidatableViewModel(); var validator1 = viewModel.AddValidator <SpyValidator>(new object()); var validator2 = viewModel.AddValidator <SpyValidator>(new object()); viewModel.IsValid.ShouldBeTrue(); validator1.SetErrors(PropToValidate1, PropToValidate1); validator2.SetErrors(PropToValidate2, PropToValidate2); viewModel.IsValid.ShouldBeFalse(); validator1.SetErrors(PropToValidate1); viewModel.IsValid.ShouldBeFalse(); validator2.SetErrors(PropToValidate2); viewModel.IsValid.ShouldBeTrue(); }
public void GetAllErrorsShouldRedirectCallToValidators() { ValidatableViewModel viewModel = GetValidatableViewModel(); var validator1 = viewModel.AddValidator <SpyValidator>(new object()); var validator2 = viewModel.AddValidator <SpyValidator>(new object()); viewModel.GetErrors().ShouldBeEmpty(); viewModel.GetErrors().ShouldBeEmpty(); validator1.SetErrors(PropToValidate1, PropToValidate1); validator1.SetErrors(PropToValidate2, PropToValidate2); validator2.SetErrors(PropToValidate1, PropToValidate2); validator2.SetErrors(PropToValidate2, PropToValidate1); IDictionary <string, IList <object> > errors = viewModel.GetErrors(); errors.Count.ShouldEqual(2); errors[PropToValidate1].Count.ShouldEqual(2); errors[PropToValidate1].Contains(PropToValidate1).ShouldBeTrue(); errors[PropToValidate1].Contains(PropToValidate2).ShouldBeTrue(); errors[PropToValidate2].Count.ShouldEqual(2); errors[PropToValidate2].Contains(PropToValidate1).ShouldBeTrue(); errors[PropToValidate2].Contains(PropToValidate2).ShouldBeTrue(); validator1.SetErrors(PropToValidate1); validator1.SetErrors(PropToValidate2); errors = viewModel.GetErrors(); errors.Count.ShouldEqual(2); errors[PropToValidate1].Count.ShouldEqual(1); errors[PropToValidate1].Contains(PropToValidate2).ShouldBeTrue(); errors[PropToValidate2].Count.ShouldEqual(1); errors[PropToValidate2].Contains(PropToValidate1).ShouldBeTrue(); validator2.SetErrors(PropToValidate1); validator2.SetErrors(PropToValidate2); viewModel.GetErrors().ShouldBeEmpty(); viewModel.GetErrors().ShouldBeEmpty(); }
public void AddedValidatorGenericShouldBeInValidators() { var o = new object(); ValidatableViewModel viewModel = GetValidatableViewModel(); var validator = viewModel.AddValidator <SpyValidator>(o); validator.Context.ShouldNotBeNull(); validator.Context.Instance.ShouldEqual(o); viewModel.GetValidators().Single(validator1 => validator1 != viewModel.Validator).ShouldEqual(validator); }
public void RemoveValidatorGenericShouldBeRemoveFromValidators() { var o = new object(); ValidatableViewModel viewModel = GetValidatableViewModel(); var validator = viewModel.AddValidator <SpyValidator>(o); viewModel.GetValidators().Single(validator1 => validator1 != viewModel.Validator).ShouldEqual(validator); viewModel.RemoveValidator(validator).ShouldBeTrue(); viewModel.GetValidators().Where(validator1 => validator1 != viewModel.Validator).ShouldBeEmpty(); }
public void GetErrorsShouldRedirectCallToValidators() { ValidatableViewModel viewModel = GetValidatableViewModel(); var validator1 = viewModel.AddValidator <SpyValidator>(new object()); var validator2 = viewModel.AddValidator <SpyValidator>(new object()); viewModel.GetErrors(PropToValidate1).ShouldBeEmpty(); viewModel.GetErrors(PropToValidate2).ShouldBeEmpty(); validator1.SetErrors(PropToValidate1, PropToValidate1); validator1.SetErrors(PropToValidate2, PropToValidate2); validator2.SetErrors(PropToValidate1, PropToValidate2); validator2.SetErrors(PropToValidate2, PropToValidate1); object[] errors = viewModel.GetErrors(PropToValidate1).OfType <object>().ToArray(); errors.Length.ShouldEqual(2); errors.Contains(PropToValidate1).ShouldBeTrue(); errors.Contains(PropToValidate2).ShouldBeTrue(); errors = viewModel.GetErrors(PropToValidate2).OfType <object>().ToArray(); errors.Length.ShouldEqual(2); errors.Contains(PropToValidate1).ShouldBeTrue(); errors.Contains(PropToValidate2).ShouldBeTrue(); validator1.SetErrors(PropToValidate1); validator1.SetErrors(PropToValidate2); errors = viewModel.GetErrors(PropToValidate1).OfType <object>().ToArray(); errors.Length.ShouldEqual(1); errors.Contains(PropToValidate2).ShouldBeTrue(); errors = viewModel.GetErrors(PropToValidate2).OfType <object>().ToArray(); errors.Length.ShouldEqual(1); errors.Contains(PropToValidate1).ShouldBeTrue(); validator2.SetErrors(PropToValidate1); validator2.SetErrors(PropToValidate2); viewModel.GetErrors(PropToValidate1).ShouldBeEmpty(); viewModel.GetErrors(PropToValidate2).ShouldBeEmpty(); }
public void AddedValidatorShouldBeInValidators() { var o = new object(); ValidatableViewModel viewModel = GetValidatableViewModel(); var validator = new SpyValidator(); validator.Initialize(viewModel.CreateContext(o)); viewModel.AddValidator(validator); validator.Context.ShouldNotBeNull(); validator.Context.Instance.ShouldEqual(o); viewModel.GetValidators().Single(validator1 => validator1 != viewModel.Validator).ShouldEqual(validator); }
public void RemoveInstanceShouldRemoveAllValidatorsAssociatedWithInstance() { ValidatableViewModel viewModel = GetValidatableViewModel(); ValidatorProvider.Register <SpyValidator>(); var instance = new object(); var instance2 = new object(); viewModel.AddInstance(instance); viewModel.AddInstance(instance2); viewModel.AddValidator <ManualValidator>(instance); viewModel.GetValidators().Count.ShouldEqual(4); viewModel.RemoveInstance(instance); viewModel.GetValidators().Single(validator => validator != viewModel.Validator).Context.Instance.ShouldEqual(instance2); }
public void NotifyDataErrorInfoShouldGetErrorsFromValidators() { ValidatableViewModel viewModel = GetValidatableViewModel(); INotifyDataErrorInfo notifyDataError = viewModel; var validator = viewModel.AddValidator <SpyValidator>(new object()); notifyDataError.HasErrors.ShouldBeFalse(); validator.SetErrors(PropToValidate1, PropToValidate1, PropToValidate2); notifyDataError.HasErrors.ShouldBeTrue(); string[] errors = notifyDataError.GetErrors(PropToValidate1).OfType <string>().ToArray(); errors.Length.ShouldEqual(2); errors.Contains(PropToValidate1).ShouldBeTrue(); errors.Contains(PropToValidate2).ShouldBeTrue(); validator.SetErrors(PropToValidate1); notifyDataError.GetErrors(PropToValidate1).ShouldBeEmpty(); notifyDataError.HasErrors.ShouldBeFalse(); }
public void DataErrorInfoShouldGetErrorsFromValidators() { ValidatableViewModel viewModel = GetValidatableViewModel(); IDataErrorInfo dataErrorInfo = viewModel; var validator = viewModel.AddValidator <SpyValidator>(viewModel); IDataErrorInfo validatorErrorInfo = validator; validator.SetErrors(PropToValidate1, PropToValidate1); viewModel.OnPropertyChanged(PropToValidate1, ExecutionType.None); string error = dataErrorInfo[PropToValidate1]; validator.ValidateCount.ShouldEqual(1); validator.ValidateProperties.Contains(PropToValidate1).ShouldBeTrue(); error.ShouldEqual(PropToValidate1); validator.SetErrors(PropToValidate1); viewModel.OnPropertyChanged(PropToValidate1, ExecutionType.None); error = validatorErrorInfo[PropToValidate1]; validator.ValidateCount.ShouldEqual(2); error.ShouldBeNull(); }
public void AddNotInitializedValidatorShouldThrowException() { ValidatableViewModel viewModel = GetValidatableViewModel(); ShouldThrow <InvalidOperationException>(() => viewModel.AddValidator(new SpyValidator())); }