public void ModelChangesFlowToProperties() { // Test ViewModel returns current value from model Phone ph = new Phone { Number = "NUMBER", Extension = "EXTENSION" }; PhoneViewModel vm = new PhoneViewModel(ph); ph.Number = "NEW_NUMBER"; ph.Extension = "NEW_EXTENSION"; Assert.AreEqual("NEW_NUMBER", vm.Number, "Number property is not fetching the value from the model."); Assert.AreEqual("NEW_EXTENSION", vm.Extension, "Extension property is not fetching the value from the model."); }
public void PropertyGetAndSet() { // Test initial properties are surfaced in ViewModel Phone ph = new Phone { Number = "NUMBER", Extension = "EXTENSION" }; PhoneViewModel vm = new PhoneViewModel(ph); Assert.AreEqual(ph, vm.Model, "Bound object property did not return object from model."); Assert.AreEqual(ph.ValidUsageValues, vm.ValidUsageValues, "ValidUsageValues property did not return value from model."); Assert.AreEqual("NUMBER", vm.Number, "Number property did not return value from model."); Assert.AreEqual("EXTENSION", vm.Extension, "Extension property did not return value from model."); // Test changing properties updates Model and raises PropertyChanged string lastProperty; vm.PropertyChanged += (sender, e) => { lastProperty = e.PropertyName; }; lastProperty = null; vm.Number = "NEW_NUMBER"; Assert.AreEqual("Number", lastProperty, "Setting Number property did not raise correct PropertyChanged event."); Assert.AreEqual("NEW_NUMBER", ph.Number, "Setting Number property did not update model."); lastProperty = null; vm.Extension = "NEW_EXTENSION"; Assert.AreEqual("Extension", lastProperty, "Setting Extension property did not raise correct PropertyChanged event."); Assert.AreEqual("NEW_EXTENSION", ph.Extension, "Setting Extension property did not update model."); }