Beispiel #1
0
        public void ItemRemoved_CallsNotifyChange()
        {
            var removedItem = CreateItem("Removed item");

            Collection = CreateCollection();

            HandleItemRemoved(removedItem);

            AssertChangeArgs(ChangeArgs.ItemsRemoved(Collection, new[] { removedItem }));
        }
        public void ItemsRemoved_SetsChangedPathToEmpty()
        {
            var collection = VMCollectionStub.Build();
            var oldItems   = new[] { ViewModelStub.Build() };
            var args       = ChangeArgs.ItemsRemoved(collection, oldItems);

            Assert.AreEqual(ChangeType.RemovedFromCollection, args.ChangeType);
            CollectionAssert.AreEqual(oldItems, args.OldItems.ToArray());
            Assert.IsFalse(args.NewItems.Any());
            DomainAssert.AreEqual(Path.Empty.Append(collection), args.ChangedPath);
        }
Beispiel #3
0
        public void ItemSet_CallsNotifyChangeForOldAndNewItem()
        {
            var oldItem = CreateItem("Old item");
            var newItem = CreateItem("New item");

            Collection = CreateCollection(newItem);

            HandleItemSet(previousItem: oldItem, item: newItem);

            AssertChangeArgs(
                ChangeArgs.ItemsRemoved(Collection, oldItems: new[] { oldItem }),
                ChangeArgs.ItemsAdded(Collection, newItems: new[] { newItem })
                );
        }
Beispiel #4
0
        public void HandleChange_WithItemsAddedOrRemovedFromOwnCollection_UpdatesCachedResults()
        {
            var owner = new TestVM();

            owner.MakePropertiesAndViewModelInvalid();
            var expected = owner.GetCurrentlySetupResults();

            //   F I R S T   A D D
            var firstNewItem = new ViewModelStub {
                ValidationResult = CreateValidationResult("First new item error")
            };

            var collectionChangeArgs = ChangeArgs
                                       .ItemsAdded(VMCollectionStub.Build(), new[] { firstNewItem })
                                       .PrependViewModel(owner);

            owner.CallHandleChangeWith(collectionChangeArgs);

            expected.Descenants = firstNewItem.ValidationResult;
            AssertBehaviorResults(owner, expected);

            //   S E C O N D   A D D
            var secondNewItem = new ViewModelStub {
                ValidationResult = CreateValidationResult("Second new Item error")
            };

            collectionChangeArgs = ChangeArgs
                                   .ItemsAdded(VMCollectionStub.Build(), new[] { secondNewItem })
                                   .PrependViewModel(owner);

            owner.CallHandleChangeWith(collectionChangeArgs);

            expected.Descenants = ValidationResult.Join(
                firstNewItem.ValidationResult,
                secondNewItem.ValidationResult
                );

            AssertBehaviorResults(owner, expected);

            //   R E M O V AL
            collectionChangeArgs = ChangeArgs
                                   .ItemsRemoved(VMCollectionStub.Build(), new[] { firstNewItem })
                                   .PrependViewModel(owner);

            owner.CallHandleChangeWith(collectionChangeArgs);

            expected.Descenants = secondNewItem.ValidationResult;
            AssertBehaviorResults(owner, expected);
        }
Beispiel #5
0
        public void ItemsCleared_CallsNotifyChange()
        {
            var oldItems = new[] {
                CreateItem("Old item 1"),
                CreateItem("Old item 2")
            };

            Collection = CreateCollection();

            HandleCollectionCleared(previousItems: oldItems);

            AssertChangeArgs(
                ChangeArgs.ItemsRemoved(Collection, oldItems: oldItems)
                );
        }