public void ViewModel_with_nested_properties_should_notify(ITotalLineItemsViewModel viewModel)
        {
            // ARRANGE
            viewModel.PropertyChanged += (_, e) => ActualNotifications.Add(e.PropertyName);

            ExpectedNotifications.AddRange(new[] {
                //viewModel.LineItem1 = viewModel.CreateLineItem1();
                "LineItem1",
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItem1.Quantity = 1;
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItem1.Price = 99.99m;
                "TotalCost",
                //viewModel.LineItem2 = viewModel.CreateLineItem2();
                "LineItem2",
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItem2.Quantity = 2;
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItem2.Price = 50.00m;
                "TotalCost",
                //viewModel.LineItem3 = viewModel.CreateLineItem3();
                "LineItem3",
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItem3 = null;
                "LineItem3",
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
            });

            // ACT
            viewModel.CreateLineItem1();
            viewModel.LineItem1.Quantity = 1;
            viewModel.LineItem1.Price    = 99.99m;
            viewModel.CreateLineItem2();
            viewModel.LineItem2.Quantity = 2;
            viewModel.LineItem2.Price    = 50.00m;
            viewModel.CreateLineItem3();
            viewModel.LineItem3 = null;

            // ASSERT
            AssertNotificationsEqual();
        }
Example #2
0
        public void SimpleViewModel_should_notify(ILineItemViewModel viewModel)
        {
            viewModel.PropertyChanged += (_, e) => ActualNotifications.Add(e.PropertyName);

            ExpectedNotifications.AddRange(new[]
            {
                //viewModel.Quantity = 1;
                "Quantity",
                "Cost",
                //viewModel.Price = 99.99m;
                "Price",
                "Cost"
            });

            viewModel.Quantity = 1;
            viewModel.Price    = 99.99m;

            AssertNotificationsEqual();
        }
        public void SimpleCollectionViewModel_with_simple_collection_should_notify(ISimpleCollectionViewModel viewModel)
        {
            // ARRANGE
            viewModel.PropertyChanged += (_, e) => ActualNotifications.Add(e.PropertyName);

            ExpectedNotifications.AddRange(new[]
            {
                //ViewModel.StringCollection = new ObservableCollection<String>();
                "StringCollection",
                "StringCollectionCount",
                //ViewModel.StringCollection.Add("Hello");
                "StringCollectionCount",
                //ViewModel.StringCollection.Add("World");
                "StringCollectionCount",
            });

            // ACT
            viewModel.StringCollection = new ObservableCollection <String>();
            viewModel.StringCollection.Add("Hello");
            viewModel.StringCollection.Add("World");

            // ASSERT
            AssertNotificationsEqual();
        }
        public void TwoDeepCollectionViewModel_should_notify(IDeepCollectionViewModel viewModel)
        {
            // ARRANGE
            viewModel.PropertyChanged += (_, e) => ActualNotifications.Add(e.PropertyName);

            ExpectedNotifications.AddRange(new[]
            {
                //viewModel.LineItems = new ObservableCollection<ILineItemViewModel>();
                "LineItems",
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.AddNewLineItem();
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItems[0].Quantity = 1;
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItems[0].Price = 99.99m;
                "TotalCost",
                //viewModel.AddNewLineItem();
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItems[1].Quantity = 2;
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItems[1].Price = 50.00m;
                "TotalCost",
                //viewModel.AddNewLineItem();
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItems.RemoveAt(2);
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
                //viewModel.LineItems = newLineItems;
                "LineItems",
                "TotalLineItems",
                "TotalItemQuantity",
                "TotalCost",
            });

            // ACT
            viewModel.LineItems = new ObservableCollection <ILineItemViewModel>();
            viewModel.AddNewLineItem();
            viewModel.LineItems[0].Quantity = 1;
            viewModel.LineItems[0].Price    = 99.99m;
            viewModel.AddNewLineItem();
            viewModel.LineItems[1].Quantity = 2;
            viewModel.LineItems[1].Price    = 50.00m;
            viewModel.AddNewLineItem();
            viewModel.LineItems.RemoveAt(2);
            var newLineItems = new ObservableCollection <ILineItemViewModel>();
            var newLineItem1 = (ILineItemViewModel)Activator.CreateInstance(viewModel.LineItems[0].GetType());

            newLineItem1.Quantity = 1;
            newLineItem1.Price    = 99.99m;
            newLineItems.Add(newLineItem1);
            viewModel.LineItems = newLineItems;

            // ASSERT
            AssertNotificationsEqual();
        }
        public void ThreeDeepCollectionViewModel_should_notify(IThreeDeepCollectionViewModel viewModel)
        {
            viewModel.PropertyChanged += (_, e) => ActualNotifications.Add(e.PropertyName);

            //viewModel.Orders = new ObservableCollection<IOrderViewModel>();
            ExpectedNotifications.Add("Orders");
            ExpectedNotifications.Add("TotalOrders");
            ExpectedNotifications.Add("TotalLineItems");
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.AddNewOrder();
            ExpectedNotifications.Add("TotalOrders");
            ExpectedNotifications.Add("TotalLineItems");
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders[0].LineItems = new ObservableCollection<ILineItemViewModel>();
            ExpectedNotifications.Add("TotalLineItems");
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders[0].AddNewLineItem();
            ExpectedNotifications.Add("TotalLineItems");
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders[0].LineItems[0].Quantity = 1;
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders[0].LineItems[0].Price = 100;
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders[0].LineItems.Add (li);
            ExpectedNotifications.Add("TotalLineItems");
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders.Add(order);
            ExpectedNotifications.Add("TotalOrders");
            ExpectedNotifications.Add("TotalLineItems");
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");
            //viewModel.Orders[1].LineItems[0].Quantity = 3;
            ExpectedNotifications.Add("TotalItemQuantity");
            ExpectedNotifications.Add("TotalCost");

            viewModel.Orders = new ObservableCollection <IOrderViewModel>();
            // Orders
            // TotalOrders
            // TotalLineItems
            // TotalItemQuantity
            // TotalCost
            viewModel.AddNewOrder();
            // TotalOrders
            // TotalLineItems
            // TotalItemQuantity
            // TotalCost
            viewModel.Orders[0].LineItems = new ObservableCollection <ILineItemViewModel>();
            // TotalLineItems
            // TotalItemQuantity
            // TotalCost
            viewModel.Orders[0].AddNewLineItem();
            // TotalLineItems
            // TotalItemQuantity
            // TotalCost
            viewModel.Orders[0].LineItems[0].Quantity = 1;
            // TotalItemQuantity
            // TotalCost
            viewModel.Orders[0].LineItems[0].Price = 100;
            // TotalCost
            var li = (ILineItemViewModel)Activator.CreateInstance(viewModel.Orders[0].LineItems[0].GetType());

            li.Quantity = 2;
            li.Price    = 50;
            viewModel.Orders[0].LineItems.Add(li);
            // TotalLineItems
            // TotalItemQuantity
            // TotalCost
            var order = (IOrderViewModel)Activator.CreateInstance(viewModel.Orders[0].GetType());

            order.AddNewLineItem();
            order.LineItems[0].Quantity = 2;
            order.LineItems[0].Price    = 33.33m;
            viewModel.Orders.Add(order);
            // TotalOrders
            // TotalLineItems
            // TotalItemQuantity
            // TotalCost
            viewModel.Orders[1].LineItems[0].Quantity = 3;
            // TotalItemQuantity
            // TotalCost
        }