[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);
        }
Exemple #4
0
        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);
        }
Exemple #7
0
        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();
        }