コード例 #1
0
        public void TestRemoveItem()
        {
            //arrange
            var vm = new Mock <IExplorerItemViewModel>();

            vm.SetupGet(it => it.ResourceType).Returns("Folder");
            var resId = Guid.NewGuid();

            vm.SetupGet(it => it.ResourceId).Returns(resId);
            var child      = new Mock <IExplorerItemViewModel>();
            var grandChild = new Mock <IExplorerItemViewModel>();

            grandChild.SetupGet(it => it.ResourceId).Returns(resId);
            grandChild.SetupGet(it => it.IsVisible).Returns(true);
            child.SetupGet(it => it.IsVisible).Returns(true);
            child.SetupGet(it => it.Children).Returns(new ObservableCollection <IExplorerItemViewModel>()
            {
                grandChild.Object
            });

            _target.Children = new ObservableCollection <IExplorerItemViewModel>()
            {
                child.Object
            };
            var isChildrenChanged = false;

            _target.PropertyChanged += (s, e) =>
            {
                isChildrenChanged = isChildrenChanged || e.PropertyName == "Children";
            };

            //act
            _target.RemoveItem(vm.Object);

            //assert
            child.Verify(it => it.RemoveChild(grandChild.Object));
            Assert.IsTrue(isChildrenChanged);
        }