[TestMethod] // regression test public void SetValue_WhenOldChildGetsInvalidAndNewChildIsValid_ParentValidationResultIsValid() { var parent = new ParentVM(); var oldChild = new ChildVM(); var newChild = new ChildVM(); parent.SetValue(x => x.Child, oldChild); oldChild.ChildPropertyErrorMessage = "Old validation error"; parent.SetValue(x => x.Child, newChild); ValidationAssert.IsValid(parent.ValidationResult); }
public void SetValue_ToNewChild_RevalidatesOldAndNewChild() { var vm = new ParentVM(); var oldChild = new ChildVM(); var newChild = new ChildVM(); vm.SetValue(x => x.Child, oldChild); oldChild.ChildPropertyErrorMessage = "Old validation error"; newChild.ChildPropertyErrorMessage = "New validation error"; vm.SetValue(x => x.Child, newChild); ValidationAssert.ErrorMessages(oldChild.ValidationResult, oldChild.ChildPropertyErrorMessage); ValidationAssert.ErrorMessages(newChild.ValidationResult, newChild.ChildPropertyErrorMessage); }
public void SetValue_RemovesValidationErrorsOfAncestorValidatorsFromOldChild() { string parentErrorMessage = "Parent error"; var vm = new ParentVM(); var oldChild = new ChildVM(); var newChild = new ChildVM(); vm.ChildPropertyErrorMessage = parentErrorMessage; vm.SetValue(x => x.Child, oldChild); ValidationAssert.ErrorMessages(oldChild.ValidationResult, parentErrorMessage); vm.SetValue(x => x.Child, newChild); ValidationAssert.IsValid(oldChild); }
public void ForwardChangeNotificationToParents_WhenParentsChangingDuringNotification_DoesntThrowException() { var parent = new ParentVM(); var child = new ChildVM(); parent.SetValue(x => x.Child, child); child.TriggerChange(); }
[TestMethod] // regression test public void SetValue_WhenOldAndNewChildGetInvalid_ParentResultContainsOnlyErrorOfNewChild() { var parent = new ParentVM(); var oldChild = new ChildVM(); var newChild = new ChildVM(); parent.SetValue(x => x.Child, oldChild); oldChild.ChildPropertyErrorMessage = "Old validation error"; newChild.ChildPropertyErrorMessage = "New validation error"; parent.SetValue(x => x.Child, newChild); ValidationAssert.ErrorMessages( parent.ValidationResult, ParentVM.ChildInvalidMessage, newChild.ChildPropertyErrorMessage ); }
[TestMethod] // regression test public void SetValue_WhenOldChildGetsSameErrorAsNewChild_ParentValidationResultContainsErrorOfNewChild() { var parent = new ParentVM(); var oldChild = new ChildVM(); var newChild = new ChildVM(); parent.SetValue(x => x.Child, oldChild); string sameValidationError = "Same validation error"; oldChild.ChildPropertyErrorMessage = sameValidationError; newChild.ChildPropertyErrorMessage = sameValidationError; parent.SetValue(x => x.Child, newChild); ValidationError oldError = oldChild .ValidationResult .Errors .Single(); ValidationError newError = newChild .ValidationResult .Errors .Single(); Assert.AreNotSame(oldError, newError); bool newErrorIsContained = parent .ValidationResult .Errors .Any(x => Object.ReferenceEquals(x, newError)); bool oldErrorIsContained = parent .ValidationResult .Errors .Any(x => Object.ReferenceEquals(x, oldError)); Assert.IsFalse(oldErrorIsContained); Assert.IsTrue(newErrorIsContained); }
public void BaseSetup() { Results = new ValidatorMockConfigurationFluent(); var initialState = Results.GetState(); ChildDescriptor = ChildVM.ClassDescriptor; ItemDescriptor = ItemVM.ClassDescriptor; Item = new ItemVM(Results); Child = new ChildVM(Results); Parent = new ParentVM(Results); Grandparent = new GrandparentVM(Results); Child.GetValue(x => x.Items).Add(Item); Parent.SetValue(x => x.Child, Child); Grandparent.GetValue(x => x.Children).Add(Parent); initialState.RestoreToState(); }