public void CustomerSaveCommandPropertyCanExecute_InvalidCustomer_ReturnsTrue()
        {
            var customer = new Customer() { FirstName = "", LastName = "" };
            var sut = new CustomerViewModel(_customerRepository, customer);

            Assert.IsFalse(sut.SaveCommand.CanExecute(null));
        }
        public void Constructor_CustomerAndRepositoryInput_CustomerPropertiesEqualViewModelProperties()
        {
            var customer = new Customer { FirstName = "June", LastName = "Wong" };
            var sut = new CustomerViewModel(_customerRepository, customer);

            Assert.AreEqual(customer.FirstName, sut.FirstName);
            Assert.AreEqual(customer.LastName, sut.LastName);
        }
        public void ClassProperties_WhenSet_PropertyChangedEventFires()
        {
            var customer = new Customer();
            var sut = new CustomerViewModel(_customerRepository, customer);
            var receivedEvents = new List<string>();
            sut.PropertyChanged += ((sender, e) => receivedEvents.Add(e.PropertyName));

            sut.FirstName = "Sabrina";
            Assert.AreEqual(1, receivedEvents.Count);
            Assert.AreEqual("FirstName", receivedEvents[0]);
            sut.LastName = "Moore";
            Assert.AreEqual(2, receivedEvents.Count);
            Assert.AreEqual("LastName", receivedEvents[1]);
        }
        public void CustomerSaveCommandPropertyExecute_ValidCustomer_RepositoryValidatesCallOccured()
        {
            var customer = new Customer() { FirstName = "June", LastName = "Smith" };
            var sut = new CustomerViewModel(_customerRepository, customer);

            sut.SaveCommand.Execute(null);
            Assert.IsTrue(_customerRepository.SaveCommandCalled);
        }
 public void Constructor_CustomerInput_ImplementsINotifyPropertyChanged()
 {
     var customer = new Customer() { FirstName = "June", LastName = "Smith" };
     var sut = new CustomerViewModel(_customerRepository, customer);
     Assert.IsInstanceOfType(sut, typeof(INotifyPropertyChanged));
 }
 public void Constructor_CustomerAndRepositoryInput_InstantiatesSuccessfully()
 {
     var customer = new Customer { FirstName = "June", LastName = "Wong" };
     var sut = new CustomerViewModel(_customerRepository, customer);
     Assert.IsNotNull(sut);
 }
 public void VerifyPropertyNameMethod_NonExistentPropertyString_ThrowsException()
 {
     var customer = new Customer() { FirstName = "June", LastName = "Smith" };
     var sut = new CustomerViewModel(_customerRepository, customer);
     sut.VerifyPropertyName("NonExistentPropertyName");
 }
        public void DomainProperties_ReassignedValues_ViewModelPropertiesTrackChanges()
        {
            var customer = new Customer() { FirstName = "June", LastName = "Smith" };
            var sut = new CustomerViewModel(_customerRepository, customer);

            Assert.AreEqual(customer.FirstName, sut.FirstName);
            Assert.AreEqual(customer.LastName, sut.LastName);

            customer.FirstName = "New First Name";
            customer.LastName = "New Last Name";

            Assert.AreEqual(customer.FirstName, sut.FirstName);
            Assert.AreEqual(customer.LastName, sut.LastName);
        }
 public void SaveCustomer(Customer customer)
 {
     // call to not-yet-created ORM implementation to save Customer to data store / WCF
     _saveCommandCalled = true;
 }
 public CustomerViewModel(ICustomerRepository customerRepository, Customer customer)
 {
     _customerRepository = customerRepository;
     _customer = customer;
 }
 public void Constructor_CustomerRepositoryInput_ImplementsICommand()
 {
     var customer = new Customer() { FirstName = "June", LastName = "Smith" };
     var sut = new CustomerSaveCommand(_customerRepository, customer);
     Assert.IsInstanceOfType(sut, typeof(ICommand));
 }
 public CustomerSaveCommand(ICustomerRepository customerRepository, Customer customer)
 {
     _customerRepository = customerRepository;
     _customer = customer;
 }