public void CollectionPopulated_SetsChangeTypeAndNewItemsAndChangedPathToCollection()
        {
            var collection = VMCollectionStub
                             .WithItems(ViewModelStub.Build())
                             .Build();

            var newItems = collection.ToArray();
            var oldItems = new[] { ViewModelStub.Build(), ViewModelStub.Build() };
            var args     = ChangeArgs.CollectionPopulated(collection, oldItems);

            Assert.AreEqual(ChangeType.CollectionPopulated, args.ChangeType);
            CollectionAssert.AreEqual(newItems, args.NewItems.ToArray());
            CollectionAssert.AreEqual(oldItems, args.OldItems.ToArray());
            DomainAssert.AreEqual(Path.Empty.Append(collection), args.ChangedPath);
        }
示例#2
0
        public void ReplaceItems_CallsNotifyChangeForOldAndNewItems()
        {
            var oldItems = new[] {
                CreateItem("Old item 1"),
                CreateItem("Old item 2")
            };

            var newItems = new[] {
                CreateItem("New item")
            };

            Collection = CreateCollection(newItems);

            HandleCollectionPopulated(oldItems);

            AssertChangeArgs(
                ChangeArgs.CollectionPopulated(Collection, oldItems)
                );
        }
示例#3
0
        public void Refresh_OfPopulatedCollectionProperty_CallsNotifyChangeForCollectionPopulation()
        {
            var oldItems = new[] { new ChildVM() };

            VM.PopulatedPropertyResult = oldItems;
            VM.Load(x => x.PopulatedProperty);
            VM.OnChangeInvocations.Clear();

            var newItems = new[] { new ChildVM() };

            VM.PopulatedPropertyResult = newItems;
            VM.Refresh(x => x.PopulatedProperty);

            var expectedChangeArgs = new[] {
                ChangeArgs
                .CollectionPopulated(VM.PopulatedProperty, oldItems)
                .PrependViewModel(VM)
            };

            DomainAssert.AreEqual(expectedChangeArgs, VM.OnChangeInvocations);
        }
示例#4
0
        public void Refresh_OfWrapperCollectionProperty_CallsNotifyChangeForCollectionPopulation()
        {
            var oldItem = new ChildVM(new ChildSource());

            VM.WrapperProperty.Add(oldItem);
            var oldItems = VM.WrapperProperty.ToArray();

            VM.OnChangeInvocations.Clear();

            VM.WrapperPropertySource = new List <ChildSource> {
                new ChildSource()
            };
            VM.Refresh(x => x.WrapperProperty);

            var newItems = VM.WrapperProperty.ToArray();

            var expectedChangeArgs = new[] {
                ChangeArgs
                .CollectionPopulated(VM.WrapperProperty, new[] { oldItem })
                .PrependViewModel(VM)
            };

            DomainAssert.AreEqual(expectedChangeArgs, VM.OnChangeInvocations);
        }