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(); }
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 }