public RequireValidationSampleViewModel() { this.GetPropertyMetadata(() => Text) .AddCascadeChangeNotifications(() => Sample); this.SetInitialPropertyValue(() => MergeErrors, true) .OnChanged(pvc => { ValidationService.MergeValidationErrors = MergeErrors; ResetValidation(); Validate(ValidationBehavior.TriggerValidationErrorsOnFailure); }); ValidationService = new DataAnnotationValidationService <RequireValidationSampleViewModel>(this) { MergeValidationErrors = MergeErrors }.AddRule ( property: o => o.Text, rule: ctx => { return(ctx.Entity.Text == "foo" ? ctx.Succeeded() : ctx.Failed("must be equal to 'foo'")); } ); }
public void AbstractViewModel_When_merge_errors_changes_it_should_not_fail() { var sut = new SampleTestViewModel(); var svc = new DataAnnotationValidationService <SampleTestViewModel>(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.Validate(); svc.MergeValidationErrors = !svc.MergeValidationErrors; }
public void AbstractViewModel_it_should_be_possible_to_change_a_validatable_property_in_the_validated_event() { var sut = new SampleTestViewModel(); var svc = DataAnnotationValidationService.CreateFor(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.Validated += (s, e) => { sut.AnotherOne = "fail"; }; sut.NotNullNotEmpty = "a value"; }
public void AbstractViewModel_it_should_be_possible_to_change_a_validatable_property_at_custom_validation_time() { var sut = new SampleTestViewModelWithValidationCallback(); var svc = DataAnnotationValidationService.CreateFor(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.Test_OnValidate = ctx => { sut.AnotherOne = "fail"; }; sut.NotNullNotEmpty = "a value"; }
protected override IValidationService GetValidationService() { var svc = new DataAnnotationValidationService <RequireValidationSampleViewModel>(this) { MergeValidationErrors = this.MergeErrors }.AddRule ( property: () => this.Text, error: ctx => "must be equal to 'foo'", rule: ctx => ctx.Entity.Text == "foo" ); return(svc); }
public void AbstractViewModel_When_ValidateProperty_with_Trigger_berhavior_ErrorsChanged_event_should_be_raised() { List <String> raised = new List <string>(); var propName = "NotNullNotEmpty"; var sut = new SampleTestViewModel(); var svc = new DataAnnotationValidationService <SampleTestViewModel>(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.ErrorsChanged += (s, e) => raised.Add(e.PropertyName); sut.Test_ValidateProperty(propName, ValidationBehavior.TriggerValidationErrorsOnFailure); Assert.IsTrue(raised.Contains(propName)); }
public void AbstractViewModel_When_ValidateProperty_PropertyChanged_event_should_not_be_raised() { List <String> raised = new List <string>(); var propName = "NotNullNotEmpty"; var sut = new SampleTestViewModel(); var svc = new DataAnnotationValidationService <SampleTestViewModel>(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.PropertyChanged += (s, e) => raised.Add(e.PropertyName); sut.Test_ValidateProperty(propName); Assert.IsFalse(raised.Contains(propName)); }
public void AbstractMementoViewModel_When_Validate_and_Validation_is_suspended_Validated_event_should_not_be_raised() { Boolean raised = false; var sut = new SampleTestViewModel(); var svc = new DataAnnotationValidationService <SampleTestViewModel>(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.Validated += (s, e) => raised = true; using (svc.SuspendValidation()) //so that we can change a property without triggering the validation process { sut.Validate(); } Assert.IsFalse(raised); }
public void AbstractViewModel_When_ValidateProperty_and_Validation_is_suspended_Validated_event_should_not_be_raised() { Boolean raised = false; var propName = "NotNullNotEmpty"; var sut = new SampleTestViewModel(); var svc = new DataAnnotationValidationService <SampleTestViewModel>(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.Validated += (s, e) => raised = true; using (svc.SuspendValidation()) //so that we can change a property without triggering the validation process { sut.Test_ValidateProperty(propName, ValidationBehavior.TriggerValidationErrorsOnFailure); } Assert.IsFalse(raised); }
public void AbstractMementoViewModel_it_should_be_possible_to_change_a_validatable_property_in_a_custom_validation_rule() { var sut = new SampleTestViewModel(); var svc = DataAnnotationValidationService.CreateFor(sut); svc.AddRule( property: () => sut.NotNullNotEmpty, error: ctx => "error", rule: ctx => { sut.AnotherOne = "fail"; return(true); }); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.NotNullNotEmpty = "a value"; }
public void AbstractViewModel_When_ValidateProperty_with_Trigger_berhavior_PropertyChanged_event_should_be_raised_if_the_status_of_errors_changes() { List <String> raised = new List <string>(); var propName = "NotNullNotEmpty"; var sut = new SampleTestViewModel(); var svc = new DataAnnotationValidationService <SampleTestViewModel>(sut); sut.ValidateUsing(svc, forceIsValidationEnabledTo: true); sut.PropertyChanged += (s, e) => raised.Add(e.PropertyName); sut.Test_ValidateProperty(propName, ValidationBehavior.TriggerValidationErrorsOnFailure); using (svc.SuspendValidation()) //so that we can change a property without triggering the validation process { sut.NotNullNotEmpty = "qwertyqwerty"; //this raises 1 PropertyChanged } sut.Test_ValidateProperty(propName, ValidationBehavior.TriggerValidationErrorsOnFailure); Assert.AreEqual(3, raised.Count(p => p == propName)); }