public void PersonListViewModelPersonsTest() { var persons = new List <Person>() { new Person() { Firstname = "Harry" }, new Person() { Firstname = "Ron" } }; var personListView = new MockPersonListView(); var personListViewModel = new PersonListViewModel(personListView) { Persons = persons }; Assert.AreEqual(persons, personListViewModel.Persons); Assert.IsNull(personListViewModel.SelectedPerson); Assert.IsFalse(personListViewModel.SelectedPersons.Any()); // Select the first person AssertHelper.PropertyChangedEvent(personListViewModel, x => x.SelectedPerson, () => personListViewModel.SelectedPerson = persons.First()); Assert.AreEqual(persons.First(), personListViewModel.SelectedPerson); personListViewModel.AddSelectedPerson(persons.First()); AssertHelper.SequenceEqual(new Person[] { persons.First() }, personListViewModel.SelectedPersons); // Select both persons personListViewModel.AddSelectedPerson(persons.Last()); AssertHelper.SequenceEqual(persons, personListViewModel.SelectedPersons); }
public void CreateNewEmailTest() { Person harry = new Person() { Firstname = "Harry", Email = "*****@*****.**" }; Person ron = new Person() { Firstname = "Ron", Email = "Wrong Address" }; IEntityService entityService = Container.GetExportedValue <IEntityService>(); entityService.Persons.Add(harry); entityService.Persons.Add(ron); PersonController personController = Container.GetExportedValue <PersonController>(); personController.Initialize(); MockPersonListView personListView = Container.GetExportedValue <MockPersonListView>(); PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView); MockPersonView personView = Container.GetExportedValue <MockPersonView>(); PersonViewModel personViewModel = ViewHelper.GetViewModel <PersonViewModel>(personView); ICommand command = personListViewModel.CreateNewEmailCommand; Assert.AreEqual(command, personViewModel.CreateNewEmailCommand); MockEmailService emailService = Container.GetExportedValue <MockEmailService>(); command.Execute(harry); Assert.AreEqual(harry.Email, emailService.ToEmailAddress); // An error message should occur when the email address is invalid. MockMessageService messageService = Container.GetExportedValue <MockMessageService>(); messageService.Clear(); emailService.ToEmailAddress = null; command.Execute(ron); Assert.AreEqual(MessageType.Error, messageService.MessageType); Assert.AreEqual(Resources.CorrectEmailAddress, messageService.Message); Assert.IsNull(emailService.ToEmailAddress); // An error message should occur when no email address was entered. messageService.Clear(); emailService.ToEmailAddress = null; ron.Email = null; command.Execute(ron); Assert.AreEqual(MessageType.Error, messageService.MessageType); Assert.AreEqual(Resources.CorrectEmailAddress, messageService.Message); Assert.IsNull(emailService.ToEmailAddress); }
public void PersonListViewModelFilterTest() { var persons = new List <Person>() { new Person() { Firstname = "Harry", Lastname = "Potter" }, new Person() { Firstname = "Ron", Lastname = "Weasley" } }; var personListView = new MockPersonListView(); var personListViewModel = new PersonListViewModel(personListView) { Persons = persons }; Assert.IsTrue(personListViewModel.Filter(persons[0])); Assert.IsTrue(personListViewModel.Filter(persons[1])); AssertHelper.PropertyChangedEvent(personListViewModel, x => x.FilterText, () => personListViewModel.FilterText = "r"); Assert.AreEqual("r", personListViewModel.FilterText); Assert.IsTrue(personListViewModel.Filter(persons[0])); Assert.IsTrue(personListViewModel.Filter(persons[1])); personListViewModel.FilterText = "arr"; Assert.IsTrue(personListViewModel.Filter(persons[0])); Assert.IsFalse(personListViewModel.Filter(persons[1])); personListViewModel.FilterText = "eas"; Assert.IsFalse(personListViewModel.Filter(persons[0])); Assert.IsTrue(personListViewModel.Filter(persons[1])); personListViewModel.FilterText = "xyz"; Assert.IsFalse(personListViewModel.Filter(persons[0])); Assert.IsFalse(personListViewModel.Filter(persons[1])); personListViewModel.FilterText = "R"; persons.Add(new Person()); Assert.IsFalse(personListViewModel.Filter(persons[2])); persons[2].Firstname = "Hermione"; Assert.IsTrue(personListViewModel.Filter(persons[2])); }
public void RemoveAndSelection3Test() { Person harry = new Person() { Firstname = "Harry" }; Person ron = new Person() { Firstname = "Ron" }; Person ginny = new Person() { Firstname = "Ginny" }; IEntityService entityService = Container.GetExportedValue <IEntityService>(); entityService.Persons.Add(harry); entityService.Persons.Add(ron); entityService.Persons.Add(ginny); PersonController personController = Container.GetExportedValue <PersonController>(); personController.Initialize(); MockPersonListView personListView = Container.GetExportedValue <MockPersonListView>(); PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView); personListViewModel.PersonCollectionView = personListViewModel.Persons; // Remove all persons and check that nothing is selected anymore personListViewModel.SelectedPerson = harry; personListViewModel.AddSelectedPerson(harry); personListViewModel.AddSelectedPerson(ron); personListViewModel.AddSelectedPerson(ginny); personListViewModel.RemoveCommand.Execute(null); Assert.IsFalse(entityService.Persons.Any()); Assert.IsNull(personListViewModel.SelectedPerson); }
public void RemoveAndSelection2Test() { Person harry = new Person() { Firstname = "Harry" }; Person ron = new Person() { Firstname = "Ron" }; Person ginny = new Person() { Firstname = "Ginny" }; IEntityService entityService = Container.GetExportedValue <IEntityService>(); entityService.Persons.Add(harry); entityService.Persons.Add(ron); entityService.Persons.Add(ginny); PersonController personController = Container.GetExportedValue <PersonController>(); personController.Initialize(); MockPersonListView personListView = Container.GetExportedValue <MockPersonListView>(); PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView); // Set the sorting to: "Ginny", "Harry", "Ron" personListViewModel.PersonCollectionView = personListViewModel.Persons.OrderBy(p => p.Firstname); // Remove the last person and check that the last one is selected again. personListViewModel.SelectedPerson = ron; personListViewModel.AddSelectedPerson(personListViewModel.SelectedPerson); personListViewModel.RemoveCommand.Execute(null); Assert.IsTrue(entityService.Persons.SequenceEqual(new[] { harry, ginny })); Assert.AreEqual(harry, personListViewModel.SelectedPerson); }
public void PersonListViewModelCommandsTest() { MockPersonListView personListView = new MockPersonListView(); PersonListViewModel personListViewModel = new PersonListViewModel(personListView) { Persons = new List <Person>() }; DelegateCommand mockCommand = new DelegateCommand(() => {}); AssertHelper.PropertyChangedEvent(personListViewModel, x => x.AddNewCommand, () => personListViewModel.AddNewCommand = mockCommand); Assert.AreEqual(mockCommand, personListViewModel.AddNewCommand); mockCommand = new DelegateCommand(() => { }); AssertHelper.PropertyChangedEvent(personListViewModel, x => x.RemoveCommand, () => personListViewModel.RemoveCommand = mockCommand); Assert.AreEqual(mockCommand, personListViewModel.RemoveCommand); mockCommand = new DelegateCommand(() => { }); AssertHelper.PropertyChangedEvent(personListViewModel, x => x.CreateNewEmailCommand, () => personListViewModel.CreateNewEmailCommand = mockCommand); Assert.AreEqual(mockCommand, personListViewModel.CreateNewEmailCommand); }
public void AddAndRemoveTest() { Person harry = new Person() { Firstname = "Harry" }; Person ron = new Person() { Firstname = "Ron" }; IEntityService entityService = Container.GetExportedValue <IEntityService>(); entityService.Persons.Add(harry); entityService.Persons.Add(ron); PersonController personController = Container.GetExportedValue <PersonController>(); personController.Initialize(); MockPersonListView personListView = Container.GetExportedValue <MockPersonListView>(); PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView); personListViewModel.PersonCollectionView = personListViewModel.Persons; MockPersonView personView = Container.GetExportedValue <MockPersonView>(); PersonViewModel personViewModel = ViewHelper.GetViewModel <PersonViewModel>(personView); // Add a new Person Assert.AreEqual(2, entityService.Persons.Count); Assert.IsTrue(personListViewModel.AddNewCommand.CanExecute(null)); personListViewModel.AddNewCommand.Execute(null); Assert.AreEqual(3, entityService.Persons.Count); // Check that the new Person is selected and the first control gets the focus Assert.AreEqual(entityService.Persons.Last(), personViewModel.Person); Assert.IsTrue(personListView.FirstCellHasFocus); // Simulate an invalid UI input state => the user can't add more persons AssertHelper.CanExecuteChangedEvent(personListViewModel.AddNewCommand, () => personViewModel.IsValid = false); Assert.IsFalse(personListViewModel.AddNewCommand.CanExecute(null)); Assert.IsFalse(personListViewModel.RemoveCommand.CanExecute(null)); // Remove the last two Persons at once personViewModel.IsValid = true; personListView.FirstCellHasFocus = false; personListViewModel.AddSelectedPerson(ron); personListViewModel.AddSelectedPerson(entityService.Persons.Last()); Assert.IsTrue(personListViewModel.RemoveCommand.CanExecute(null)); personListViewModel.RemoveCommand.Execute(null); Assert.IsTrue(entityService.Persons.SequenceEqual(new Person[] { harry })); Assert.AreEqual(harry, personViewModel.Person); Assert.IsTrue(personListView.FirstCellHasFocus); // Deselect all Persons => the Remove command must be deactivated AssertHelper.CanExecuteChangedEvent(personListViewModel.RemoveCommand, () => { personListViewModel.SelectedPersons.ToList().ForEach(x => personListViewModel.RemoveSelectedPerson(x)); personListViewModel.SelectedPerson = null; }); Assert.IsFalse(personListViewModel.RemoveCommand.CanExecute(null)); }